特定の値の属性を持つ要素のXMLスキーマバインディングの存在

私は次のXML構造を持っています -


 
 ...
 
 
 ...
 

受信者は0以上のSwapswireRecipientを持つことができ、各SwapswireRecipientは固有の値を持つRole属性を持つ必要があります。ロール属性はオプションです。

私は上記のxsdスキーマで実装しており、正常に動作しています。今私は実装するのが難しいと思っているスキーマに実装する新しい制約があります。

制約 - SwapswireRecipientが存在する場合、正確に1つのSwapswireRecipientがRole = "Counterparty"の値で存在するはずです

どんな助けもありがとうございます。

1

1 答え

XMLスキーマで行うことはできません。セレクタでサポートされているXPath構文の制限と、クロスフィールド検証に関連する制限があるためです。

If such a rule must be captured in your XSD, I would rewrite the xml Schema so that the content of a element would include an optional sequence, made from a mandatory element, folllowed by zero or more . I would keep the xsd:unique clause for elements and ensure that the @Role's type is restricted so that it does not include the Counterparty value.

1
追加された