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 値を field[@name='CDATA'] として取得できましたが、ドキュメントの属性を cdata に追加する方法がわかりませんでした..

誰かがこれを行う方法を提案したり、正しい方向に向けたりできますか?

4

2 に答える 2

1

CDATA は、「ここにあるものは、マークアップのように見えてもプレーンテキストとして扱われる」ことを意味します。CDATA は、コンテンツ内のマークアップを無視するようパーサーに明示的に指示します。それが CDATA タグの唯一の目的です。したがって、定義上、CDATA セクション内にノードはありません。

于 2012-08-07T05:37:22.217 に答える
1

CDATA セクションは、テキスト ノードの一部です

そのため、テキストのみが含まれ、ノードは含まれません (テキストがノードのテキストのシリアル化と同じように見える場合でも)。

したがって、XSLT で記述された XML パーサーも持っていない限り、純粋な XSLT 1.0 および 2.0 では必要なことは実現できません

XSLT 3.0/XPath 3.0 (まだドラフト) には関数があるかもしれません:parse-xml()テキストを解析し、そこから XML ドキュメント/フラグメントを作成するために使用できます:

于 2012-08-07T02:09:47.450 に答える