XSLT を使用して XML メッセージの特定の述語を指定できるソフトウェア システムが存在すると仮定します。具体的には、入力ドキュメントを次の形式の出力ドキュメントに変換します: <predicate>true</predicate>(または<predicate>false</predicate>)。
いくつかの単純なケース ( message containsXPathなど) では、これはかなり簡単ですが、次のような XSLT を記述する必要があります。
<change>
<!-- state before change -->
<item>
<name>
<first>...</first>
<last>...</last>
</name>
<something>
...
</something>
</item>
<!-- state after change -->
<item>
<name>
<first>...</first>
<last>...</last>
</name>
<something>
...
</something>
</item>
</change>
<predicate>true</predicate>そして、次の場合、突然変異の定義に戻りたいと思います:
- 前または後の状態 (またはその両方) には、実際には
somethingデータのサブツリーが含まれているため (この部分はオプションであるため)、基本的change/item[1]/something | change/item[2]/somethingに 、および - データが削除される前と後の状態は、
something互いに同一ではありません。
2 番目の部分は、次の疑似コードのようなものである可能性があります: $beforevariable はchange/item[1]/something既存のsomethingサブツリーが削除されたもので、$aftervariable はchange/item[2]/something既存のsomethingサブツリーが削除されたもので、おそらくnot(deep-equal($before,$after))...?のようなものです。
XSLT 1.0 ではこれはまったく不可能だと思うので、XSLT 2.0 を使用してこれを行う方法を知っている人はいますか?