使用 XSLT 我们如何呈现 CDATA 标记?
在 xslt 中,我不想使用文本或用 xml 声明创建 CDATA 标签 使用 cdata-section-elements 的输出标记, 它应该从输入中动态读取它,如果元素值在 CDATA 附近 然后 XSLT 应该呈现相同的内容,如下所示
输入:
<A><![CDATA[Hello World]]></A>
XSLT 输出 :
<A><![CDATA[Hello World]]></A>
的数据模型 XSLT/XPath/XQuery 不知道任何 CDATA 部分,因此您不能简单地保留它们,因为您操作的树在这两种情况下都只包含一个文本节点(即,对于<foo>a & b</foo>
和<foo><![CDATA[a & b]]></foo>
树是一个foo
元素,其中包含字符串值为 a & b
的单个文本子节点)。
因此,在纯 XSLT 中无法实现您想要的效果,除非您预处理输入以将 CDATA 部分转换为某些结构,例如 XSLT 数据模型允许您检测和区分的元素。Andrew Welch http://andrewjwelch.com/lexev/在Java环境中做到这一点。
因此,如果您使用XSLT 2.0处理器(如Saxon 9和Java),则可以使用这种方法。