【发布时间】:2009-05-08 09:52:19
【问题描述】:
我正在使用 XSD 定义用户元素。对于此示例,用户具有姓名、电子邮件和一个或多个国籍。我试过了:
<xs:all>
<xs:element name="name" blabla />
<xs:element name="email" blabla />
<xs:element name="nationality" minOccurs="1" maxOccurs="unbounded" />
</xs:all>
但是,这是非法的。显然,“全部”中的元素只能出现一次(或根本不出现)。 我可以通过将 All 更改为 Sequence 来解决这个问题,但是人们必须按照确切的顺序输入属性,而我实际上并不关心。
有没有这两者的组合?不是根据http://www.w3schools.com/Schema/schema_complex_indicators.asp,但可能它被隐藏了(或者我没有经验的眼睛看不到它)。
凭直觉,我也试过:
<xs:all>
<xs:element name="name" blabla />
<xs:element name="email" blabla />
<xs:sequence>
<xs:element name="nationality" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:all>
但不幸的是,这是无效的。
这是当前的、真实的 XSD:
<!-- user -->
<xs:complexType name="user">
<xs:sequence>
<xs:element name="firstname" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="appendix" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="lastname" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="address" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="zipcode" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="city" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="username" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="email" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="country" type="country" minOccurs="1" maxOccurs="1"/>
<xs:element name="nationality" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
【问题讨论】: