私の問題は、私の XML ドキュメントに XHTML のスニペットが含まれており、XSLT を介して渡すときに、それらのスニペットを壊さずにレンダリングしたいということです。
スニペットを CDATA でラップしようとしましたが、直接エコーされるのではなく、より小さいおよびより大きいが < および > に変換されるため、機能しません。
これを行うために必要な XSL は何ですか?
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
これは、XSLT 仕様では「同一性変換」と呼ばれます。
私はその問題に遭遇しましたが、確かに copy-of が最も使いやすいです。ID は機能しますが、それは 5 行のコードであり、XSLT ドキュメントでそのまま定義するだけでなく、そのようなテンプレートを呼び出す必要があります (そうしないと、出力で期待した結果が得られない可能性があります)。
私の主な問題は、タグ自体ではなく、タグのコンテンツをコピーすることでした。実際には解決するのは非常に簡単ですが、それを理解するのに少し時間がかかりました (おそらく QtXmlPatterns がかなりクラッシュするためです!)
したがって、以下は、ここで指定されたタグとそのすべての子をコピーします。
<xsl:copy-of select="this/tag/here"/>
しかし、ほとんどの場合、<here> は実際にはコンテナーであり、出力に表示されるべきではないため、これを行いたくありません。その場合、これを簡単に行うことができます:
<xsl:copy-of select="this/tag/here/*"/>
これにより、<here> という名前のタグで見つかったすべての子がコピーされます。
あなたのxhtmlが要素YYYにあると仮定します
xsl:のコピー