XSL-декодирование html escape-последовательности - PullRequest
1 голос
/ 24 июля 2011

Я использую XSL-файл для переформатирования XML-файла (выходной XML-файл в другом формате), моя проблема в том, что некоторые узлы содержат кодировщики Unicode в escape-последовательности html (ї), и когда я использую XSL, эти Unicode декодируются и преобразуются в их фактические значения, и мне нужно, чтобы они оставались в виде escape-последовательности html (ї)

Я попробовал это, но это не сработало, и оно было декодировано. Мне нужна escape-последовательность html, чтобы остаться такой же, как для дальнейшей обработки

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

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

Ответы [ 2 ]

2 голосов
/ 24 июля 2011

Не используйте отключение-выход-экранирование, если вы не понимаете, что это значит - это не волшебная волшебная пыль. Ваша жалоба заключается в том, что символы не могут быть экранированы там, где вы хотите, чтобы их экранировали, поэтому отключение экранирования вряд ли поможет.

Процессор XSLT не знает, какие символы были экранированы на входе, а какие нет - синтаксический анализатор XML не предоставляет эту информацию. Поэтому, если вы действительно хотите, чтобы выходные данные точно отражали входные данные, единственный способ добиться этого - это предварительная обработка XML до того, как синтаксический анализатор XML его увидит. Один из способов сделать это - препроцессор lexev от Andrew Welch.

Чаще всего люди хотят, чтобы не-ASCII-символы экранировались независимо от того, экранированы ли они на входе или нет, и этого можно добиться, задав для выходной кодировки us-ascii - при условии, что в именах элементов нет символов не-ASCII или комментарии, которые могут привести к ошибке.

0 голосов
/ 24 июля 2011

disable-output-escaping должно быть по умолчанию "нет" и применяется только к элементам xsl:value-of и xsl:text.Не все процессоры XSLT требуются для его поддержки.

XSLT 2.0 устарел, экранируя выход, и представил концепцию «символьных карт» .Однако не все процессоры XSLT могут использовать XSLT 2.0, и их использование было несколько ограничено.В зависимости от того, что вы используете, ваш процессор XSLT может не поддерживать XSLT 2.0.Я бы посмотрел на это.

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