Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确保XML模式序列至少包含一个元素_Xml_Schema_Xsd - Fatal编程技术网

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

如何确保XML模式序列至少包含一个元素,xml,schema,xsd,Xml,Schema,Xsd,下面给出了我的xml标记 <ADCNT> <EM> <RUID> </ADCNT> 我可以通过提供minOccurs=1()使EM标记成为强制标记,也可以使用RUID。但我希望如果两者都不存在,那么不要根据模式验证xml。如果存在其中任何一个,则根据模式验证xml。表示如果EM标记不存在,则RUID标记必须存在,反之亦然 那么,如何解决这个问题呢 谢谢 Sunil kumar Sahoo您需要做出选择: <xs:

下面给出了我的xml标记

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

我可以通过提供
minOccurs=1
)使
EM
标记成为强制标记,也可以使用
RUID
。但我希望如果两者都不存在,那么不要根据模式验证xml。如果存在其中任何一个,则根据模式验证xml。表示如果
EM
标记不存在,则
RUID
标记必须存在,反之亦然

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

谢谢
Sunil kumar Sahoo

您需要做出选择:

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

我解决了这个问题。就像马丁五世。Löwis的回答,但有点不同:

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


Haha,在我发布之前几秒钟,您发布了几乎完全相同的模式(我直接嵌入了
EM
RUID
元素,而不是使用类型引用)。删除了我的帖子。你可能希望有一种更优雅的方式来表达“这些元素中的一个”,但我从来没有听说过。谢谢你的帮助。我重新解决了这个问题。