如何使用XSLT制作xml节点的子节点的精确副本?

时间:2008-09-11 15:12:03

标签: xml xslt xhtml

我的问题是我的XML文档中包含XHTML的片段,并且在通过XSLT传递它时,我希望它能够渲染这些片段而不会破坏它们。

我已经尝试将代码段包装在CDATA中,但由于小于和大于转换为<和>而不是直接回应。

这样做需要什么样的XSL?

4 个答案:

答案 0 :(得分:7)

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

这被称为XSLT specification中的“身份转换”。

答案 1 :(得分:2)

我遇到了这个问题,副本肯定是最容易使用的。身份是有效的,但这是5行代码,你需要调用这样一个模板,而不仅仅是在你的XSLT文档中定义它(否则你可能无法得到你在输出中的预期。)

我的主要问题实际上是复制标签的内容,而不是标签本身。它实际上很容易解决,但我花了一点时间来解决它(可能是因为QtXmlPatterns崩溃了很多!)

因此,以下内容复制了此处命名的标签及其所有子项:

<xsl:copy-of select="this/tag/here"/>

但大多数时候你不想这样做,因为&lt; here&gt;实际上是容器,换句话说,它不应该出现在输出中。在这种情况下,您可以简单地执行此操作:

<xsl:copy-of select="this/tag/here/*"/>

这会复制在名为&lt; here&gt;。

的标记中找到的所有子项

答案 2 :(得分:1)

假设您的xhtml位于元素YYY中

http://www.dpawson.co.uk/xsl/sect2/N1930.html解释了选项

答案 3 :(得分:0)

的xsl:复制的