我用XSD定义一个用户元素。对于此示例,用户具有名称,电子邮件和一个或多个国籍。我试过了:
<xs:all> <xs:element name="name" blabla /> <xs:element name="email" blabla /> <xs:element name="nationality" minOccurs="1" maxOccurs="unbounded" /> </xs:all>
但是,这是非法的。显然,“All”中的元素只能出现一次(或根本不出现)。
我可以通过改变所有到一个序列,但人们将不得不以确切的顺序,我实际上不关心的输入属性来解决这个问题。
是否有这两种可用的组合?不是根据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>