2010-10-14 53 views
1

混合指标我已经在XML片断如下如何XSD

<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:选择用于这种事情,但我不知道如何合并它。有任何想法吗?

回答

0

您需要将all更改为sequence,然后在fieldfields之间创建一个选项。 XML Schema Primer的Section 2.7 building content models给出了以这种方式使用序列和选择的例子。

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

+1

虽然这很烦人,我不能保持“全部” – 2010-10-15 12:36:10