我正在处理一个 XML 文档(一个 InstallAnywhere .iap_xml 安装程序),然后将其交给另一个工具(InstallAnywhere 本身)以更新一些值。但是,我正在使用的 XSLT 转换似乎正在从文档中剥离 CDATA 部分(这似乎对 InstallAnywhere 很重要)。
我正在使用 Ant 1.7.0、JDK 1.6.0_16 和基于身份的样式表:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="UTF-8" cdata-section-elements="string" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
基本上,“字符串”节点看起来像:
<string><![CDATA[]]></string>
正在加工成:
<string/>
通过阅读 XSLT 常见问题解答,我可以看到,就 XSLT 规范而言,正在发生的事情是合法的。有什么办法可以防止这种情况发生并说服 XSLT 处理器发出 CDATA 部分?