如何确保XML模式序列至少包含一个元素
下面给出了我的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:
<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
元素,而不是使用类型引用)。删除了我的帖子。你可能希望有一种更优雅的方式来表达“这些元素中的一个”,但我从来没有听说过。谢谢你的帮助。我重新解决了这个问题。