2009-09-27 80 views
1

下面如何确保XML架构序列包含至少一个元素

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

我的XML标签被我可以让EM标签的强制性也同样的事情,我可以通过提供minOccurs = 1RUID做(<EM minOccurs=1> )。但是我希望如果他们两个都不存在,那么不要根据模式验证xml。如果其中任何一个存在,则根据模式验证xml。意思是如果EM标签不存在,则RUID标签必须存在,反之亦然。

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

感谢 苏尼尔·库马尔Sahoo

回答

2

您好我得到了这个问题解决了。 。它喜欢的方式马丁v Lowis提及,但

下面一点点的变化是有效的架构:

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

2009-09-29 06:17:04

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

哈哈,你几乎贴完全相同的架构(我嵌入'EM'和'RUID '元素直接代替使用类型引用)几秒钟之前,我做了。删除我的帖子。 你会期待有一种更优雅的方式来说出“这些中的任何一个元素”,但我从来没有听说过。 – Joren 2009-09-27 09:56:53

+1

感谢您的帮助。我解决了问题。 2009-09-29 04:18:23

相关问题