Mother
标记内的元素可以是Son
或Daughter
Son
或Daughter
元素没有任何序列。Son
不能是我的多元素(只有一个儿子)。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>
答案 0 :(得分:1)
在这种特殊情况下,您可以将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=....