0

使用 XSLT 我们如何呈现 CDATA 标记?

在 xslt 中我不想使用文本创建 CDATA 标记或使用 cdata-section-elements 在 xml 输出标记中声明,它应该从输入动态读取它,如果元素值在 CDATA 附近,那么 xslt 应该呈现相同,如下所示

输入

<A><![CDATA[Hello World]]></A>

XSLT 输出

<A><![CDATA[Hello World]]></A>
4

1 回答 1

4

XSLT/XPath/XQuery 操作的数据模型不知道任何 CDATA 部分,因此您不能简单地保留它们,因为您操作的树在两种情况下都只包含一个文本节点(即 for<foo>a &amp; b</foo><foo><![CDATA[a & b]]></foo>树是一个foo包含单个带有字符串值的文本子节点a & b)。

因此,纯 XSLT 无法实现您想要的,除非您预处理输入以将 CDATA 部分转换为 XSLT 数据模型允许您检测和区分的某些结构,如元素。Andrew Welch 有http://andrewjwelch.com/lexev/在 Java 环境中执行此操作。

因此,如果您使用带有 Java 的 Saxon 9 之类的 XSLT 2.0 处理器,您可以使用这种方法。

于 2013-09-16T10:04:39.667 回答