XSLT: использование copy-of для вывода xml - PullRequest
0 голосов
/ 15 июля 2010

Я использую элемент copy-of в xsl для печати некоторого xml-кода клиенту, но xslt выводит неэкранированные экранированные xml-символы на выход, например

, если преобразуемый xml равен


вывод преобразует «&» в атрибуте attr в просто «&», что вызывает ошибку синтаксического анализа XML на клиенте.

как я могу сохранить экранированныйxml-символы при выводе xml

Заранее спасибо.

С наилучшими пожеланиями,

Кешав

Ответы [ 2 ]

2 голосов
/ 15 июля 2010

Я не могу воспроизвести проблему. Предоставлена ​​полная таблица стилей и ваш процессор. Это

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes"/>
    <xsl:template match="/*">
            <xsl:copy-of select="."/>
    </xsl:template>
</xsl:stylesheet>

Return:

<one attr="http://one.com/page?param1=value1&amp;param2=value2">
<child>text</child>
</one>

А это:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes"/>
    <xsl:template match="/*">
            <xsl:copy-of select="."/>
    </xsl:template>
</xsl:stylesheet>

Return:

<one attr="http://one.com/page?param1=value1&amp;param2=value2"> <child>text</child> </one>
1 голос
/ 16 июля 2010

В случае использования <xsl:output method="xml"/> процессор XSLT должен создать правильно сформированный XML-документ (или фрагмент).

Отсутствие такого означает, что в используемом процессоре XSLT имеется ошибканеобходимо сообщить об этом разработчикам и попросить исправить или обойти это решение.

...