向节点添加属性,该节点是 XSLT 中的 CDATA



我正在尝试向作为 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 部分内没有节点。

相关内容

  • 没有找到相关文章