XML Schema

{{#ifeq:||Un article de Ziki, l'encyclopédie libre.|Une page de Ziki, l'encyclopédie libre.}}
Révision datée du 22 février 2021 à 17:50 par >CodexBot (bot [0.9] 📗 Amélioration bibliographique 1x : +lieu, wikif, ©BnF...)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Modèle:Infobox Format de données Modèle:Lang, publié comme recommandation par le W3C en mai 2001, est un langage de description de format de document XML permettant de définir la structure et le type de contenu d'un document XML. Cette définition permet notamment de vérifier la validité de ce document.

Il est possible de décrire une organisation de vocabulaires d'origines différentes, par l'usage des espaces de noms. Il est possible de combiner les schémas eux-mêmes, et d'exprimer une combinaison pour le document contenu, comme quelqu'un qui parlerait de géographie et de sociologie dans un même texte.

Il est également possible, après une validation, de savoir avec quelle règle une information particulière a été testée : il s'agit du jeu de validation post-Modèle:Lang, ou PSVI (Modèle:Lang).

Une définition se compose d'un ou plusieurs documents XML, usuellement nommée (Modèle:Lang en anglais, ou fichier XSD).

Une instance d'un Modèle:Lang est un peu l'équivalent d'une définition de type de document (DTD). Modèle:Lang amène cependant plusieurs différences avec les DTD : il permet par exemple de définir des domaines de validité pour la valeur d'un champ, alors que cela n'est pas possible dans une DTD ; en revanche, il ne permet pas de définir des entités ; Modèle:Lang est lui-même un document XML, alors que les DTD sont des documents SGML.

Ce langage de description de contenu de documents XML est lui-même défini par un schéma, dont les balises de définition s'auto-définissent (c'est un exemple de définition récursive)<ref>Modèle:Lang</ref>.

La recommandation du W3C 1.0 se compose d'un document de présentation (non normatif), d'un document précisant comment définir la structure, et d'un document précisant comment définir les données. La dernière édition, de version 1.1, de cette recommandation, a été publiée en Modèle:Date-.

Modèle de Modèle:Lang

La recommandation spécifie la validation des documents XML à partir d'un modèle abstrait ; elle en fournit le format XML.

Pour ce modèle abstrait, un schéma est un ensemble de composants, tels que :

  • la déclaration d'éléments (la notion d'éléments vient de la recommandation XML),
  • la déclaration d'attributs (qui vient aussi de la recommandation XML),
  • la définition de types simples (valeurs constituées uniquement à partir d'une chaîne de caractères),
  • la définition de types complexes (valeurs constituées d'attributs et d'autres valeurs).

Elle introduit également le type anyType (n'importe quel type), base de tous les types utilisés.

Chaque composant est encadré par une unité d'information, au sens de la recommandation XML Information Set (dite Infoset) du W3C.

Pour ce qui est de l'usage, Modèle:Lang permet de définir éléments et types de valeur soit nommément, soit localement à un contexte nommé. La combinaison de ces deux modes permet de définir quatre techniques : celle dite des poupées russes (on décrit les éléments en les emboîtant les uns dans les autres), celle des tranches de salamis (définitions globales des éléments, mais locale des types), des stores vénitiens (définition locales des éléments, mais globales des types), et du jardin d'Eden (définition globale des éléments et des types)<ref>{{#invoke:Langue|indicationDeLangue}} Modèle:Lang et {{#invoke:Langue|indicationDeLangue}} Modèle:Lang Russian Doll, {{#invoke:Langue|indicationDeLangue}} Salami Slice, {{#invoke:Langue|indicationDeLangue}} Venetian Blind et {{#invoke:Langue|indicationDeLangue}} Garden of Eden</ref>.

Modèle:Lang détermine l'unicité comme une combinaison de nœuds, relativement à un contexte, par rapport à leurs composants. Ainsi, on peut par exemple affirmer et vérifier qu'une personne est unique, dans le contexte d'un annuaire, par rapport à son nom et son prénom<ref>Modèle:Ouvrage</ref>.

Types de données

Fichier:Xmldatatypes.svg
Arborescence des types de données

Les types de données intégrés sont<ref>Modèle:Lang</ref> :

  • string
    • normalizedString, basé sur string
      • token, basé sur normalizedString
        • Modèle:Lang, basé sur token
        • NMTOKEN, basé sur token, et duquel dérive NMTOKENS
        • Name, basé sur token
          • NCName, basé sur Name
            • ID, basé sur NCName
            • IDREF, basé sur NCName, et duquel dérive IDREFS
            • ENTITY, basé sur NCName, et duquel dérive ENTITIES
  • duration
  • dateTime
  • date
  • time
  • gYear
  • gYearMonth
  • gMonth
  • gMonthDay
  • gDay
  • boolean
  • NOTATION
  • Qname (Nom Qualifié<ref>QName</ref>)
  • anyURI
  • base64Binary
  • hexBinary
  • float
  • double
  • decimal
    • integer, basé sur decimal
      • long, basé sur integer
        • nonNegativeInteger, basé sur long
          • positiveInteger, basé sur nonNegativeInteger
          • unsignedLong, basé sur nonNegativeInteger
            • unsignedInt, basé sur unsignedLong
              • unsignedShort, basé sur unsignedInt, et duquel dérive unsignedByte
        • int, basé sur long
          • short, basé sur int, et duquel dérive byte
      • nonPositiveInteger, basé sur integer, et duquel dérive negativeInteger

Exemple

Un exemple de fichier XSD (personne.xsd): <syntaxhighlight lang="xml">

 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="personne">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="nom" type="xs:string" />
         <xs:element name="prenom" type="xs:string" />
         <xs:element name="date_naissance" type="xs:date" />
       </xs:sequence>
     </xs:complexType>
   </xs:element>
 </xs:schema>

</syntaxhighlight>

Suivi d'un fichier XML valide :

<syntaxhighlight lang="xml">

 <?xml version="1.0" encoding="UTF-8"?>
 <personne xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="personne.xsd">
   <nom>De Latour</nom>
   <prenom>Jean</prenom>
   <date_naissance>1967-08-13</date_naissance>
 </personne>

</syntaxhighlight>

Mise en œuvre du Dublin Core

Modèle:Article détaillé Modèle:Lang correspond à un haut niveau de formalisation dans les schémas de classification. Modèle:Lang permet d'implémenter le standard Dublin Core de métadonnées.

Voir : Modèle:Lang

Les noms d'éléments sont indiqués de la façon suivante :

<xs:Modèle:Lang type="elementType" />
<xs:Modèle:Lang type="elementType" />
<xs:Modèle:Lang type="elementType" />
<xs:Modèle:Lang type="elementType" />
<xs:Modèle:Lang type="elementType" />
<xs:Modèle:Lang type="elementType" />
<xs:Modèle:Lang type="elementType" />
<xs:Modèle:Lang type="elementType" />
<xs:Modèle:Lang type="elementType" />
<xs:Modèle:Lang type="elementType" />
<xs:Modèle:Lang type="elementType" />
<xs:Modèle:Lang type="elementType" />
<xs:Modèle:Lang type="elementType" />
<xs:Modèle:Lang type="elementType" />
<xs:Modèle:Lang type="elementType" />

Exemple d'utilisation

Modèle:Lang est utilisé conjointement avec les formulaires XForms pour valider les données dès la saisie.

Historique

Modèle:Lang est l'aboutissement de diverses propositions venant essentiellement de Microsoft en coopération avec l'université d'Édimbourg en 1998. Il trouve son origine dans le langage de description SGML. Les DTD ayant trouvé leurs limites, Microsoft proposa d'utiliser XML pour décrire des documents XML avec des formats comme XML-Data ou Modèle:Lang<ref>{{#invoke:Langue|indicationDeLangue}} Modèle:Lang</ref> et reçut l'appui de l'université de Darmstadt (Allemagne) en 1999. L'ensemble des propositions convergèrent vers une première spécification de Modèle:Lang début Modèle:Date-<ref>Le W3C recommande Modèle:Lang, Communiqué de presse du W3C, 2 mai 2001</ref>.

Notes et références

Modèle:Références

Bibliographie

  • Les web services. Techniques, démarches et outils XML, WSDL, SOAP, UDDI, RosettaNet, UML. Hubert Kadima, Valérie Monfort, Dunod, 2003.

Voir aussi

Modèle:Autres projets

Articles connexes

Liens externes

Modèle:Palette Modèle:Portail