我的问题是我的 XML 文档在其中包含 XHTML 的片段,并且在通过 XSLT 传递它时,我希望它能够呈现这些片段而不破坏它们。
我尝试将片段包装在 CDATA 中,但它不起作用,因为小于和大于被转换为 < 和 >,而不是直接回显。
执行此操作所需的 XSL 是什么?
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
这在XSLT 规范中称为“身份转换” 。
我遇到了那个问题,副本当然是最容易使用的。标识有效,但这是 5 行代码,您需要调用这样的模板,而不仅仅是在 XSLT 文档中定义它(否则您可能无法在输出中得到预期的结果。)
我的主要问题实际上是复制标签的内容,而不是标签本身。它实际上很容易解决,但我花了一点时间才弄清楚(可能是因为 QtXmlPatterns 崩溃了很多!)
因此,以下内容复制了此处命名的标签及其所有子标签:
<xsl:copy-of select="this/tag/here"/>
但大多数情况下您不想这样做,因为 <here> 实际上是容器,换句话说,它不应该出现在输出中。在这种情况下,您可以简单地这样做:
<xsl:copy-of select="this/tag/here/*"/>
这将复制在名为 <here> 的标记中找到的所有子项。
假设您的 xhtml 在元素 YYY 中
xsl:副本