我有以下XML代码段
<restriction>
<name>notempty</name>
<field>title</field>
</restriction>
由此XSD验证
<xs:element name="restriction" maxOccurs="unbounded">
<xs:complexType>
<xs:all>
<xs:element name="name" type="xs:string" minOccurs="1" />
<xs:element name="field" type="xs:string" />
</xs:all>
</xs:complexType>
</xs:element>
我需要更改XSD,以便它还会验证以下内容:
<restriction>
<name>notempty</name>
<fields>
<field>title</field>
<field>info</field>
</fields>
</restriction>
显然xs:choice用于此类事情,但我不确定如何合并它。有什么想法吗?
答案 0 :(得分:0)
您需要将all
更改为sequence
,并在field
和fields
之间进行选择。 XML Schema Primer的Section 2.7 building content models给出了以这种方式使用序列和选择的示例。
我还建议在其他地方定义field
,并使用xs:element/@ref
指向它,这样就不会重复它。