次のような入力 XML ドキュメントがあるとします。
<?xml version="1.0" encoding="utf-8"?>
<title> This contains an 'embedded' HTML document </title>
<document>
<html>
<head><title>HTML DOC</title></head>
<body>
Hello World
</body>
</html>
</document>
</root>
その「内部」HTMLドキュメントを抽出する方法; それを CDATA としてレンダリングし、出力ドキュメントに含めますか?
したがって、出力ドキュメントは HTML ドキュメントになります。これには、要素をテキストとして表示するテキストボックスが含まれています(したがって、内部ドキュメントの「ソースビュー」が表示されます)。
私はこれを試しました:
<xsl:template match="document">
<xsl:value-of select="*"/>
</xsl:template>
ただし、これはテキスト ノードのみをレンダリングします。
私はこれを試しました:
<xsl:template match="document">
<![CDATA[
<xsl:value-of select="*"/>
]]>
</xsl:template>
しかし、これは実際の XSLT をエスケープし、次のようになります。
<xsl:value-of select="*"/>
私はこれを試しました:
<xsl:output method="xml" indent="yes" cdata-section-elements="document"/>
[...]
<xsl:template match="document">
<document>
<xsl:value-of select="*"/>
</document>
</xsl:template>
これにより CDATA セクションが挿入されますが、出力にはテキストのみが含まれます (削除された要素):
<?xml version="1.0" encoding="UTF-8"?>
<html>
<head>
<title>My doc</title>
</head>
<body>
<h1>Title: This contains an 'embedded' HTML document </h1>
<document><![CDATA[
HTML DOC
Hello World
]]></document>
</body>
</html>