在应用xslt转换时保留实体

时间:2013-09-30 19:45:01

标签: xslt xslt-2.0

我有一个类似的xml输入,

<xml>
<xrefline>&laquo;personne&raquo;&mdash;<cite.query w-pinpoint-page="xyz_abc_1_">abc(1)</cite.query></xrefline>
<xrefline>&laquo;abc&raquo;&mdash;<cite.query w-pinpoint-page="xyz_abc_1_">abc(1)</cite.query></xrefline>
</xml>

当我使用xslt在xrefline的内容周围添加cdata时,所有实体都会更改为实际字符,有没有办法让输出保持相同?

所以我得到的输出是

<xml>
 <xrefline position="1"><![CDATA[«personne»—
         <cite.query w-pinpoint-page="xyz_abc_1_">123(1)</cite.query>]]>
      </xrefline>
 <xrefline position="2"><![CDATA[«abc»—
         <cite.query w-pinpoint-page="xyz_abc_1_">123(1)</cite.query>]]>
      </xrefline>
</xml>

我正在寻找的欲望输出

<xml>
 <xrefline position="1"><![CDATA[&laquo;personne&raquo;&mdash;
         <cite.query w-pinpoint-page="xyz_abc_1_">123(1)</cite.query>]]>
      </xrefline>
 <xrefline position="2"><![CDATA[&laquo;abc&raquo;&mdash;
         <cite.query w-pinpoint-page="xyz_abc_1_">123(1)</cite.query>]]>
      </xrefline>
</xml>

这是样式表

<xsl:stylesheet version="2.0" >
  <xsl:output indent="yes" method="xml" encoding="UTF-8"></xsl:output>
<xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
<xsl:template match="xrefline">
<xrefline>
        <xsl:attribute name="position">
          <xsl:value-of select="count(../preceding-sibling::xrefline)+1"/>
        </xsl:attribute>
        <xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
            <xsl:copy-of select="node()" ></xsl:copy-of>
        <xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
   </xrefline>
</xsl:template>

任何提示......

0 个答案:

没有答案