入力ファイル:
<root>
<sector>
<nodeA id="a">
<section id="i">
<item1 id="1" method="create">
<somechild>a</somechild>
</item1>
<item1 id="1" method="delete" />
</section>
</nodeA>
<nodeA id="b">
<cell id="ii">
<item2 id="2" method="create">
<otherchild>a</otherchild>
</item2>
</cell>
<cell id="ii">
<item2 id="2" method="delete" />
</cell>
</nodeA>
<nodeB id="i">
<cell id="ii">
<item3 id="1" method="create">
<child>b</child>
</item3>
</cell>
<cell id="ii">
<item3 id="1" method="delete" />
<item3 id="1" method="create">
<otherchild>a</otherchild>
</item3>
</cell>
</nodeB>
</sector>
</root>
期待される出力:
<root>
<sector>
<nodeA id="a">
<section id="i">
</section>
</nodeA>
<nodeA id="b">
<cell id="ii">
</cell>
<cell id="ii">
</cell>
</nodeA>
<nodeB id="i">
<cell id="ii">
<item3 id="1" method="create"> <!-- this is not eliminated as it violates the rule by having create followed by delete and followed by create again -->
<child>b</child>
</item3>
</cell>
<cell id="ii">
<item3 id="1" method="delete" />
<item3 id="1" method="create">
<otherchild>a</otherchild>
</item3>
</cell>
</nodeB>
</sector>
</root>
このルールを使用して、xml のノードを削除する必要があります。
- の 1 つのノードに
method="create"
続いて の 1 つのノードmethod="delete"
が削除されます - シナリオは、要素名と ID が同じである限り、1 つの親で発生するか、2 つの親で広がる可能性があります。
<cell id="ii">
XSLT 1.0 または 2.0 を使用してこの変換を行うにはどうすればよいですか?
ありがとうございました。