xml xsd complextype,包含必需元素和任意顺序

时间:2012-09-04 03:16:16

标签: xml xsd

我正在尝试编写一个包含必需元素的复杂类型模式,但是按任意顺序。我的复杂类型如下所示:

   <xs:choice minOccurs="0" maxOccurs="1">
      <xs:element name="link" type="xs:unsignedInt" minOccurs="1" maxOccurs="1"/>
      <xs:element name="Plan" type="xs:unsignedInt" minOccurs="1" maxOccurs="1"/>
    </xs:choice>

如果我只输入两个元素中的一个(虽然它不应该有效),xml文件将是有效的:

<link>123<link/>

<Plan>222<Plan/>

有效,而我只希望以下内容有效:

<link>123<link/>
<Plan>222<Plan/>

 <Plan>222<Plan/>
 <link>123<link/>
你可以帮帮我吗?谢谢

2 个答案:

答案 0 :(得分:0)

        <xs:choice minOccurs="0" maxOccurs="1">
        <xs:sequence>
            <xs:element name="link" type="xs:unsignedInt" minOccurs="1" maxOccurs="1"/>
            <xs:element name="Plan" type="xs:unsignedInt" minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
        <xs:sequence>               
            <xs:element name="Plan" type="xs:unsignedInt" minOccurs="1" maxOccurs="1"/>
            <xs:element name="link" type="xs:unsignedInt" minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
        </xs:choice>

可以解决问题,但如果这只是伪示例代码,请尝试使用<xs:group><xs:choice>

答案 1 :(得分:0)

如果每个元素最多可以出现一次,请使用xs:all:

 <xs:all>
   <xs:element name="link" type="xs:unsignedInt" minOccurs="1" maxOccurs="1"/>
   <xs:element name="Plan" type="xs:unsignedInt" minOccurs="1" maxOccurs="1"/>
 </xs:all>

使用XSD 1.1,当元素可以重复时也可以使用。