L'élément key permet de définir un élément clé dans une structure XML.
<xsd:key
id = ID
name = NCName
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?, (selector, field+))
</xsd:key>
L'élément key possède plusieurs attributs destinés à l'identifier et à préciser son nom.
| Attributs | Description |
|---|---|
| id | précise un identificateur unique pour l'élément. |
| name | spécifie un nom pour l'élément. |
L'élément key ne peut être inclus que dans l'élément suivant :
Exemple [voir]<?xml version="1.0" encoding="ISO-8859-1"?>
<site:annuaire
xmlns:site="http://www.site.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.site.com c:\schema.xsd">
<page numero="1" langue="US">
<titre>XML Schema</titre>
<lien>http://www.w3.org/XML/Schema/</lien>
<commentaire>
XML Schemas express shared vocabularies and allow machines
...
</commentaire>
<cle_site>1</cle_site>
</page>
<page numero="2" langue="FR">
<titre>XML Schema tome 0 : Introduction</titre>
<lien>http://xmlfr.org/w3c/TR/xmlschema-0/</lien>
<commentaire>
Le tome 0 de la spécification XML Schema n'est qu'une introduction
...
</commentaire>
<cle_site>1</cle_site>
</page>
<page numero="3" langue="FR">
<titre>XML Schema tome 1 : Structures</titre>
<lien>http://xmlfr.org/w3c/TR/xmlschema-1/</lien>
<commentaire>
XML Schema tome 1 : Structures est la spécification du langage
...
</commentaire>
<cle_site>2</cle_site>
</page>
<page numero="4" langue="US">
<titre>XML Schema Part 2: Datatypes</titre>
<lien>http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/</lien>
<commentaire>
XML Schema: Datatypes is part 2 of the specification of the XML
...
<cle_site>1</cle_site>
</page>
<site numero="1">
<nom>W3C</nom>
<url>http://www.w3.org/</url>
</site>
<site numero="2">
<nom>XMLfr</nom>
<url>http://www.xmlfr.org/</url>
</site>
</site:annuaire>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.site.com"
targetNamespace="http://www.site.com">
<xsd:complexType name="type_page">
<xsd:sequence>
<xsd:element name="titre" type="xsd:string"/>
<xsd:element name="lien" type="xsd:string"/>
<xsd:element name="commentaire" type="xsd:string"/>
<xsd:element name="cle_site"
type="xsd:positiveInteger"/>
</xsd:sequence>
<xsd:attribute name="numero"
type="xsd:positiveInteger"
use="required"/>
<xsd:attribute name="langue"
type="xsd:string"
use="required"/>
</xsd:complexType>
<xsd:complexType name="type_site">
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="url" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="numero"
type="xsd:positiveInteger"
use="required"/>
</xsd:complexType>
<xsd:complexType name="type_annuaire">
<xsd:sequence>
<xsd:element name="page"
maxOccurs="unbounded"
type="type_page">
<xsd:unique name="cle_page">
<xsd:selector xpath=".//page"/>
<xsd:field xpath="./@numero"/>
</xsd:unique>
</xsd:element>
<xsd:element name="site"
maxOccurs="unbounded"
type="type_site">
<xsd:key name="num_site">
<xsd:selector xpath=".//site"/>
<xsd:field xpath="./@numero"/>
</xsd:key>
<xsd:keyref name="cle_site" refer="num_site">
<xsd:selector xpath=".//page"/>
<xsd:field xpath="./cle_site"/>
</xsd:keyref>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="annuaire" type="type_annuaire"/>
</xsd:schema> |