これは入力ファイルです:
<root>
<node id="N1">
<fruit id="1" action="aaa">
<orange id="x" action="create">
<attribute>
<color>Orange</color>
<year>2012</year>
</attribute>
</orange>
<orange id="x" action="change">
<attribute>
<color>Red</color>
</attribute>
</orange>
<orange id="x" action="change">
<attribute>
<color>Blue</color>
<condition>good</condition>
</attribute>
</orange>
</fruit>
</node>
<node id="N2">
<car id="1">
<bmw id="i" action="change">
<attribute>
<color>Blue</color>
</attribute>
</bmw>
<bmw id="i" action="change">
<attribute>
<color>Yellow</color>
</attribute>
</bmw>
<bmw id="i" action="change">
<attribute>
<color>Pink</color>
</attribute>
</bmw>
<bmw id="j" action="delete">
<attribute>
<color>Blue</color>
</attribute>
</bmw>
<bmw id="j" action="delete">
<attribute>
<color>Yellow</color>
</attribute>
</bmw>
</car>
</node>
</root>
これは期待される出力です:
<root>
<node id="N1">
<fruit id="1" action="aaa">
<orange id="x" action="create">
<attribute>
<color>Blue</color>
<year>2012</year>
<condition>good</condition>
</attribute>
</orange>
</fruit>
</node>
<node id="N2">
<car id="1">
<bmw id="i" action="change">
<attribute>
<color>Pink</color>
</attribute>
</bmw>
<bmw id="j" action="delete">
<attribute>
<color>Yellow</color>
</attribute>
</bmw>
</car>
</node>
</root>
ルール:
「create」メソッドの後に 1 つ以上の「change」メソッドが続くノードがある場合、それらをマージし、最後の「change」のすべての子を「create」メソッドのノードに使用します。(注: 良いものを追加)
1 つ以上の「変更」メソッドがある場合は、それらをマージして、最後の「変更」メソッドの子のみを使用します。
1 つ以上の「delete」メソッドがある場合は、それらをマージして、最後の「delete」メソッドの子のみを使用します。
マージするノードの ID は同じでなければならないことに注意してください。
この問題の XSLT ソリューションについて教えてください。本当にありがとう。
敬具、ジョン