XML ドキュメントのセット (すべて同じスキーマ) でパターンを照合する必要があり、パターンが一致した場合は、コンテンツを取得して特定の変換を行う必要があります。
正規表現に似ていますが、要素と属性を持つ「パターン」のリストがあります。
疑似パターンの例:
(//ELEMENTx) (node())* (//ELEMENTy[@ATTRIBUTEz]) (node())* (//@ATTRIBUTEw)
括弧内のみで XPath 構文を使用しました。他の量指定子を使用できます...
これは、xml が最初の要素として ELEMENTx を持ち、ATTRIBUTEw を持つ 1 つの要素で終わり、その間に ATTRIBUTEz を持つ ELEMENTy を持つ必要がある場合に一致します。
パターンの一部だけでなく、パターン全体に対してドキュメント全体を一致させる必要があることに注意してください。
この場合、要素のネストは問題ではありませんが (ELEMENTy が ELEMENTx の子であるかどうかは関係ありません)、特定の順序である必要があります。
編集: 明確にするために、XML には構文情報を含むツリーがあります。構文パターンを一致させる必要があります。
例:
上 / \ XY |\ |\ 1 2 3 4
一致するパターンは次のようになります (ノード名、属性なしと仮定):
XY
1 * Y
X 3 4
1 * 4
XPath を使用してパターンの個々の部分を取得することはできますが、その場合、順序の感覚が失われます... 2 つの XPath クエリを実行すると、互いに対する結果の位置がわかりません。
照合後、各パターンのルールを作成します。これは、コンテンツに対するいくつかの変換 (変更命令など) を指定します。
XPath または XQuery を使用してこのようなことを行う方法はありますか? DOM を使用してパターン マッチング コードを自分で作成することもできますが、これを行うためのより良い方法が既に存在する可能性があります。
ご指摘ありがとうございます。