3

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

我尝试将片段包装在 CDATA 中,但它不起作用,因为小于和大于被转换为 < 和 >,而不是直接回显。

执行此操作所需的 XSL 是什么?

4

4 回答 4

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

这在XSLT 规范中称为“身份转换” 。

于 2008-09-12T07:57:31.840 回答
2

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

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

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

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

但大多数情况下您不想这样做,因为 <here> 实际上是容器,换句话说,它不应该出现在输出中。在这种情况下,您可以简单地这样做:

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

这将复制在名为 <here> 的标记中找到的所有子项。

于 2012-11-08T04:45:55.883 回答
1

假设您的 xhtml 在元素 YYY 中

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

于 2008-09-12T07:52:23.303 回答
0

xsl:副本

于 2008-09-11T15:16:39.003 回答