使用XSLT我们如何渲染CDATA标签?

时间:2013-09-16 09:33:22

标签: xslt xslt-1.0 xslt-2.0

  

使用XSLT我们如何渲染CDATA标签?

     

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

输入

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

XSLT输出

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

1 个答案:

答案 0 :(得分:4)

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

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

因此,如果您使用像Saxon 9和Java这样的XSLT 2.0处理器,您可以使用该方法。