我正在尝试向作为 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。
谁能建议我如何做到这一点或指出我正确的方向?
CDATA 节只是文本节点的一部分。
因此,它只包含文本,不包含节点(即使文本看起来与节点的文本序列化相同)。
因此,在纯 XSLT 1.0 和 2.0 中不可能实现所需的内容,除非您还具有用 XSLT 编写的 XML 解析器。
在 XSLT 3.0/XPath 3.0(静止草稿)中,可能有一个函数: parse-xml()
可用于解析文本并从中创建 XML 文档/片段:
CDATA的意思是"这里的内容应被视为纯文本,即使它看起来像标记"。CDATA 是解析器忽略内容中的标记的显式指令。这是 CDATA 标记的唯一用途。因此,根据定义,CDATA 部分内没有节点。