XML模式绑定存在具有特定值属性的元素

时间:2011-11-12 02:29:50

标签: xml xsd

我有以下xml结构 -

<Recipients>
 <SwapswireRecipient Role="Counterparty">
 ...
 </SwapswireRecipient>
 <SwapswireRecipient Role="PrimeBroker">
 ...
 </SwapswireRecipient>
</Recipients>

收件人可以拥有0个或更多SwapswireRecipient,每个SwapswireRecipient都应该具有唯一值的Role属性。角色属性是可选的。

我已经在xsd架构中实现了以上,它运行正常。现在我有了一个新的约束来实现模式,我发现很难实现。

Constraint- 如果存在SwapswireRecipient,那么只有一个SwapswireRecipient应该存在Role =“Counterparty”值

感谢任何帮助。

1 个答案:

答案 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值。