如何使用 XSLT 制作 xml 节点的子节点的精确副本?
Posted
技术标签:
【中文标题】如何使用 XSLT 制作 xml 节点的子节点的精确副本?【英文标题】:How can I make an exact copy of a xml node's children with XSLT? 【发布时间】:2010-09-08 13:57:57 【问题描述】:我的问题是我的 XML 文档中包含 Xhtml 的 sn-ps,并且在通过 XSLT 传递它时,我希望它能够呈现这些 sn-ps 而不会损坏它们。
我尝试将 sn-p 包装在 CDATA 中,但它不起作用,因为小于和大于被转换为 ,而不是直接回显。
执行此操作需要什么 XSL?
【问题讨论】:
【参考方案1】:<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
这在XSLT specification 中称为“身份转换”。
【讨论】:
【参考方案2】:我遇到了这个问题,副本当然是最容易使用的。标识有效,但这是 5 行代码,您需要调用这样的模板,而不仅仅是在 XSLT 文档中定义它(否则您可能无法在输出中得到预期的结果。)
我的主要问题实际上是复制标签的内容,而不是标签本身。它实际上很容易解决,但我花了一点时间才弄清楚(可能是因为 QtXmlPatterns 崩溃了很多!)
因此,以下复制了此处命名的标签及其所有子标签:
<xsl:copy-of select="this/tag/here"/>
但通常你不想这样做,因为
<xsl:copy-of select="this/tag/here/*"/>
这会复制在名为
【讨论】:
【参考方案3】:假设您的 xhtml 位于 YYY 元素中
http://www.dpawson.co.uk/xsl/sect2/N1930.html 解释选项
【讨论】:
【参考方案4】:xsl:副本
【讨论】:
以上是关于如何使用 XSLT 制作 xml 节点的子节点的精确副本?的主要内容,如果未能解决你的问题,请参考以下文章