Почему XSLT не может проанализировать этот XML? - PullRequest
0 голосов
/ 09 февраля 2011

Взяв XSLT и XML с этой страницы в качестве примера:

http://www.w3schools.com/xsl/xsl_transformation.asp

У меня есть XML-файл, который содержит (приведенный выше пример изменен):

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
<catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
         xmlns="http://tempuri.org/">
    <cd>

В моем случае вывод не содержит ничего, когда XSLT / XML обрабатывается браузером. В тот момент, когда я удаляю атрибуты из элемента, он работает. Проблема в том, что у меня нет возможности предварительно обработать эти атрибуты из файла.

Может кто-нибудь объяснить, как заставить XSLT работать с XML, как есть, пожалуйста? В конце концов, эти атрибуты кажутся довольно стандартными.

Большое спасибо,

Мт.

Ответы [ 3 ]

7 голосов
/ 09 февраля 2011

Добавьте это пространство имен по умолчанию и к таблице стилей и используйте его.

1 голос
/ 09 февраля 2011

Вы изменяете пространство имен по умолчанию <cd> с вашим объявлением в основном на

<{http://tmpuri.org}:cd> 

, который не будет сопоставлен с неизмененной таблицей стилей.

0 голосов
/ 10 февраля 2011

То, что Игнасио говорит, что ваш документ определен в пространстве имен. Как следствие, внутри вашей таблицы стилей вы можете найти соответствие только по полному имени.

Если таблица стилей XSLT соответствует только локальному имени:

<xsl:template match="cd">
...
</xsl:template>

тогда оно никогда не будет совпадать. Однако, если вы поместите это в корневой элемент таблицы стилей:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:catalog="http://tempuri.org/">
...
</xsl:stylesheet>

... и используйте соответствующее имя, например:

<xsl:template match="catalog:cd">
...
</xsl:template>

... тогда это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...