【发布时间】:2023-08-20 22:07:01
【问题描述】:
我正在尝试将属性添加到属于 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..
谁能建议我如何做到这一点或指出正确的方向?
【问题讨论】:
-
请编辑您的帖子并显示您正在使用的 XSLT。
-
CDATA 部分只是文本节点的一部分。因此它只包含文本而没有节点(即使文本看起来与节点的文本序列化相同)。因此,您想要的在纯 XSLT 1.0 和 2.0 中是不可能的,除非您也有一个用 XSLT 编写的 XML 解析器。在 XSLT 3.0/XPath 3.0(仍然是草稿)中可能有一个函数:
parse-xml(),可用于解析文本并从中创建 XML 文档/片段:w3.org/TR/xpath-functions-30/#func-parse-xml