XML ドキュメント (InstallAnywhere .iap_xml インストーラー) を処理してから、それを別のツール (InstallAnywhere 自体) に渡していくつかの値を更新しています。しかし、私が使用している XSLT 変換は、ドキュメントから CDATA セクション (InstallAnywhere にとって重要と思われるセクション) を取り除いているようです。
Ant 1.7.0、JDK 1.6.0_16、および ID に基づくスタイルシートを使用しています。
<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 FAQ を読むと、XSLT 仕様に関する限り、起こっていることが合法であることがわかります。これが発生するのを防ぎ、XSLT プロセッサに CDATA セクションを発行するよう説得する方法はありますか?