我正在尝试将属性添加到属于CDATA的节点。我的XML是
<documents>
<document id="1234">
<field name="CDATA" value="bill"><![CDATA[<bill name="xxx" age="12" />]]> </field>
</document>
</documents>
结果xml应为
<docs>
<doc>
<bill name="xxx" age="12" id="1234" />
</doc>
</docs>
文档节点中的id属性应作为属性添加到CDATA内的节点。
我能够将CDATA值作为字段[@ name ='CDATA']获取,但我不知道如何将文档的属性添加到cdata中。
任何人都可以建议我如何做到这一点或指出我正确的方向?
答案 0 :(得分:0)
CDATA部分只是文本节点的一部分。
因此它只包含文本而没有节点(即使文本看起来与节点的文本序列化相同)。
因此,除非您还有一个用XSLT编写的XML解析器,否则在纯XSLT 1.0和2.0中无法实现所需。
在XSLT 3.0 / XPath 3.0(仍然是草稿)中,可能有一个函数: parse-xml()
,可用于解析文本并从中创建XML文档/片段:< / p>
答案 1 :(得分:0)
CDATA意味着“即使它看起来像标记,这里的东西也会被视为纯文本”。 CDATA是解析器忽略内容中标记的明确指令。这是CDATA标签的唯一目的。因此,根据定义,CDATA部分中没有节点。