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 番目の部分は、次の疑似コードのようなものである可能性があります: $before
variable はchange/item[1]/something
既存のsomething
サブツリーが削除されたもので、$after
variable はchange/item[2]/something
既存のsomething
サブツリーが削除されたもので、おそらくnot(deep-equal($before,$after))
...?のようなものです。
XSLT 1.0 ではこれはまったく不可能だと思うので、XSLT 2.0 を使用してこれを行う方法を知っている人はいますか?