Bonjour,

Voici un extrait de mon XML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<settings class="toto">
            <setting name="monParam">
              <value>valeur</value>
            </setting>
            <setting name="toto">
              <value environnement="1">10</value>
              <value environnement="2">20</value>     
              <value>42</value>     
            </setting>
</settings>
J'ai un fichier XSD permettant de valider mon xml. Dans mon schéma, j'ai mis une contrainte pour dire :
L'attribut environnement est optionnel. Il doit être unique.
Dans mon esprit, cela veut dire :
* Une seule balise possible avec la même valeur d'environnement
* Une seule balise possible avec un environnement non renseigné (l'attribut étant optionnel)

Le premier point fonctionne, le second non.

Une idée ?

Mon xsd :
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
25
26
 
<xs:complexType name="settings">
    <xs:sequence maxOccurs="unbounded">
      <xs:element name="setting" type="setting">
        <xs:unique name="unique-setting-environment">
          <xs:selector xpath="tag:value"/>
          <xs:field xpath="@environnement"/>
        </xs:unique>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
 
  <xs:complexType name="setting">
    <xs:sequence maxOccurs="unbounded">
      <xs:element name="value" type="value"/>
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required"/>
  </xs:complexType>
 
  <xs:complexType name="value">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="environnement" type="common:EnvironnementKey" use="optional" default=""/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
Merci