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