如何在XSD中混合指标

时间:2010-10-14 15:23:38

标签: xml xsd

我有以下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用于此类事情,但我不确定如何合并它。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您需要将all更改为sequence,并在fieldfields之间进行选择。 XML Schema Primer的Section 2.7 building content models给出了以这种方式使用序列和选择的示例。

我还建议在其他地方定义field,并使用xs:element/@ref指向它,这样就不会重复它。