Как мне избежать символа в XSLT - PullRequest
5 голосов
/ 05 августа 2010

У меня есть XSLT, который преобразует XML в PLSQL

Мне нужно экранировать символ:> (больше чем)

например:

P_C710_INT_PROFILE_ID =>

Я пытался использовать > и поместить символ в xsl: текст без удачи

Есть идеи?

Спасибо

Ответы [ 3 ]

7 голосов
/ 05 августа 2010

Спасибо всем, но правильный ответ таков:

<xsl:text disable-output-escaping="yes">&gt;</xsl:text>
4 голосов
/ 05 августа 2010

Нет проблем. Эта таблица стилей (пусто):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
</xsl:stylesheet>

Введите:

<text>P_C710_INT_PROFILE_ID =&gt;</text>

Выход:

P_C710_INT_PROFILE_ID =>

EDIT : поскольку ваш вопрос неясен, я добавляю решение на тот случай, если вы хотите вывести символьную сущность с помощью объявления xsl: output / @ method = "text".

Эта таблица стилей:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>
    <xsl:template match="text()" name="text">
        <xsl:param name="text" select="."/>
        <xsl:if test="$text != ''">
            <xsl:variable name="first" select="substring($text,1,1)"/>
            <xsl:choose>
                <xsl:when test="$first = '&gt;'">&amp;gt;</xsl:when>
                <xsl:otherwise>
                    <xsl:value-of select="$first"/>
                </xsl:otherwise>
            </xsl:choose>
            <xsl:call-template name="text">
                <xsl:with-param name="text" select="substring($text,2,(string-length($text)-1) div 2 + 1)"/>
            </xsl:call-template>
            <xsl:call-template name="text">
                <xsl:with-param name="text" select="substring($text,(string-length($text)-1) div 2 + 3)"/>
            </xsl:call-template>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

Выход:

P_C710_INT_PROFILE_ID =&gt;

Это относится к Визуализации экранированного XML в браузере

1 голос
/ 24 апреля 2014

Я тоже боролся с этим, и даже после изменения метода вывода и добавления атрибута disable-output-escaping, но он все еще не работал.

Затем я посмотрел свой исходный код и понял, чтоиспользовала XmlTextWriter с результатами преобразования, а XmlTextWriter применял экранирование выходных данных.Как только я переключил его на использование StringWriter, вывод был правильным.

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