Bonjour,

j'essaie de faire référence à une clé utilisée dans des éléments non parents. Voici le fichier XML qui serait valide :

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
 
<?xml version="1.0" encoding="utf-8" ?>
<MEMORIES selected="MEM1">
 
  <MEM name="MEM1">
    <BOARD id="1" central="10"/>
    <BOARD id="2" central="20"/>
    <BOARD id="3" central="30"/>
  </MEM>
 
  <MEM name="MEM2">
    <BOARD id="1" central="30"/>
  </MEM>
 
  <CUSTOM name="Custom">
    <BOARD id="1" central="10"/>
    <BOARD id="2" central="20"/>
    <BOARD id="3" central="30"/>
  </CUSTOM>
</MEMORIES>
Je voudrai que MEMORIES.selected référence l'un des attributs MEM.name ou CUSTOM.name.
Est-ce possible ? Voici mon schéma actuellement, avec cette contrainte qui ne fonctionne pas:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
 
  <xs:element name="MEMORIES">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="MEM" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="8" name="BOARD">
                <xs:complexType>
                  <xs:attribute name="id" type="xs:unsignedByte" use="required"/>
                  <xs:attribute name="central" type="xs:double" use="required"/>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="name" type="xs:string" use="required"/>
          </xs:complexType>
 
          <xs:unique name="memBoardUnique">
            <xs:selector xpath="BOARD" />
            <xs:field xpath="@id" />
          </xs:unique>
        </xs:element>
 
        <xs:element name="CUSTOM">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="8" minOccurs="8" name="BOARD">
                <xs:complexType>
                  <xs:attribute name="id" type="xs:unsignedByte" use="required"/>
                  <xs:attribute name="central" type="xs:double" use="required"/>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="name" type="xs:string" use="required"/>
          </xs:complexType>
 
          <xs:unique name="customMemBoardUnique">
            <xs:selector xpath="BOARD" />
            <xs:field xpath="@id" />
          </xs:unique>
 
        </xs:element>
 
 
      </xs:sequence>
      <xs:attribute name="selected" type="xs:string" use="required"/>
    </xs:complexType>
 
 
    <xs:unique name="nameUnique">
      <xs:selector xpath="*" />
      <xs:field xpath="@name" />
    </xs:unique>
 
 
    <!-- Ne fonctionne pas ... -->
    <xs:keyref name="myMemRef" refer="nameUnique">
      <xs:selector xpath="."/>
      <xs:field xpath="@selected"/>
    </xs:keyref>
    <!-- Ne fonctionne pas ... -->
  </xs:element>
</xs:schema>
Ce que j'essaie est-il possible déjà ?

Merci d'avance pour toute aide