如何确保XML Schema序列至少包含一个元素

时间:2009-09-27 09:38:19

标签: xml schema xsd

我的xml标签在下面给出

<ADCNT>
      <EM>
      <RUID>
</ADCNT>

通过提供EMRUID),我可以将minOccurs = 1代码设为强制性,也可以与<EM minOccurs=1>相同。但我想如果它们都不存在则不要对模式验证xml。如果其中任何一个存在,则根据模式验证xml。表示如果不存在EM标记,则必须存在RUID标记,反之亦然。

那么,如何解决这个问题?

由于 Sunil kumar Sahoo

2 个答案:

答案 0 :(得分:7)

您需要做出选择:

<xs:element name="ADCNT">
  <xs:complexType>
    <xs:choice>
      <xs:sequence>
       <xs:element ref="EM" minOccurs="1"/>
       <xs:element ref="RUID" maxOccurs="0"/>
      </xs:sequence>
      <xs:sequence>
       <xs:element ref="RUID" minOccurs="1"/>
      </xs:sequence>
    </xs:choice>
  </xs:complexType>
</xs:element> 

答案 1 :(得分:2)

嗨,我解决了问题。就像马丁和马丁一样。刘易斯提到但有点改变

以下是有效的架构:

<xsd:element name="ADCNT">
    <xsd:complexType>
        <xsd:choice minOccurs="1" maxOccurs="1">
        <xsd:sequence>
            <xsd:element name="EM" minOccurs = "1"/>
            <xsd:element name="RUID" minOccurs = "0"/>
        </xsd:sequence>
        <xsd:sequence>
            <xsd:element name="RUID" minOccurs = "1"/>
        </xsd:sequence>
        </xsd:choice>
    </xsd:complexType>
</xsd:element>