简体   繁体   English

具有强制性元素和任意顺序的xml xsd复杂类型

[英]xml xsd complextype with mandatory elements and arbitrary order

I am trying to write a complextype schema containing mandatory elements but in arbitrary order. 我正在尝试编写一个包含强制性元素但以任意顺序排列的复杂类型架构。 My complextype looks like this: 我的复杂类型如下所示:

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

the xml file will be valid if I enter just one of the two elements(while it shouldn't be valid): 如果我仅输入两个元素之一,则xml文件将是有效的(虽然它不应是有效的):

<link>123<link/>

or 要么

<Plan>222<Plan/>

are valid while I want only the followings to be valid: 是有效的,而我只希望以下内容有效:

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

or 要么

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

can you help me please? 你能帮我吗? thank you 谢谢

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

Can solve the issue but if this is just pseudo sample code then try with <xs:group> and <xs:choice> 可以解决问题,但是如果这只是伪示例代码,请尝试使用<xs:group><xs:choice>

If each element can occur at most once, use xs:all: 如果每个元素最多只能出现一次,请使用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>

With XSD 1.1 this also works when elements can be repeated. 在XSD 1.1中,当元素可以重复时,它也适用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM