XSLT-тождественное преобразование - PullRequest
2 голосов
/ 02 ноября 2011

Я тестировал XSLT-преобразование личности и поэтому случайно выбрал следующий пример на www.w3schools.com, потому что он позволяет мне попробовать онлайн:

http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog_apply

Я изменилXSLT в правой панели для преобразования личности:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>  
    </xsl:template>

</xsl:stylesheet>

И попробовал.Я обнаружил, что узлы /catalog/cd/title не копируются в вывод (но все остальное делает).Если я изменю имя с /catalog/cd/title на /catalog/cd/title1 (или любое другое имя), оно скопирует узел.

Поэтому мне было интересно, есть ли просто ошибка в реализации XSLT на www.w3schools.com или есть ли какое-то особое значение для заголовка узла XML, которое не позволяет копировать его?Я планирую использовать XSLT-преобразование, как описано выше, но я хочу убедиться, что я знаю о любых ошибках ...

Ответы [ 4 ]

4 голосов
/ 02 ноября 2011

Этот инструмент w3schools полезен для тестирования преобразования XML в HTML, поскольку он пытается отобразить результат преобразования как HTML в браузере.С вашим преобразованием идентичности вы создаете не HTML, а XML.Только элемент «title» в результате преобразования выглядит для браузера как известный, но неправильно размещенный элемент HTML, поэтому он не отображает его на странице.Все остальные элементы неизвестны, поэтому их текстовое содержимое отображается.

По сути, вы получаете автономный XSLT-процессор или редактор XML, этот инструмент w3schools бесполезен для отладки и тестирования чего-либо, кроме преобразований XML в HTML.

1 голос
/ 03 ноября 2011

Я не могу воспроизвести ваш результат, но он может зависеть от браузера.То, что вы упустили из виду, это то, что страница отображает результат преобразования, как если бы это был HTML, а в вашем случае это не так.То, что браузеры делают с XML, использующим теги, отличные от HTML, вероятно, будет непредсказуемым.

1 голос
/ 02 ноября 2011

Работает нормально с использованием xsltproc в Debian.

Обновление: тоже работает с использованием saxon-xlst…

Проблема должна быть с реализацией W3C School…

Обновление после ответа Мартина: э-э ... Нет проблем, но только конвертация xml в html ... Пришло время остановиться?;)

0 голосов
/ 12 апреля 2016

Я знаю, что это старый пост, но я не увидел правильного ответа здесь.

<xsl:copy>

Узлы пространства имен текущего узла также копируются автоматически, , но дочерние узлы и атрибуты текущего узла не копируются автоматически!

<xsl:copy-of>

Узлы пространства имен, дочерние узлы и атрибуты текущего узла также автоматически копируются!

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