【发布时间】:2010-12-25 09:44:18
【问题描述】:
假设我有两组 XML 元素:
<One/>
<Two/>
<Three/>
和
<A/>
<B/>
<C/>
我想让它们成为桶元素的子元素:
<Bucket>
<A/>
<One/>
</Bucket>
或者
<Bucket>
<C/>
<Two/>
</Bucket>
但我不想允许任何一组元素中的一个以上元素。即:
<Bucket>
<A/>
<B/>
<One/>
</Bucket>
和
<Bucket>
<A/>
<One/>
<Two/>
</Bucket>
无效。如何在我的 XML Schema 中表达这一点?
我想尝试xs:unique,但这会阻止name() 和local-name() 在字段或选择器中的使用。
更新
完整的解决方案是:
<xs:element name="Bucket">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element name="A"/>
<xs:element name="B"/>
<xs:element name="C"/>
</xs:choice>
<xs:choice minOccurs="0">
<xs:element name="One"/>
<xs:element name="Two"/>
<xs:element name="Three"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
【问题讨论】:
-
您不允许任何人加入群组吗?比如,
<Bucket><A/></Bucket>可以接受吗? -
是的。这是可以接受的以及
<Bucket><One/></Bucket> -
好问题.. +1,也很喜欢
标签: xml xpath xsd schema unique