1

我正在使用 xslt 2.0 进行转换。我想改变波纹管。

<ResultInfo><![CDATA[Concurrent processing error! <> & Test.]]></ResultInfo>

我为此使用波纹管转换逻辑,

<xsl:template match="ResultInfo">
     <xsl:element name="ltc:{local-name()}">
          <xsl:value-of select="normalize-space(.)"/>
     </xsl:element>
</xsl:template>

当我运行这个逻辑时,我得到了下面的输出,

<ltc:ResultInfo>Concurrent processing error! <> & Test.</ltc:ResultInfo>

但我想用“CDATA”原样转移。请建议我如何保留“CDATA”。


您不能“保留” CDATA,无论何时在输入中使用 CDATA 进行输出,但您可以请求序列化程序在输出某些元素的文本节点子节点时使用 CDATA 部分:

<xsl:output method="xml" cdata-section-elements="ltc:ResultInfo" />

这将序列化所有 ltc:ResultInfo使用 CDATA 作为其文本内容的元素,无论输入是使用 CDATA 还是纯文本。

4

1 回答 1

2

您不能“保留” CDATA,无论何时在输入中使用 CDATA 进行输出,但您可以请求序列化程序在输出某些元素的文本节点子节点时使用 CDATA 部分:

<xsl:output method="xml" cdata-section-elements="ltc:ResultInfo" />

这将序列化所有 ltc:ResultInfo使用 CDATA 作为其文本内容的元素,无论输入是使用 CDATA 还是纯文本。

于 2013-07-08T11:53:04.253 回答