XSD:不允许空元素
问题描述:
我有一个XML架构,看起来像这样:XSD:不允许空元素
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="A" minOccurs="0" maxOccurs="1"/>
<xs:element name="B" minOccurs="0" maxOccurs="1"/>
<xs:element name="C" minOccurs="0" maxOccurs="32"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
下是有效的,根据这个模式:
<root xsi:noNamespaceSchemaLocation="MySchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</root>
不过,我想使以上XML无效。
更具体而言,我想要求: 1.该<root>
具有至少一个子元素,无论是一个<A>
,一个<B>
或<C>
,和 2.该<root>
具有至多一个<A>
孩子,最多一个<B>
孩子。
对此提出建议?
解决办法是:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="A"/>
<xs:element name="B" minOccurs="0"/>
<xs:element name="C" minOccurs="0" maxOccurs="32"/>
</xs:sequence>
<xs:sequence>
<xs:element name="B"/>
<xs:element name="C" minOccurs="0" maxOccurs="32"/>
</xs:sequence>
<xs:sequence>
<xs:element name="C" minOccurs="1" maxOccurs="32"/>
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
答
如何准确地使用一个xs:选择A,B或C,然后再选择0个或更多个?
啊,你的编辑必须是类似于A,AB或B的选择,然后是0到32 Cs。是?
答
你有没有尝试添加minOccurrs=1
到xs:sequence
?
你的建议让我回答了凯特。谢谢! – JaysonFix 2010-07-01 13:45:39