Ce document est une traduction de la recommandation XML Schema du W3C, datée du 2 mai 2001. Cette version traduite peut contenir des erreurs absentes de l'original, introduites par la traduction elle-même. La version originelle en anglais, seule normative, se trouve à l'adresse http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/. Traduction :
Copyright © 1998 W3C (MIT, INRIA, Keio), tous droits réservés. Les règles du W3C sur la responsabilité, les marques commerciales, les droits des auteurs et les licences des logiciels sont applicables. Remarque de la traduction: L'entité caractère nécessaire au "oe" ligaturé n'étant pas supportée par certains navigateurs, ce caractère sera écrit oe. |
Copyright ©2001 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use et software licensing rules apply.
XML Schema tome 1 : Structures est la spécification du langage de définition de XML Schema, qui offre les fonctions pour spécifier les structures et les contraintes de contenu de documents XML 1.0, y compris ceux qui font usage des espaces de noms de XML. Le langage des Composant de schéma i-même écrit en XML 1.0 et utilise des espaces de noms, est une réécriture significative et une extension considérable des possibilités fonctionnelles des DTD de XML 1.0. Cette spécification est directement liée à XML Schema tome 2 : Types de données.
Cette section décrit le statut de ce document au moment de sa publication. D'autres documents, plus récents, peuvent supplanter ce document. Le W3C en gère la liste des mises à jour.
Ce document a été contrôlé par des personnes concernées par le sujet, membres du W3C ou autre, et a été validé par le directeur du W3C en tant que recommandation. Il s'agit donc d'un document stable qui peut être utilisé comme document de référence. Le statut de "Recommandation du W3C" sert à attirer l'attention sur la spécification et à en promouvoir largement le déploiement ; cela dans le but d'améliorer le fonctionnement et l'interopérabilité du Web.
Ce document a été produit par le groupe de travail du W3C sur XML Schema dans le cadre général de l'activité XML du W3C. Les objectifs du langage XML Schema sont présentés dans les spécifications de XML Schema. Les auteurs de ce document sont les membres du groupe de travail sur XML Schema et les 3 tomes de cette recommandation ont chacun leurs propres éditeurs.
Cette version intègre les remarques correctives faites sur les versions antérieures.
Vous voudrez bien faire remonter les erreurs trouvées dans ce document à www-xml-schema-comments@w3.org (archive) (note de la traduction : ou directement à la traduction française mentionnée en début de document). Une liste des erreurs connues de la version anglaise de cette spécification est disponible à l'adresse http://www.w3.org/2001/05/xmlschema-errata.
La seule version normative du présent document est l'anglaise. Des informations concernant ses traductions sont disponibles à l'adresse http://www.w3.org/2001/05/xmlschema-translations.
Une liste complète des recommandations actuelles du W3C et d'autres documents techniques est disponible à l'adresse http://www.w3.org/TR/.
Ce document expose la partie structurante (XML Schema tome 1 : Structures) du langage de définition de XML Schema.
Le chapitre 2 présente le cadre conceptuel (§2) de XML Schema, comprenant une introduction à la nature des schémas XML et au modèle de données abstrait qui s'y rapporte, on y trouve également des définitions terminologiques générales.
Le chapitre Descriptions détaillées des composants de schéma (§3) donne tous les détails de la sémantique de chaque composant du modèle abstrait et leurs représentations XML, en faisant référence à la DTD et au schéma XML d'un document de type schéma XML, les correspondances précises entre le vocabulaire des éléments et des attributs de la représentation physique et les composants et les propriétés du modèle abstrait y sont également spécifiées.
Le chapitre 4 qui présente les Schémas et les espaces de noms : accès et assemblage (§4) contient la description des relations entre documents et schémas, l'import, l'inclusion et la redéfinition des déclarations et des définitions et les critères fondamentaux de validité des schémas.
Le chapitre 5 qui concerne l'évaluation de la validité des schémas (§5) contient la description des considérations générales qui gouvernent l'évaluation de la validité de schéma des documents et les responsabilités des programmes validant.
Les chapitres normatifs des annexes portent, entre autres, sur le schéma des schémas (§A) pour la représentation physique des schémas en XML et les références bibliographiques (§B).
Les chapitres non-normatifs des annexes portent, entre autres, sur la DTD des schémas (§G) et le glossaire (§F).
L'objectif primordial de ce document est d'être la référence de la définition du langage. En cela, et bien qu'il contienne quelques exemples, il n'est pas fondamentalement conçu pour être un guide méthodologique à utiliser comme aide au démarrage à la conception et aux fonctionnalités de modèles XML. Au lieu de cela, il contient plutôt une définition complète et minutieuse du modèle conceptuel propre à servir de guide aux développeurs qui implémenteront la norme. Pour ceux qui ont besoin d'une aide au démarrage, il est conseillé de lire d'abord le tome non-normatif de la recommandation [XML Schema tome 0 : introduction].
Le but de XML Schema tome 1: structures est de définir la nature des schémas XML et des parties qui les composent, fournissant un inventaire exhaustif des balises XML servant à monter des représentations physiques des modèles et définir en quoi concerne l'application de modèles à des documents XML.
Le but d'un modèle (note de traduction : ou 'schéma', nous utilisons indifféremment dans ce document l'un ou l'autre de ces deux termes) conforme à cette recommandation est de définir et décrire une classe de documents XML. Cela se fait via des composants de modélisation qui permettent de définir les contraintes et documenter la signification, l'utilisation et les relations de dépendances des constituants d'un document XML : les types de données, les éléments et leurs contenus, les attributs et leurs valeurs. Les schémas permettent également de spécifier des informations complémentaires au document, comme par exemple la normalisation et la gestion des valeurs par défaut des attributs et des éléments. Les schémas offrent des facilités pour être auto-documentés. C'est ainsi que XML Schema tome1 : structures peut être utilisé pour définir, décrire et cataloguer des vocabulaires XML spécifiques à différentes classes de documents.
Toute application utilisant des données XML bien formées peut utiliser le formalisme de modèles ici décrits pour exprimer des contraintes de contenu, syntaxiques et structurelles applicables aux instances de documents. Le formalisme de XML Schema tome 1 : Structures offre un niveau suffisamment pratique d'expression de contraintes pour pouvoir être décrit et implémenté dans une grande variété d'applications XML. Toutefois, le langage défini par cette spécification n'essaie pas de fournir toutes les possibilités dont n'importe quelle application pourrait avoir besoin. Certaines d'entre elles pourraient avoir besoin de disposer de contraintes dont l'expression n'est pas prévue dans ce langage et par conséquent avoir besoin de gérer en plus leurs propres règles de validations.
La définition de XML Schema tome 1 : Structures dépend des spécifications suivantes : [XML-Infoset], [XML-Namespaces], [XPath] et [XML Schema tome 2 : Types de données].
Reportez-vous à l'annexe normative Eléments et propriétés requis des ensembles d'information (§D) pour avoir une liste récapitulative des unités d'information et propriétés de [XML-Infoset] exigées comme pré-requises par la présente recommandation pour les programmes validant.
Ce chapitre présente la typographie et les mises en valeur utilisées dans ce document.
Les termes spéciaux sont définis dès leur introduction dans le texte par le mot "Définition" écrit entre crochets. Par exemple [Définition :] un terme est quelque chose utilisé avec une signification particulière. Le mot "Définition" est explicitement mentionné et le terme défini est écrit en gras. La fin de la définition n'est pas particulièrement indiquée dans le texte, qu'il soit affiché ou imprimé. Les termes officiels utilisés dans le texte sont encadrés par des points en début et fin de terme et renvoient à leurs définitions, par exemple : ·terme·.
Les exemples non-normatifs sont encadrés et accompagnés d'une petite explication :
<schema targetNamespace="http://www.example.com/XMLSchema/1.0/mySchema">
La définition de chaque sorte de composant de schéma est constitué de sa liste de propriétés et types de contenus possibles ; les propriétés sont suivies de la description de leur sémantique :
Dans le corps de la recommandation, les références aux propriétés des composants de schéma, repérables grâce aux accolades qui les encadrent, sont des liens qui conduisent à leur définition, par exemple {exemple de propriété}.
La correspondance entre une unité d'information de type élément (par exemple, ce cas n'est qu'un des aspects de la représentation XML d'un schéma) et un ou plusieurs composants de schéma est présentée sous forme de tableaux. Cela est suivi d'un récapitulatif des correspondances entre les propriétés du composant et celles de l'élément d'information. Quand il y a plusieurs possibilités de composants et que le choix de l'un d'eux est déterminé par son contexte d'utilisation, nous présentons un tableau récapitulatif par contexte. Les correspondances des propriétés que nous spécifions sont normatives, comme le sont les illustrations de la représentation XML des unités d'information de type élément.
Dans la représentation XML, les noms d'attributs en gras (par exemple
count dans l'encadré ci-dessous) indique qu'il est obligatoire, les
autres étant optionnels. Quand la définition de la valeur d'une unité
d'information de type attribut est du type énumération, les valeurs
autorisées sont écrites les unes derrières les autres, séparées par le
caractère barre verticale (voir l'exemple de l'attribut size
ci-après) ; si l'un de ces valeurs est la valeur par défaut, elle est reprise
après le caractère "deux points" (exemple du mot medium
ci-dessous) . Quand une unité d'information de type attribut a une définition
de type simple préfabriqué dans [XML Schema tome 2 :
types de données], un hyperlien à sa définition est fourni.
Le contenu autorisé d'un élément d'information est montré sous la forme
d'un fragment de grammaire, en utilisant les opérateurs de Kleene
?, * et +. Chaque nom d'élément alors
présent est un lien à sa propre illustration.
Remarque : Les illustrations sont dérivées automatiquement du schéma des schémas (partie normative) (§A). Dans le cas d'un conflit apparent, le schéma des schémas (partie normative) (§A) fait foi, dans ce sens que, avec les ·contraintes de représentation des schémas·, il fournit l'expression normative de la forme de la représentation XML.
example <example
count = integer
size = (large | medium |
small) : medium>
Content: (all | any*)
</example>
| Composant de schéma example | ||||
|---|---|---|---|---|
|
Les références à des éléments dans le texte sont des liens à l'illustration qui correspond comme dans l'exemple ci-dessus, mis en valeur par des signes inférieurs et supérieurs, par exemple <example>.
Les références aux propriétés des unités d'information comme cela est défini dans [XML-Infoset] sont balisées sous la forme de liens au chapitre correspondant et sont mises en valeur par des crochets , par exemple [enfants].
Les propriétés des unités d'information que cette spécification définit sont présentées comme suit :
exampleLes références aux propriétés des unités d'information définies dans cette spécification sont balisées sous la forme de liens vers l'endroit où elles sont introduites comme dans l'exemple ci-dessus. La propriété est alors mise en valeur par des crochets, par exemple [nouvelle propriété].
La mise en valeur suivante est utilisée pour les commentaires non-normatifs de ce document :
Remarque : commentaires généraux destinés à tous les lecteurs.
Suivant les règles de [XML 1.0 (Second Edition)], à l'intérieur du texte de cette spécification, les verbes pouvoir et devoir sont définis comme suit :
Remarquez que cette spécification fournit une définition des erreurs et de la manière dont les programmes conformes doivent réagir par rapport aux erreurs (référez-vous au chapitre L'évaluation de la validité des schémas (§5)) qui est infiniment plus complexe que celle de [XML 1.0 (Second Edition)].
Ce chapitre donne un aperçu du modèle abstrait des structures de XML Schema. Le chapitre Détails des composants de schéma (§3) fournit les détails de ce modèle dont la représentation XML normative des composants du modèle abstrait. Les lecteurs dont l'objectif principal est d'apprendre à écrire des documents de type schéma peuvent commencer par lire le tutorial [XML Schema tome 0 : Introduction] et de consulter seulement ensuite les sous-chapitres intitulés Représentation XML de ... qui contiennent tous les détails de la spécification (ces sous-chapitres sont ceux du grand chapitre Détails sur les composants de schéma (§3)).
Un schéma XML consiste en des composants qui sont par exemple des définitions de types et des déclarations d'éléments. Celles-là peuvent à leur tour être utilisées pour contrôler la validité des unités d'information de type élément et attribut à condition qu'elles soient bien formées (tel que défini dans le dictionnaire terminologique de XML [XML-Infoset]) et pour spécifier des compléments d'information sur ces unités et leurs descendants. Ces compléments d'information prennent la forme d'informations explicitement écrites là où elles étaient implicites dans le document original. Il s'agit par exemple des informations de normalisation, de valeurs par défaut des attributs et des éléments et des définitions de type des unités d'information de type élément et attribut.
L'évaluation de la validité du schéma a deux aspects :
Tout au long de cette spécification, [Définition:] le mot valide et ses formes dérivées font référence à la clause 1 ci-dessus, la résolution de la validité locale par rapport au schéma.
Tout au long de cette spécification, [Définition :] le mot évaluation fait référence à la totalité du processus de validation locale, l'évaluation de la validité de schéma et les rajouts à l'ensemble d'information.
Cette spécification repose sur [XML 1.0 (Second Edition)] et [XML-Namespaces]. Les concepts et les définitions en rapport avec XML utilisés ci-après sont encadrés au niveau abstrait par des unités d'information comme cela est défini dans [XML-Infoset]. Par définition, cette utilisation de l'ensemble d'information fournit a priori des garanties sur la qualité de la forme (telle que définie dans [XML 1.0 (Second Edition)]) et sur la conformité de l'espace de noms (telle que définie dans [XML-Namespaces]) pour tous les candidats à ·l'évaluation· et pour tous les ·documents de type schéma·.
De la même manière que [XML 1.0 (Second Edition)] et [XML-Namespaces] peuvent être décrits en terme d'unités d'information, XML Schemas peut être décrit en terme de modèle de données abstrait. Ce faisant, cette spécification définit rigoureusement les informations qui doivent être à la disposition de tout programme de traitement de XML Schema se disant conforme. Le modèle abstrait des schémas est seulement conceptuel et ne présage d'aucune implémentation physique ou représentation particulière. Pour faciliter l'interopérabilité et le partage des données de type schéma, un format d'échange normatif en XML est fourni.
[Définition :] Composant de schéma est le terme générique utilisé pour désigner les blocs de construction qui constituent le modèle de données abstrait du schéma. [Définition :] Un schéma XML est un ensemble de ·composants de schéma·. Il y a au total 13 sortes de composants répartis en trois groupes. Les composants principaux, qui peuvent (cas des définitions de types) ou doivent (cas des déclarations d'éléments et d'attributs) avoir des noms, sont ceux-ci :
Les composants secondaires, qui doivent avoir des noms, sont :
Finalement, les composants "assistant" fournissent de petites parties d'autres composants ; ils ne sont pas indépendants de leur contexte :
Durant la ·validation·, [Définition :] les composants de type déclaration sont associés aux unités d'information en train d'être ·validées· par un nom (qualifié).
D'un autre côté, [Définition :] les composants de définition définissent des composants internes de type schéma qui peuvent être utilisés dans d'autres composants.
[Définition :] Les déclarations et les définitions peuvent avoir et être identifiées par des noms de type NCName conformes à la spécification [XML-Namespaces].
[Définition :] Plusieurs sortes de composants ont un espace de noms cible qui est soit ·absent· soit un nom d'espace de noms, également défini dans [XML-Namespaces]. ·L'espace de nom cible· sert à identifier l'espace de noms à l'intérieur duquel l'association entre le composant et son nom existe. Dans le cas de déclarations, cela, à son tour, détermine le nom de l'espace de noms des unités d'information de type élément (par exemple) qu'il peut ·valider·.
Remarque : au niveau abstrait, il n'y a aucune obligation à ce que les composants d'un schéma partagent le même ·espace de noms cible·. Tout schéma utilisé dans ·l'évaluation· de documents qui contiendraient des noms provenant de plusieurs espaces de noms inclura nécessairement des composants ayant différents ·espaces de noms cibles·. Cela contraste avec ce qui se passe avec la représentation XML des composants dans laquelle les définitions et les déclarations apportées par tous les fragments de documents de type schéma participent à la constitution d'un seul et même espace de noms cible.
La ·Validation·, définie en détail au chapitre Descriptions détaillées des composants de schéma (§3), est une relation entre des unités d'information et des composants de schéma. Par exemple, une unité d'information de type attribut peut se ·valider· par rapport à la déclaration d'attribut qui lui correspond, une liste d'unités d'information de type élément peut se ·valider· par rapport au modèle de contenu qui lui correspond, etc. Les chapitres suivants introduisent brièvement les différentes sortes de composants du modèle de données abstrait, ainsi que d'autres fonctions principales du modèle abstrait et la manière avec laquelle ils contribuent à la ·validation·.
Le modèle abstrait fournit deux sortes de composants de définition des types : un pour le type simple et l'autre pour le type complexe.
[Définition :] Cette spécification utilise la phrase définition de types pour les cas où il n'y a pas de distinction à faire entre les types simples et les types complexes.
Les définitions de types forment en final une hiérarchie n'ayant qu'une seule racine. Les sous-chapitres ci-dessous tout d'abord décrivent les caractéristiques de cette hiérarchie et ensuite fournissent une introduction aux définitions des types simples et complexes eux-mêmes.
[Définition :] La ·définition du type ur· étant un cas particulier mis à part, toute ·définition de type· est , par construction, soit une ·restriction· soit une ·extension· d'une autre définition de type. Le graphe de ces relations forme un arbre connu sous le nom de hiérarchie des définitions de types.
[Définition :] Une définition de type dont les déclarations ou les facettes sont dans une relation biunivoque avec celles d'une autre définition de type, chacune des déclarations ou facettes de la première restreignant tour à tour leur homologue de l'autre définition, est appelée restriction. Les restrictions peuvent, par exemple, se concrétiser par la réduction d'une gamme de valeurs ou une réduction des choix possibles. Les membres d'un type restreint (A) par rapport à un type (B) sont toujours des membres valides du type B.
[Définition :] La définition d'un type complexe A qui permet d'avoir des contenus d'élément ou d'attribut en plus de ceux autorisés par un autre type spécifié est une extension.
[Définition :] La définition du type ur est présente dans chaque ·schéma XML·, elle est la racine de la hiérarchie des définitions de types de ce schéma. La définition du type ur, dont le nom est anyType, a comme seule caractéristique qu'elle peut agir aussi bien comme définition de types simples que de types complexes, d'après le contexte. Plus précisément, les ·restrictions· de la définition de type ur peuvent elles-mêmes être des définitions de type simple ou complexe.
[Définition :] Une définition de type utilisée comme base d'une ·extension· ou d'une ·restriction· est connue sous le nom de définition du type de base de cette définition.
La définition d'un type simple A est un ensemble d'une part de contraintes mises sur les chaînes de caractères et d'autre part d'informations sur les valeurs qu'elles représentent, applicable à la ·valeur normalisée· d'une unité d'information de type attribut ou élément (à condition que l'élément n'ait pas d'élément enfant). De manière informelle, cela veut dire qu'un type simple ne s'applique qu'à des valeurs d'attributs et au contenu textuel d'éléments.
Chaque définition de type simple, qu'elle soit préfabriquée (c'est à dire, définie dans [XML Schema tome 2 : Types de données]) ou qu'elle soit définie par l'utilisateur, est une ·restriction· de la ·définition d'un type de base· simple. Pour les types primitifs préfabriqués, il s'agit de la version simple de la ·définition du type ur·, dont le nom est anySimpleType. Celui-là, à son tour, est également considéré comme étant une restriction de la ·définition du type ur·. Un type simple peut très bien être constitué de membres étant des listes d'unités elles-mêmes contraintes par d'éventuelles autres définitions de types simples ou de membres définis comme étant le résultat de l'union des ensembles de membres d'autres définitions de types simples. Les définitions des types simples qui sont des listes et des unions sont aussi considérées comme étant des restrictions de ·la définition du type simple ur·.
Pour avoir des informations détaillées sur les définitions de types simples, nous vous renvoyons au chapitre Définitions des types simples (§3.14) et à [XML Schema tome 2 : Types de données]. La dernière référence définit aussi un large inventaire de types simples préfabriqués.
La définition d'un type complexe est un ensemble composé de déclarations d'attributs et d'un type de contenu, applicable respectivement aux [attributs] et aux [enfants] d'une unité d'information de type élément. Le type de contenu peut spécifier que les [enfants] ne contiennent ni unité d'information de type élément ni caractère (cela signifie qu'ils sont vides), ou que leur contenu est une chaîne de caractères d'un type simple particulier ou encore qu'il est constitué d'une séquence d'unités d'information de type élément conforme à un groupe modèle particulier, cela avec ou sans unité d'information de type caractère.
Chaque définition de type complexe est soit
soit
soit
L'extension d'un type complexe est obtenue soit en rajoutant des particules de modèle de contenu à la fin des définitions du modèle de contenu du type d'origine soit en rajoutant des déclarations d'attributs soit les deux.
Remarque : Cette spécification limite l'extension au seul rajout de définitions à la fin de la définition de type d'origine. Cette décision simplifie grandement le développement des applications qui doivent développer les types dérivés des types de base. Il se pourrait que des versions futures de la spécification autorisent d'autres formes d'extensions, nécessitant alors de la part des programmes des transformations plus complexes pour calculer ces types dérivés.
Pour avoir des informations détaillées sur la définition de types complexes, nous vous renvoyons au chapitre Définitions des types complexes (§3.4).
Il y a trois types de composants de déclarations (élément, attribut et notation) qui sont décrits dans les sous-chapitres ci-dessous. Nous présentons également la fonction du groupe de substitution d'élément qui s'utilise pour les déclarations d'éléments.
Une déclaration d'élément est l'association d'un nom avec : la définition
d'un type (simple ou complexe), une valeur par défaut (qui est optionnelle)
et un ensemble (qui peut être vide) de définitions de contrainte d'identité.
L'association est soit de portée globale soit limitée au champ d'application
de la définition de type complexe qui la contient. Une déclaration supérieure
d'élément ayant le nom 'A' est largement comparable à la paire de
déclarations (<!ELEMENT et <!ATTLIST) connue
avec les DTD comme dans l'exemple ci-après, où les définitions des types
associés au nom A se trouvent à la place des trois points :
<!ELEMENT A . . .> <!ATTLIST A . . .>
Les déclarations d'éléments participent à la ·validation· en tant qu'élément de référence servant à ·valider· un groupe modèle quand leurs composants de type et leurs valeurs par défaut sont contrôlés par rapport à une unité d'information de type élément dont le nom et l'espace de noms correspondent et quand est déclenchée la ·validation· de la définition de la contrainte d'identité.
Pour de plus amples informations sur les déclarations d'éléments, reportez-vous au chapitre Déclaration d'élément (§3.3).
En XML 1.0, le nom et le contenu d'un élément doit correspondre à l'élément type référencé dans le modèle de contenu correspondant.
[Définition :] Au travers du nouveau mécanisme des groupes de substitution d'élément, XML Schema fournit un modèle plus puissant supportant la substitution d'un élément nommé par un autre. Toute déclaration supérieure d'élément peut servir d'élément définissant, ou tête, d'un groupe de substitution d'éléments. D'autres déclarations supérieures d'éléments, indépendamment de l'espace de noms cible, peuvent faire partie du groupe de substitution dont le chef de file est cet élément. Dans un modèle de contenu qui y est autorisé, une référence au chef de file ne limite pas la ·validation· à ce seul élément mais l'étend à tous les éléments qui ont un homologue dans le groupe de substitution.
Tous les membres dans ce cas doivent avoir des définitions de types qui sont soit les mêmes que la définition de type de l'élément chef de file ou qui en sont soit des restrictions soit des extensions. Par conséquent, bien que les noms des éléments puissent varier considérablement au fur et à mesure que de nouveaux espaces de noms et membres du groupe de substitution sont définis, le contenu des éléments membres est strictement limité d'après la définition de type de l'élément chef de file du groupe de substitution.
Remarquez que les groupes de substitution d'éléments ne sont pas représentés comme étant des composants séparés. Ils sont spécifiés par le biais de la valeur d'une des propriété des déclarations d'éléments (reportez-vous au chapitre Déclaration d'élément (§3.3)).
Une déclaration d'attribut est une association entre un nom et une définition de type simple, complétée d'une information d'occurrence et (optionnellement) d'une valeur par défaut. L'association est soit globale soit locale à la définition de type complexe qui la chapeaute. Les déclarations d'attributs participent à la ·validation· en tant qu'élément de référence servant à ·valider· la définition d'un type complexe, quand leur occurrence, valeurs par défaut et composants de type sont contrôlés par rapport à une unité d'information de type attribut dont le nom et l'espace de noms correspondent.
Pour avoir des informations détaillées sur ces déclarations d'attributs, référez-vous au chapitre Déclarations d'attributs (§3.2).
Une déclaration de notation est une association entre un nom et un
identifiant de notation. Pour qu'une unité d'information de type attribut
soit ·valide· par rapport à
une définition de type simple de NOTATION, la déclaration de sa
valeur doit avoir été initialement associée à une déclaration de notation.
Pour avoir des informations détaillées sur les déclarations de notations, reportez-vous au chapitre Déclarations des notations (§3.12).
Les composants d'un groupe modèle, d'une particule et d'un caractère générique participent d'une certaine façon à la partie de la définition d'un type complexe qui concerne le contrôle du contenu d'une unité d'information de type élément.
Un groupe modèle est une contrainte exprimée sous la forme d'un fragment de grammaire qui s'applique à des listes d'unités d'information de type élément. Il est constitué d'une liste de particules, comme des déclarations d'éléments, des caractères génériques et des groupes modèles. Il y a trois sortes de groupes modèles :
Pour avoir les informations détaillées sur les groupes modèles, reportez vous au chapitre Groupes modèles (§3.8).
Une particule est un terme de la grammaire des contenus d'éléments qui correspond soit à une déclaration d'élément soit à un caractère générique soit à un groupe modèle et à des contraintes d'occurrence. Les particules participent à la ·validation· en tant qu'élément de référence servant à ·valider· des définitions de types complexes, dans lesquelles leur rôle et de permettre à tout moment la présence de zéro à n unités ou séquences d'information de type élément, en fonction de leurs contenus et des contraintes d'occurrence.
[Définition :] Une particule peut être utilisée dans une définition de type complexe pour contraindre la ·validation· des [enfants] d'une unité d'information de type élément ; une telle particule est appelée modèle de contenu.
Remarque : Les ·modèles de contenu· de XML Schema tome 1 : Structures sont comparables tout en étant plus expressifs à ceux de [XML 1.0 (Second Edition)] ; la nouveauté par rapport à [XML 1.0 (Second Edition)], est que XML Schema tome 1 : Structures applique le principe des ·modèles de contenu· à la ·validation· des modèles de contenu mixte alors que [XML 1.0 (Second Edition)] en limitait l'usage aux seuls contenus constitués uniquement d'éléments.
Pour avoir des informations détaillées sur ces particules, reportez-vous au chapitre Particules (§3.9).
L'utilisation d'un attribut joue un rôle similaire à celui d'une particule mais pour des déclarations d'attributs : une déclaration d'attribut à l'intérieur de la définition d'un type complexe est encapsulée par un attribut utilisé qui permet de spécifier si il est obligatoire ou optionnel et si sa valeur existe par défaut et si elle est fixée.
Un caractère générique est un type spécial de particule qui correspond à des unités d'information de type attribut et élément qui dépendent de leur nom d'espace de noms, indépendamment de leurs noms locaux.
Pour avoir des informations détaillées sur les caractères génériques, reportez-vous au chapitre Caractères génériques (§3.10).
Une définition de contrainte d'identité est une association entre un nom et une ou plusieurs variétés de contraintes d'identités en rapport avec l'unicité et le référencement. Toutes les variétés utilisent des expressions [XPath] pour cibler les unités d'information concernées par les contraintes spécifiques et qui doivent être uniques, former une clé ou être une référence ·valide· à l'intérieur d'un espace spécifié. Une unité d'information de type élément est ·valide· par rapport à une déclaration d'élément ayant de telles contraintes d'identité si et seulement si elles sont satisfaites pour tous les descendants de l'unité d'information élément visés par les contraintes.
Pour avoir des informations détaillées sur les définitions de contrainte d'identité, reportez-vous au chapitre Définitions de la contrainte d'identité (§3.11).
Il y a deux sortes de définitions qui sont pratiques pour permettre la réutilisation de parties de définitions de types complexes : les définitions de groupes modèles et les définitions de groupes d'attributs.
Une définition de groupe modèle est une association entre un nom et un groupe modèle, en permettant ainsi la réutilisation dans plusieurs autres définitions de types complexes.
Pour avoir des informations détaillées sur les définitions des groupes modèles, reportez-vous au chapitre définitions des groupes modèles (§3.7).
Une définition de groupe attribut est une association entre un nom et un ensemble de déclarations d'attributs, en permettant ainsi la réutilisation dans plusieurs autres définitions de types complexes.
Pour avoir des informations détaillées sur ces définitions de groupes d'attributs, reportez-vous au chapitre définitions de groupes d'attributs (§3.6).
Une annotation est une information qui peut être exploitée tout aussi bien par des humains que par un mécanisme mécanique. Mais l'interprétation de ce type d'information n'est pas définie dans cette spécification.
Pour avoir des informations détaillées sur les annotations, reportez-vous au chapitre annotations (§3.13).
La spécification [XML 1.0 (Second Edition)] décrit
deux types de contraintes qui peuvent porter sur des documents XML : l'une
porte sur la qualité de la forme et l'autre sur la validité. De
manière informelle, la contrainte de qualité de la forme est celle
imposée par la définition même de XML (tel que par exemple les règles
d'utilisation des caractères < et > et celles
d'imbrication des éléments) tandis que les contraintes de validité sont des
contraintes supplémentaires qui s'appliquent à la structure du document par
rapport aux règles édictées dans une DTD.
Le chapitre précédent est centré sur les questions de ·validation·, c'est à dire sur les contraintes imposées aux unités d'information spécifiées par les composants de schéma. En fait, cette spécification fournit quatre sortes différentes d'expressions normatives portant sur les composants de schéma, leur représentation XML et leurs contributions à la ·validation· des unités d'information :
Le dernier des points précédents, celui portant sur les contributions à
l'ensemble d'information du schéma, n'est pas aussi nouveau qu'il n'y paraît.
Le processus de validation de XML 1.0 apporte aussi ces compléments
d'information, par exemple en insérant les valeurs par défaut des attributs
initialement absents dans l'instance et en exploitant implicitement les
informations de typage pour la normalisation ou l'accès (en guise d'exemple
pour ce dernier cas, considérez l'effet du type NMTOKENS sur
l'espace blanc des attributs et la sémantique
ID/IDREF). En incluant à cette spécification les
contributions à l'ensemble d'information des schémas, elle rend explicite
certaines dispositions implicites de XML 1.0.
Cette spécification décrit trois niveaux de conformité pour les programmes de traitement validant. Le premier niveau est obligatoire pour tous les programmes. Le support des deux autres dépend des environnements applicatifs pour lesquels le programme est prévu.
[Définition :] Les programmes de traitement qui ont un niveau de conformité minimale doivent complètement et correctement mettre en application les ·Contraintes des composants de schéma·, les ·règles de validation· et les ·contributions à l'ensemble d'information du schéma· contenues dans cette spécification.
[Définition :] Les programmes de traitement qui acceptent les schémas représentés sous la forme de documents XML tels qu'ils sont décrits au chapitre Niveau 2 : documents XML de type schéma, espaces de noms et assemblage (§4.2) sont de plus dits fournir une conformité avec la représentation XML des schémas. Ces programmes de traitement doivent, quand ils traitent des documents de type schéma, complètement et correctement exécuter toutes les ·contraintes de représentation des schémas· décrites dans cette spécification et doivent adhérer exactement aux spécifications du chapitre Détails sur les composants de schéma (§3) pour faire correspondre le contenu de tels documents à des ·composants de schéma· et les utiliser lors de la ·validation· et de ·l'évaluation·.
Remarque : En faisant la distinction entre les exigences de conformité relatives à la syntaxe concrète des documents XML de type schéma, cette spécification admet que les programmes de traitement puissent utiliser des schémas qui sont soit enregistrés sous la forme de représentations binaires optimisées, soit créés dynamiquement en les considérant comme langage de programmation de données structurées soit compilés pour donner des programmes exécutables en C ou Java. De tels programmes de traitement peuvent être dits avoir un niveau de ·conformité minimale· sans être nécessairement en ·conformité avec la représentation XML des schémas·.
[Définition :] les programmes de traitement complètement conforme sont ceux qui permettent de fonctionner en réseau et qui vont au delà de la ·conformité minimale· et de la ·conformité avec la représentation XML des schémas· en étant capables d'aller chercher des schémas sur le World Wide Web d'après la Représentation des schémas sur le World Wide Web (§2.7) et le chapitre sur Comment les définitions des schémas sont repérées sur le Web (§4.3.2). .
Remarque : Bien que cette spécification ne fournisse que ces trois niveaux de conformité en standard, on anticipe le fait que d'autres conventions puissent être établies dans le futur. Par exemple, le World Wide Web Consortium réfléchit à des conventions pour mettre à disposition sur le Web une variété de ressources relatives à des documents et des espaces de noms particuliers. Si de tels développements devaient conduire à de nouvelles formes de représentation des schémas, ne serait-ce que pour pouvoir y accéder à partir du Web, alors de nouveaux niveaux de conformité pourraient être établis et baptisés à ce moment là. Il n'y aura alors pas besoin de modifier ou de republier cette spécification pour définir ces nouveaux niveaux de conformité.
Reportez-vous au chapitre sur les Schémas et les espaces de noms : accès et assemblage (§4) pour une explication plus détaillée des mécanismes supportant ces niveaux de conformité.
Comme cela a été présenté au chapitre Modèle de données abstrait de XML (§2.2), la plupart des composants de schéma ont des ·noms· (ce n'est pas une obligation). Si tous ces noms étaient mis en commun, alors il serait impossible d'avoir, par exemple, une définition de type simple et une déclaration d'élément ayant le même nom "title" en même temps et dans le même ·espace de noms cible·.
Par conséquent [Définition :] Cette spécification introduit la notion d'espace de symboles pour dénoter une collection de noms dans laquelle chacun est unique vis à vis des autres. Un espace de symboles est similaire au concept non-normatif de partition d'espace de noms introduit dans [XML-Namespaces]. Par ·espace de noms cible·, il y a un seul espace symbole distinct des autres par type de composant de définition et de déclaration identifié au chapitre Modèle de données abstrait de XML (§2.2). A l'exception de celles se trouvant à l'intérieur d'un espace de noms cible, les définitions de types simples et complexes partagent un même espace de symboles. Les noms sont uniques à l'intérieur d'un espace de symboles donné mais un même nom peut apparaître dans plusieurs espaces de symboles sans qu'il y ait conflit. Par exemple, le même nom peut apparaître à la fois dans une définition de type et une déclaration d'élément, sans conflit ou relation particulière entre les deux.
Les déclarations d'attributs et d'éléments de portée locale sont des cas
particuliers au regard des espaces de symboles. Chaque définition de type
complexe définit ses propres espaces de symboles pour les déclarations
locales d'attributs et d'éléments, distincts les uns des autres comme de tout
autre espace de symboles. Ainsi, par exemple, deux définitions de types
complexes ayant le même espace de noms cible peuvent contenir toutes les deux
une même déclaration locale d'un attribut de nom non-qualifié
"priority" ou une même déclaration locale d'élément de nom
"address", sans qu'il y ait de conflit ou une relation
nécessaire entre les deux.
La représentation XML de composants de schéma utilise un vocabulaire
identifié par le nom d'espace de noms
http://www.w3.org/2001/XMLSchema. Pour simplifier le texte et
les exemples présents dans cette spécification, on y utilise systématiquement
le préfixe xs: pour faire référence à cet espace de nom ; en
réalité, n'importe quel préfixe pourrait être utilisé.
XML Schema tome 1: Structures a aussi plusieurs attributs
préfabriqués destinés à être utilisés directement dans tout document XML. Ces
attributs sont dans un espace de noms différent, qui a le nom d'espace de
noms http://www.w3.org/2001/XMLSchema-instance. Pour simplifier
le texte et les exemples de cette spécification, on utilise systématiquement
le préfixe xsi: pour référencer cet espace de noms ; en réalité,
n'importe quel préfixe aurait pu être utilisé. Tous les programmes de
traitement des schémas ont des déclarations d'attributs appropriées pour ces
attributs préfabriqués, reportez-vous au chapitre Déclaration d'attribut de l'attribut 'type'
(§3.2.7), Déclaration d'attribut de l'attribut
'nil' (§3.2.7), Déclaration
d'attribut de l'attribut 'schemaLocation' (§3.2.7) et Déclaration d'attribut de l'attribut
'noNamespaceSchemaLocation' (§3.2.7).
xsi:typeLa définition de type simple
(§2.2.1.2) ou la définition de type
complexe (§2.2.1.3) utilisée dans la ·validation· d'un élément est habituellement déterminée par une
référence aux composants de schéma. Une unité d'information de type élément
dans une instance peut, cependant, déclarer explicitement son type en
utilisant l'attribut xsi:type. La valeur de cet attribut est un
·QName· ; reportez-vous au chapitre Interprétation des noms qualifiés (QName) (§3.15.3)
pour connaître la manière dont un ·QName· est associé à une définition de type.
xsi:nilXML Schema tome1 : Structures introduit un mécanisme permettant
d'indiquer explicitement si un élément doit être accepté comme ·valide· quand il est vide même si cela n'est pas exigé par
son type ou même se contente de l'autoriser. Un élément peut être ·valide· tout en n'ayant pas de contenu à condition qu'il
soit porteur de l'attribut xsi:nil ayant la valeur
vrai. Un élément ainsi labellisé doit être vide mais peut être
porteur d'attributs si cela est permis par le type complexe qui lui est
associé.
xsi:schemaLocation,
xsi:noNamespaceSchemaLocationLes attributs xsi:schemaLocation et
xsi:noNamespaceSchemaLocation peuvent être utilisés dans un
document pour fournir des indications concernant l'emplacement physique des
documents contenant les schémas susceptibles d'être utilisés à l'occasion
d'une ·évaluation·.
Reportez-vous au chapitre Comment sont localisées les
définitions de schéma sur le Web (§4.3.2) pour connaître les détails
quant à l'utilisation de ces attributs.
Sur le World Wide Web, les schémas sont conventionnellement représentés
comme des documents XML (ayant de préférence un type MIME
application/xml ou text/xml, mais regardez la
clause 1.1 du chapitre Contraintes et sémantique de l'inclusion (§4.2.1)),
conformes aux spécifications du chapitre Niveau 2 :
Documents de type schéma, espaces de noms et assemblage (§4.2). Pour plus
d'informations sur la représentation et l'utilisation des documents de type
schéma sur le World Wide Web reportez-vous aux chapitres Standards pour la représentation des schémas et
récupération de documents de type schéma sur le Web (§4.3.1) et Comment sont localisées les définitions de schéma sur le
Web (§4.3.2).
Les chapitres qui suivent fournissent tous les détails quant à l'assemblage de tous les composants de schéma, avec leur représentation XML et leurs contributions à ·l'évaluation·. Chaque chapitre est dévolu à un seul composant, au travers de différents sous-chapitres qui sont :
Les sous-chapitres immédiatement ci-dessous introduisent les conventions et la terminologie utilisée tout au long des chapitres sur les composants.
Les composants sont définis au travers de leurs propriétés dont chacune
est à son tour définie en donnant la fourchette de valeurs qu'elle peut
prendre. Cela peut être compris comme définissant un schéma comme étant un
arbre d'objets étiquetés où la racine est un composant schema,
les sommets sont soit un composant de schéma soit un littéral (chaîne de
caractères, booléen, nombre) et où chaque branche étiquetée est une
propriété. Le graphe n'est pas acyclique : aucune copie d'un composant ayant
le même nom et se trouvant dans le même ·espace de symboles· ne peut exister, ce qui impose d'avoir parfois des
chaînes de propriétés ré-entrantes. L'égalité des composants pour les besoins
de cette spécification est toujours définie comme étant l'égalité des noms (y
compris les espaces de noms cibles) à l'intérieur des espaces symboles.
Remarque : Un schéma et ses composants tels que définis dans ce chapitre sont une forme idéalisée de l'information nécessaire à un programme validant : les mises en application n'ont aucune obligation particulière quant à la manière de les fournir. En particulier, aucune implication particulière entre l'inclusion littérale versus l'indirection ne découle de l'utilisation d'un langage tel que "des propriétés . . . ayant . . . des composants comme valeurs".
[Définition :] Tout au long de cette spécification, le terme absent est utilisé comme étant une valeur de propriété distincte pour dénoter l'absence d'utilisation de cette propriété.
Toute propriété qui ne serait pas identifiée comme optionnelle est
obligatoirement présente ; les propriétés facultatives qui ne sont pas
présentes sont sensées être ·absentes·. Toute
propriété identifiée comme ayant un ensemble, un sous-ensemble ou une liste
de valeurs peut avoir une valeur vide sauf si cela est explicitement exclu :
cela n'est pas la même chose que d'être ·absent·. Toute valeur de propriété identifiée comme
sur-ensemble ou sous-ensemble d'un ensemble quelconque peut être égale à cet
ensemble, sauf si un sur-ensemble ou un sous-ensemble propre est
explicitement demandé. Dans cette spécification, on entend par
'string' une séquence de caractères ISO 10646 reconnus comme Caractères XML
légaux dans [XML 1.0 (Second Edition)].
L'objectif principal de XML Schema tome1 : Structures est de
définir un ensemble de composants de schéma qui imposent des contraintes aux
contenus des instances et augmentent les ensembles d'information lors de la
validation ou de l'évaluation. Bien qu'aucune représentation externe des
schémas ne soit obligatoire dans ce but, de telles représentations seront
évidemment largement utilisées. Pour répondre à ce besoin de manière adaptée
et interopérable, cette spécification fournit une représentation normative
des schémas en XML qui se charge de cette question dans chaque cas de
composant de schéma. [Définition :] Un document de cette forme (c'est à
dire une unité d'information de type élément <schema> ) est un document de type
schéma. Tant pour le document de type schéma dans sa globalité que
pour ses constituants, les chapitres ci-dessous définissent des
correspondances entre les unités d'information de type élément (dont les
déclarations sont dans le Schéma des
schémas (§A) et la DTD des schémas
(§G)) et les composants de schéma. Toutes les unités d'information de
type élément de la représentation XML d'un schéma doivent être dans l'espace
de noms des schémas XML, c'est à dire que leur [nom d'espace de
noms] doit être http://www.w3.org/2001/XMLSchema. Bien
qu'une manière commune de créer l'ensemble d'information XML qui est lui-même
ou contient des ·documents de type schéma· sera d'utiliser un programme de validation
lexico-syntaxique XML (parser), cela n'est pas obligatoire : tout mécanisme
capable de construire des ensembles d'informations conformes à ceux définis
dans le dictionnaire terminologique de XML [XML-Infoset] est un point de départ possible.
Deux aspects de la représentation XML des composants présentée dans les chapitres qui suivent sont communs à toutes les représentations :
<annotation> comme
premier enfant à des fins de lisibilité de la documentation et/ou de
traitement par un programme.A chaque sorte de composant de schéma correspond une représentation normative XML. Les chapitres ci-dessous décrivent les correspondances entre les propriétés de chaque sorte de composant de schéma d'un côté et les propriétés des unités d'information de la représentation XML de l'autre, avec des contraintes propres à cette représentation et qui viennent se rajouter à celles du Schéma des schémas (partie normative) (§A).
La forme utilisée pour représenter les correspondances est une relation qui part d'une représentation XML pour aller à un composant de schéma, et le chemin inverse, celui des correspondances à partir du modèle abstrait, peut être construit à partir de là.
En discutant des représentations XML vers les composants de schéma ci-dessous, la valeur de la propriété d'un composant est souvent déterminée par la valeur d'une unité d'information de type attribut qui est elle-même l'un des [attributs] d'une unité d'information de type élément. Puisque les documents de type schéma sont contraints par le Schéma des schémas (§A), il y a toujours une définition de type simple associée à tout élément d'information de type attribut. [Définition :] La phrase valeur réelle est utilisée pour faire référence au membre de l'espace de valeur de la définition de type simple associée à une unité d'information de type attribut qui correspond à sa ·valeur normalisée·. Cela sera souvent une chaîne de caractères, mais peut tout aussi bien être un entier, un booléen, une référence d'URI, etc. Ce terme est aussi occasionnellement utilisé pour ce qui concerne des unités d'information de type élément ou attribut d'un document en cours de ·validation·.
Beaucoup de propriétés ci-après sont susceptibles d'avoir des valeurs contenant d'autres composants de schéma ou des ensembles de composants. Pour les besoins de la clarté du texte, les définitions de ce chapitre supposent que (à moins que la propriété ne soit explicitement identifiée comme facultative) toutes ces possibilités de valeurs sont effectivement présentes. Quand les composants de schéma sont construits à partir de représentations XML qui impliquent une référence par un nom à d'autres composants, la supposition faite ci-dessus peut être violée si une ou plusieurs références ne peuvent pas être ramenées. Cette spécification adresse de manière uniforme la question des composants manquant au chapitre Sous-composants manquant (§5.3) : aucune mention relative à la manière de gérer le cas des composants manquant ne sera trouvée dans les descriptions individuelles des composants ci-après.
Une référence en avant vers des définitions nommées et des déclarations est autorisée, cela se faisant à l'intérieur ou entre des ·documents de type schéma·. Avant que le composant correspondant à la représentation XML contenant une référence en avant soit réellement nécessaire à la ·validation·, un composant de nom approprié peut avoir été rendu disponible pour décharger la référence : reportez-vous au chapitre sur les Schémas et les espaces de noms : accès et assemblage (§4) pour les détails.
Tout au long de cette spécification, [Définition :] la valeur initiale d'une unité d'information de type attribut est la valeur de la [valeur normalisée] de la propriété de cette unité. De manière similaire, la valeur initiale d'une unité d'information de type élément est la chaîne de caractères composée, dans l'ordre, du [code du caractère] de chaque unité d'information de type caractère des [enfants] de cette unité d'information de type élément.
La définition ci-dessus signifie que les commentaires et les instructions de traitement, même au milieu du texte, sont ignorées dans tous les cas de ·validation·.
[Définition :] La valeur
normalisée d'une unité d'information de type attribut ou élément est une
·valeur
initiale· dans laquelle l'espace blanc, si il
existe, a été normalisé d'après la valeur de la facette
whiteSpace de la définition du type simple utilisé dans sa
·validation· :
preservereplace#x9 (tabulation),
#xA (début de ligne) et #xD (retour chariot)
sont remplacées par le code #x20 (espace).collapse#x20 sont
ramenées à un seul #x20, et les espaces initiaux et finaux
sont détruits.Il y a trois règles de validation alternatives qui peuvent fournir un complément nécessaire à ce qui vient d'être écrit, il s'agit des clauses : Attribut localement valide (§3.2.4) (clause 3), Elément localement valide (type) (§3.3.4) (clause 3.1.3) et Elément localement valide (type complexe) (§3.4.4) (clause 2.2).
Ces trois niveaux de normalisation correspondent aux traitements
respectifs de XML 1.0 pour les contenus d'éléments, les contenus d'attributs
de type CDATA et les contenus d'attributs composés d'unités lexicales.
Reportez-vous au chapitre Normalisation des valeurs
d'attributs dans [XML 1.0 (Second Edition)] pour y
retrouver les cas replace et collapse pour les attributs.
Etendre ces cas au contenu des éléments est nécessaire pour garantir une ·validation· uniforme de la sémantique des types simples,
qu'ils soient utilisés pour des valeurs d'attributs comme pour des valeurs de
contenu d'éléments. Faire le traitement deux fois dans le cas des attributs
dont la [valeur
normalisée] a déjà été sujette au remplacement ou déjà compressée (cas
collapse) sur la base de l'information présente dans la DTD est
nécessaire pour garantir un traitement des attributs totalement indépendant
de la capacité réelle ou supposée des outils de production de l'ensemble
d'information à prendre en compte les informations fournies par la DTD.
Remarque : Même quand l'information provenant de la DTD a été strictement respectée et que la normalisation des valeurs d'attributs a été faite, la définition ci-dessus d'une ·valeur normalisée· ne change pas le fait que des normalisations supplémentaires soient nécessaires. C'est le cas par exemple quand des valeurs d'attributs contiennent des références d'entités caractères et que leur remplacement produit des caractères d'espaces blancs autres que ceux se trouvant dans la ·valeur initiale· de l'attribut.
Les déclarations d'attributs servent à :
<xs:attribute name="age" type="xs:positiveInteger" use="required"/>
Le composant de schéma de déclaration d'attribut a les propriétés suivantes :
La propriété {nom} doit correspondre à la partie locale des noms des attributs étant ·validés·.
La valeur de l'attribut doit être conforme à la {définition de type} fournie.
Quand la propriété {espace de noms cible} est présente (elle n'est donc pas ·absente·), elle sert à la ·validation· des unités d'information de type attribut qualifiées par un espace de nom (qui doit être explicitement préfixé d'une forme de type caractère du niveau des documents XML). L'·absence· de cette propriété ·valide· les unités qui ne sont pas qualifiées (c'est à dire sans préfixe).
La propriété {portée} permet de connaître, quand la valeur est global, les déclarations d'attributs disponibles pour une utilisation dans n'importe quelle définition de type complexe, dans tout le schéma. Les déclarations de portée locale sont disponibles pour une utilisation uniquement à l'intérieur des définitions de types complexes identifiées par la propriété {portée}. Cette propriété est ·absente· dans le cas où les déclarations sont à l'intérieur des définitions de groupes d'attributs : leur portée sera déterminée quand elles seront utilisées dans la construction de définitions de types complexes.
{contrainte de valeur}
reproduit les fonctions des valeurs d'attributs par défaut et
#FIXED de XML 1.0 . default spécifie que l'attribut doit
apparaître sans condition particulière dans l'ensemble d'information
résultant de la validation de schéma, la valeur fournie étant celle utilisée
chaque fois que l'attribut n'est pas réellement présent ; fixed
indique que la valeur de l'attribut, si il est présent, doit être égal à la
valeur de la contrainte fournie et, si il est absent, prend la valeur fournie
par défaut. Remarquez que ce sont des valeurs qui sont fournies et/ou
contrôlée et non des chaînes de caractères.
Reportez-vous au chapitre Annotations (§3.13) pour les informations sur le rôle de la propriété {annotation}.
Remarque : Une présentation plus complète et plus formelle de la sémantique des propriétés {nom}, {espace de noms cible} et {contrainte de valeur} est fournie en même temps que d'autres aspects de la ·validation· du type complexe (référez-vous au chapitre Elément localement valide (type complexe) (§3.4.4)).
La spécification [XML-Infoset] fait le
distinguo entre des attributs nommés tels que xmlns ou
xmlns:xsl et les attributs ordinaires, identifiant les deux
premiers comme étant des [attributs d'espace
de noms]. En conséquence, il est inutile et en fait impossible que les
schémas contiennent des déclarations d'attributs correspondant à une telle
déclaration d'espace de noms, reportez-vous pour cela au chapitre Interdiction de xmlns (§3.2.6). Rien n'est fourni dans
cette spécification pour fournir une valeur par défaut à une déclaration
d'espace de noms.
La représentation XML d'un composant de schéma pour une déclaration
d'attribut est l'unité d'information de type élément <attribute> . Elle spécifie
pour un attribut une définition de type simple soit par référence soit
explicitement et peut fournir une information par défaut. Les correspondances
entre la propriété de l'unité d'information et les propriétés du composant
sont les suivantes :
attribute <attribute
default = string
fixed = string
form = (qualified | unqualified)
id = ID
name = NCName
ref = QName
type = QName
use = (optional | prohibited |
required) : optional
{tout attribut ayant un espace de noms différent de celui du schéma . .
.}>
Content: (annotation?, (simpleType?))
</attribute>
| Composant de schéma :Déclaration d'attribut | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
ref est absent, alors, ce cas correspond à l'utilisation de
l'attribut ayant les propriétés suivantes (à moins que
use='prohibited', auquel cas l'unité correspond à rien du tout)
:| Composant de schéma : attribut utilisé | ||||||||
|---|---|---|---|---|---|---|---|---|
|
| Composant de schéma Déclaration d'attribut | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
ref est présent), il correspond à un attribut utilisé avec les
propriétés suivantes (sauf si use='prohibé', auquel cas l'unité
correspond à rien du tout) :| Composant de schéma attribut utilisé | ||||||||
|---|---|---|---|---|---|---|---|---|
|
Les déclarations d'attributs peuvent apparaître au niveau supérieur d'un
document de type schéma ou à l'intérieur d'une définition de types complexes,
soit comme déclaration complète (locale), soit par référence aux déclarations
supérieures, ou à l'intérieur de définitions de groupes d'attributs. Pour
avoir des déclarations complètes, qu'elles soient locales ou supérieures,
l'attribut type est utilisé quand la déclaration fait appel à la
définition d'un type simple préfabriqué ou prédéclaré. Sinon un type anonyme
<simpleType> est
fourni en ligne.
L'option par défaut quand aucune définition de type simple n'est référencée ou fournie est l'utilisation de la simple ·définition du type ur· qui n'impose aucune contrainte du tout.
Les unités d'information de type attribut ·validées· par une déclaration supérieure doivent être qualifiées de