2016-07-20 16 views
0

У меня есть родительский элемент с именем ContactNumber, который является обязательным. У него есть 4 дочерних элемента (мобильный, рабочий, факс, домашний), который не является обязательным. Но по крайней мере нужно получить одно значение для родитель от любого из этих 4 детей. Как я должен это делать ?.Элемент родителя обязательный, но не дочерний элемент в xml

<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> 

ответ

1

Если есть эта неподвижная последовательность элементов, его похожая на XML schema construct for "any one or more of these elements but must be at least one".

Try:

<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>