我有一个XML Schema,如下所示:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="A" minOccurs="0" maxOccurs="1"/>
<xs:element name="B" minOccurs="0" maxOccurs="1"/>
<xs:element name="C" minOccurs="0" maxOccurs="32"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
根据此架构,以下内容有效:
<root xsi:noNamespaceSchemaLocation="MySchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</root>
但是,我想使上述XML无效。
更具体地说,我想要求:
1. <root>
至少有一个子元素,可以是<A>
,<B>
或<C>
,以及
2. <root>
最多只有一个<A>
个孩子,最多只有一个<B>
个孩子。
建议?
解决方案是:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="A"/>
<xs:element name="B" minOccurs="0"/>
<xs:element name="C" minOccurs="0" maxOccurs="32"/>
</xs:sequence>
<xs:sequence>
<xs:element name="B"/>
<xs:element name="C" minOccurs="0" maxOccurs="32"/>
</xs:sequence>
<xs:sequence>
<xs:element name="C" minOccurs="1" maxOccurs="32"/>
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
答案 0 :(得分:0)
您是否尝试将minOccurrs=1
添加到xs:sequence
?
答案 1 :(得分:0)
如何正确使用一个xs:选择A,B或C,然后选择0或者更多?
啊,你的编辑它必须是A,AB或B的选择,然后是0到32 Cs。是