XSD - 使用出现0限制/重新定义complexType

时间:2011-03-15 22:31:17

标签: xml schema

我有一个complexType用户:

<xs:complexType name="User">
    <xs:all>
        <xs:element name="id" type="xs:positiveInteger" minOccurs="1" maxOccurs="1" />
        <xs:element name="email" type="email" minOccurs="1" maxOccurs="1" />
        <xs:element name="password" type="xs:string" minOccurs="1" maxOccurs="1" />
        <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
    </xs:all>
</xs:complexType>

我必须在元素minOccurs和maxOccurs上使用约束。

例如通过登录我只需要用户使用电子邮件和密码元素,所以我需要任何其他元素(id,name),maxOccurs = 0和minOccurs = 0。

<Auth:login>
    <User>
        <email>my@email.net</email>
        <password>mypass</password>
    </User>
</Auth:login>

是否可以使用受限制的complexType User验证上述XML?

2 个答案:

答案 0 :(得分:1)

否:如果R的所有实例都是B的有效实例,则类型R只能限制类型B.由于B要求存在id和name,因此需要它们(或甚至允许它们)的类型不是有效限制B.

答案 1 :(得分:0)

断言可能(在xsd 1.1中),但我认为php只支持xsd 1.0:S

我找到了here一些帮助。我可以将我的子元素分组,并连接实际需要的组。