私のXML(簡略化)は次のようなものです:
<Actions>
<Action Id="1">
</Action>
<Action Id="2">
<DoSomething>
<ActionRef ActionId="1" /> <!-- valid -->
</DoSomething>
</Action>
</Actions>
属性値は、要素の属性値をActionId
参照します。XSD ですでに外部キー制約を設定しており、正しく機能しています。Id
Action
次のように、外部フィールドで自己参照値を防止したい:
<Actions>
<Action Id="1">
</Action>
<Action Id="2">
<DoSomething>
<ActionRef ActionId="2" /> <!-- invalid -->
</DoSomething>
</Action>
</Actions>
もちろん、これは XML を処理するアプリケーション内で簡単に実行できます。求めていることが不可能な場合は、それに頼りますが、検証プロセスによってこれを自動的に実行してもらいたいと考えています。 .
外部キー セレクターの XPath クエリに追加しようとし[not(@ActionId = ../@Id)]
ましたが、そのコンテキストでは有効ではありません (正しいかどうかもわかりません)。それ以外には、他に何を試すべきかわかりません。また、この種の状況を防ぐことは言うまでもなく、インターネット上の多くの人が XSD で外部キー関係を設定しているようには見えません (この正確なトピックについては何も見つかりませんでした)。 )。