Voilà ce que je dois reproduire en xsd:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
champ1 = a ou champ1 = b ou (champ1=c et champ2) ou (champ1=d et champ2)
Ce que j'ai fait:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
<xs:choice>
   <xs:sequence>
       <xs:element name="champ1" minOccurs="1">
           <xs:simpleType>
               <xs:restriction base="type_champ1">
                   <xs:enumeration value="a"/>
                   <xs:enumeration value="b"/>
               </xs:restriction>
            </xs:simpleType>
       </xs:element>
    </xs:sequence>
    <xs:sequence>
        <xs:element name="champ2"  minOccurs="1"/>
        <xs:element name="champ1" minOccurs="1">
              <xs:simpleType>
                   <xs:restriction base="type_champ1">
                       <xs:enumeration value="c"/>
                        <xs:enumeration value="d"/>
                    </xs:restriction>
              </xs:simpleType>
          </xs:element>
     </xs:sequence>
</xs:choice>
Et bien sûr, je reçois l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
E cos-element-consistent: Error for type '#AnonType_SpecificSectionIP09CreationBody'. Multiple elements with name 'champ1', with different types, appear in the model group.
Pas cool. Je comprends l'erreur mais je vois pas comment la contourner. Les éléments "champ1" doivent conserver le même nom quelque soit la branche.