effectivement, tu peux préciser que ton élément R dans Table sera unique avec comme critère d'unicité la valeur de l'élément PK. il te faut pour cela ajouter une contrainte d'unicité, ce qui se fait par l'ajout d'un élément xs:unique (en supposant que le nom d'espace attribué au schéma des schémas est xs
ex dans le fichier xsd :
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" ...
)
dans ce que l'on appelle la racine de la contrainte d'unicité, c'est à dire l'élément qui va contenir tes éléments uniques, soit ici, l'élément Table (les éléments uniques étant tes enregistrements R).
Dans cet élément xs:unique (un attribut name donne le nom de cette contrainte, ici je l'ai appelé RUnique), il te faut préciser sur quels éléments s'appliquent la contrainte (les éléments R) en ajoutant l'élément xs:selector dont l'attribut xpath spécifie cet élément
1 2 3
| <xs:unique name="RUnique">
<xs:selector xpath="R"/>
</xs:unique> |
ensuite, il te faut préciser les critères d'unicité (chez toi, la valeur de l'élément PK) en ajoutant l'élément xs:field toujours avec un attribut xpath qui précise le critère.
1 2 3 4
| <xs:unique name="RUnique">
<xs:selector xpath="R"/>
<xs:field xpath="PK"/>
</xs:unique> |
Remarque: on peut ajouter plusieurs critères d'unicité (par exemple, un double critère sur la valeur de PK et la valeur de C1. il faut pour cela ajouter un autre élément xs:field) pour plus de précisions sur la syntaxe XPath, se réferrer aux tutoriels sur www.zvon.org
voilà ce que donne le fichier du schéma
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Table">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="R">
<xs:complexType>
<xs:sequence>
<xs:element name="PK"/>
<xs:element name="C1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:unique name="RUnique">
<xs:selector xpath="R"/>
<xs:field xpath="PK"/>
</xs:unique>
</xs:element>
</xs:schema> |
voilà, j'espère que cela t'aidera. si je n'ai pas été assez clair (ou si je n'ai pas bien compris la question, ça arrive :-)!), n'hésites pas à demander des précisions. bon courage.
Partager