我有一个名为ContactNumber的父元素是强制性的。它有4个子元素(移动,工作,传真,家庭),这不是强制性的。但至少需要从这4个孩子中的任何一个获得父母的一个值。我该怎么做?。
<xs:element name="contactDetails">
<xs:complexType>
<xs:element name="jobTitle" />
<xs:sequence><xs:element name="contactNumber" type="contactNumberInfo" minOccurs="1" maxOccurs="3" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="contactNumberInfo">
<xs:sequence>
<xs:element name="mobile">
<xs:simpleType>
<xs:restriction base="xs:positiveInteger">
<xs:pattern value="[0-9]{10}" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="home" type="xs:positiveInteger" />
<xs:element name="work" type="xs:positiveInteger" />
<xs:element name="fax" type="xs:positiveInteger" />
</xs:sequence>
</xs:complexType>
答案 0 :(得分:1)
如果存在固定的元素序列,则其类似于XML schema construct for "any one or more of these elements but must be at least one"。
尝试:
<xs:element name="ContactNumber">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="home" type="xs:positiveInteger" minOccurs="1" maxOccurs="1" />
<xs:element name="work" type="xs:positiveInteger" minOccurs="0" maxOccurs="1" />
<xs:element name="fax" type="xs:positiveInteger" minOccurs="0" maxOccurs="1" />
<xs:element name="mobile" type="xs:positiveInteger" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:sequence>
<xs:element name="work" type="xs:positiveInteger" minOccurs="1" maxOccurs="1" />
<xs:element name="fax" type="xs:positiveInteger" minOccurs="0" maxOccurs="1" />
<xs:element name="mobile" type="xs:positiveInteger" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:sequence>
<xs:element name="fax" type="xs:positiveInteger" minOccurs="1" maxOccurs="1" />
<xs:element name="mobile" type="xs:positiveInteger" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:sequence>
<xs:element name="mobile" type="xs:positiveInteger" minOccurs="1" maxOccurs="1" />
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>