在XSLT中嵌入带有标记的静态CDATA

时间:2011-04-15 15:07:56

标签: xslt cdata

我需要从XSL输出嵌入在XSL中的静态CDATA构造,而不是从我正在转换的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 :(得分:0)

使用

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

为某些元素(spec)强制执行CDATA。

在任何情况下,您目前获得的内容相当于CDATA部分,而应该不会打扰您。 (即:如果由于光学原因而困扰你,那就克服它。如果由于技术原因困扰你,请修理它们。)