2
  1. 我需要创建一个模式来验证 XML 文件。
  2. 标签内的元素Mother可以是SonDaughter
  3. SonDaughter元素没有任何序列。
  4. Son我不能多元素(只有一个儿子)。
  5. Daughter可以是多个(多个女儿)。

所以我的问题是如何为此编写 XML 模式。这是我写的。而不是<xsd:all>我尝试<xsd:sequence><xsd:choice>。但我不知道如何克服这一点。

<xsd:complexType name="Mother">     
 <xsd:all>
  <xsd:element name="Son" type="string" minOccurs="0" maxOccurs="1"/>
  <xsd:element name="Daughter" type="string" minOccurs="0" maxOccurs="1"/>
 </xsd:all>
</xsd:complexType>

-------------------------------这些是正确的 XML 文件------------- ------------------

有多个女儿

<Mother>
<Son>Jhon</Son>
<Daughter>Rose</Daughter>
<Daughter>Ann</Daughter>
</Mother>

用不同的顺序

<Mother>
<Daughter>Rose</Daughter>
<Son>Jhon</Son>
<Daughter>Ann</Daughter>
</Mother>

没有儿子或没有女儿或两者都没有

<Mother>
<Daughter>Rose</Daughter>
</Mother>
4

1 回答 1

2

在这种特殊情况下,您可以将其作为一个sequence零个或多个Daughter元素,然后是零个或一个Son,然后是另一个零个或Daughter多个

<xsd:complexType name="Mother">     
 <xsd:sequence>
  <xsd:element name="Daughter" type="string" minOccurs="0" maxOccurs="unbounded"/>
  <xsd:element name="Son" type="string" minOccurs="0" maxOccurs="1"/>
  <xsd:element name="Daughter" type="string" minOccurs="0" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>

如果元素内容比字符串更复杂,我倾向于声明单独的顶级元素并使用引用它们<xsd:element ref="Daughter" minOccurs=....

于 2013-03-20T10:35:32.267 回答