我有以下xml结构 -
<Recipients>
<SwapswireRecipient Role="Counterparty">
...
</SwapswireRecipient>
<SwapswireRecipient Role="PrimeBroker">
...
</SwapswireRecipient>
</Recipients>
收件人可以拥有0个或更多SwapswireRecipient,每个SwapswireRecipient都应该具有唯一值的Role属性。角色属性是可选的。
我已经在xsd架构中实现了以上,它运行正常。现在我有了一个新的约束来实现模式,我发现很难实现。
Constraint- 如果存在SwapswireRecipient,那么只有一个SwapswireRecipient应该存在Role =“Counterparty”值
感谢任何帮助。
答案 0 :(得分:1)
在XML Schema中无法完成,其中一部分是由于选择器支持的XPath语法的限制,另一部分与跨字段验证有关。
如果必须在XSD中捕获这样的规则,我会重写XML Schema,以便&lt; Recipients&gt;的内容。 element将包括一个可选序列,由强制性&lt; CounterPartyRecipient&gt;组成。元素,由零或更多&lt; SwapswireRecipient&gt;填充。我会保留&lt; SwapswireRecipient&gt;的xsd:unique子句元素并确保@ Role的类型受到限制,以便它不包含Counterparty值。