xml xsd complextype,具有强制元素和任意顺序



我正试图编写一个包含强制元素但顺序任意的复杂类型模式。我的复杂类型如下:

   <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/>

你能帮我吗?感谢

        <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>

如果每个元素最多可以出现一次,请使用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,当元素可以重复时,这也可以工作。

最新更新