2013-07-31 2 views
0

У меня есть следующий XML выводимый из моего XSLTКак я экранировать специальные символы в XSLT

Токового выходом

<stem> 
    <text> 
     <p style="white-space: pre-wrap"> 
      <span style="font-size:11;">How much would it cost to buy an Apple &amp; Pear if it's a Saturday?</span> 
     </p> 
    </text> 
</stem> 

Желаемых выходной

<stem> 
    <text> 
     <p style="white-space: pre-wrap"> 
      <span style="font-size:11;">How much would it cost to buy an Apple &amp; Pear if it&apos;s a Saturday?</span> 
     </p> 
    </text> 
</stem> 

Я попытался отключить-выход-побег = «нет», но это не повлияло:

Я использую

<xsl:value-of select="." disable-output-escaping="no"/> 

Благодаря

+0

Выбираясь из амперсандов должен происходить автоматически, не делая ничего особенного. Апострофы не могут быть экранированы, если они находятся в месте, где им не нужно бежать (например, в вашем примере). Каков результат, который вы сейчас получаете? – JLRishe

+0

Я только что посмотрел, и мой вход был неправильным для & его фактически &, и все в порядке - его апостроф, который я хочу преобразовать, - вы говорите, что это не будет сделано? – Rob

+0

Да, вот что я говорю. Экранирование '' '', '' 'и'> 'зависит от процессора XSLT. Какой процессор вы используете? Есть ли конкретная причина, по которой вам нужно, чтобы апострофы были экранированы? – JLRishe

ответ

2

Если вы используете XSLT 2 (как ваше использование Saxon предлагает) есть функция называется character maps для тонкой настройки, как ваш выход сериализации. Для сериализации всех апострофы &apos; использования:

<xsl:character-map name="escape-apos"> 
    <xsl:output-character character="&apos;" string="&amp;apos;"/> 
</xsl:character-map> 

<xsl:output method="xml" use-character-maps="escape-apos"/> 
+2

А как насчет XSLT1? –

Смежные вопросы