2011-06-01 7 views
0

je coincé dans la création d'un schéma XSD permettant seulement la prochaine séquence d'éléments:Comment créer un schéma XML permettant un nœud ou un nœud enveloppé par un autre

<root> 
    <node /> 
    <node /> 
    ... 
<root> 

ou

<root> 
    <wrapper> 
     <node /> 
     ... 
    </wrapper> 
    <node /> 
    ... 
    <wrapper> 
     <node /> 
     ... 
    </wrapper> 
<root> 

-à-dire un certain nombre de noeud, certains d'entre eux pourraient être emballés, et certains - non.

Voici ce que je l'ai déjà:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="root"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="node" minOccurs="0" maxOccurs="unbounded" type="NodeElement" /> 
     </xs:sequence> 
     <xs:sequence> 
     <xs:element name="node" minOccurs="0" maxOccurs="unbounded" type="WrapperElement" /> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:complexType name="NodeElement" ></xs:complexType> 
    <xs:complexType name="WrapperElement" ></xs:complexType> 
</xs:schema> 
+0

Pouvez-vous nous montrer ce que vous avez essayé jusqu'à présent? – vanje

Répondre

1

Suis-je manque quelque chose ou serait pas seulement un <xs:choice> simple, convenir

<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="root"> 
    <xs:complexType> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
     <xs:element ref="wrapper" /> 
     <xs:element ref="node" /> 
     </xs:choice> 
    </xs:complexType> 
    </xs:element> 

    <xs:element name="wrapper"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="node" /> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 

    <xs:element name="node" type="xs:string" /> 

</xs:schema> 
Questions connexes