XML架构绑定存在具有特定值属性的元素
我有以下xml结构-XML架构绑定存在具有特定值属性的元素,xml,xsd,Xml,Xsd,我有以下xml结构- <Recipients> <SwapswireRecipient Role="Counterparty"> ... </SwapswireRecipient> <SwapswireRecipient Role="PrimeBroker"> ... </SwapswireRecipient> </Recipients> ... ... 收件人可以有0个或多个SwapswireRecipi
<Recipients>
<SwapswireRecipient Role="Counterparty">
...
</SwapswireRecipient>
<SwapswireRecipient Role="PrimeBroker">
...
</SwapswireRecipient>
</Recipients>
...
...
收件人可以有0个或多个SwapswireRecipient,并且每个SwapswireRecipient都应该具有具有唯一值的角色属性。角色属性是可选的
我已经在xsd模式中实现了上面的内容,它工作得很好。现在我有一个新的约束要在模式中实现,我发现很难实现
约束-
如果存在SwapswireRecipient,则应仅存在一个SwapswireRecipient,且Role=“Contractor”值为
非常感谢您的帮助。这不能在XML模式中完成,一部分是由于选择器支持的XPath语法的限制,另一部分与跨字段验证有关
如果必须在XSD中捕获这样的规则,我将重写XML模式,以便元素的内容将包含一个可选序列,该序列由一个强制元素组成,后跟零或多个。我将保留元素的xsd:unique子句,并确保@Role的类型受到限制,因此它不包含对方值。这不能在XML模式中完成,一部分是由于选择器支持的XPath语法的限制,另一部分与跨字段验证相关 如果必须在XSD中捕获这样的规则,我将重写XML模式,以便元素的内容将包含一个可选序列,该序列由一个强制元素组成,后跟零或多个。我将保留元素的xsd:unique子句,并确保@Role的类型受到限制,以便它不包括对方的值