Встраивание статического CDATA с его тегом в XSLT - PullRequest
0 голосов
/ 15 апреля 2011

Мне нужно вывести из XSL статическую конструкцию CDATA, встроенную в XSL, а не из XML, который я преобразую. Например ...

<?xml version="1.0"?> 
<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="2.0">
  <xsl:output method="xml" indent="yes"/>
<!-- ================================================== -->
  <xsl:template match="/">
    <Document>
      <text><![CDATA[
<b>static</b>
<br/><br/>
text
<br/><br/>
      ]]>
      </text>
      <xsl:apply-templates select="//tag"/>
    </Document>
  </xsl:template>
<!-- ================================================== -->
  <xsl:template match="tag">
    So on and so forth...
  </xsl:template>
<!-- ================================================== -->
</xsl:stylesheet>

Я хочу вывести это ...

<?xml version="1.0"?> 
<Document>
  <text><![CDATA[
<b>static</b>
<br/><br/>
text
<br/><br/>
  ]]>
  </text>
  So on and so forth...
</Document>

Но я получаю ...

<?xml version="1.0"?> 
<Document>
  <text>
&lt;b&gt;static&lt;/b&gt;
&lt;br/&gt;&lt;br/&gt;
text
&lt;br/&gt;&lt;br/&gt;
  </text>
  So on and so forth...
</Document>

Я пробовал несколько комбинаций экранирования текста и сущностей, но, похоже, ни одна из них не работает.

1 Ответ

0 голосов
/ 15 апреля 2011

Используйте

<xsl:output cdata-section-elements="text" />

для принудительного применения CDATA для определенных элементов ( spec ).

В любом случае то, что вы в настоящее время получаете, эквивалентно разделу CDATA иэто должно не беспокоить вас.(то есть: если это беспокоит вас по оптическим причинам, то преодолейте это. Если это беспокоит вас по техническим причинам, исправьте их.)

...