次のようなコンテンツを含むドキュメントを別のドキュメントに変換しようとしています。CDATA は最初のドキュメントとまったく同じままですが、CDATA を XSLT で保持する方法がわかりません。
初期 XML:
<node>
<subNode>
<![CDATA[ HI THERE ]]>
</subNode>
<subNode>
<![CDATA[ SOME TEXT ]]>
</subNode>
</node>
最終的な XML:
<newDoc>
<data>
<text>
<![CDATA[ HI THERE ]]>
</text>
<text>
<![CDATA[ SOME TEXT ]]>
</text>
</data>
</newDoc>
私はこのようなことを試しましたが、運が悪く、すべてがごちゃごちゃになります:
<xsl:element name="subNode">
<xsl:value-of select="." disable-output-escaping="yes"/>
</xsl:element>
CDATA を保存する方法はありますか?
ありがとう!ランス
ruby/のこぎりを使う
更新:これは機能するものです。
<text disable-output-escaping="yes"><![CDATA[</text>
<value-of select="normalize-space(text())" disable-output-escaping="yes"/>
<text disable-output-escaping="yes">]]></text>
これにより、すべての text() ノードが CDATA でラップされます。これは、必要なもので機能し、テキスト内の html タグを保持します。