2016-07-20 28 views
0

Ich habe ein Elternelement mit der Bezeichnung ContactNumber, das obligatorisch ist. Es hat 4 untergeordnete Elemente (mobil, geschäftlich, Fax, Zuhause), die nicht obligatorisch sind.Aber zumindest muss ein Wert für die Eltern von einem dieser 4 Kinder.Wie soll ich das tun ?.Elternelement obligatorisch, aber nicht Kind in 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> 

Antwort

1

Wenn es diese feste Folge von Elementen, ähnlich wie ihre XML schema construct for "any one or more of these elements but must be at least one".

Versuchen:

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