0

我正在尝试将属性添加到属于 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..

谁能建议我如何做到这一点或指出我正确的方向?

4

2 回答 2

1

CDATA 部分只是文本节点的一部分

因此它只包含文本而没有节点(即使文本看起来与节点的文本序列化相同)。

因此,您想要的在纯 XSLT 1.0 和 2.0 中是不可能的,除非您还有一个用 XSLT 编写的 XML 解析器

在 XSLT 3.0/XPath 3.0(仍然是草稿)中可能有一个函数:parse-xml()可用于解析文本并从中创建 XML 文档/片段:

于 2012-08-07T02:09:47.450 回答
1

CDATA 的意思是“即使看起来像标记,这里的内容也将被视为纯文本”。CDATA 是对解析器的显式指令,用于忽略内容中的标记。这是 CDATA 标记的唯一用途。因此,根据定义,CDATA 部分内没有节点。

于 2012-08-07T05:37:22.217 回答