Les schémas XSD

Ils sont plus puissants qu'une DTD pour décrire des documents.
Les catégories sont
  • Un élément racine, xs:schema
  • 3 éléments de déclaration: xs:element, xs:attribute, xs:notation
  • 8 éléments de type: xs:complexContent, xs:complexType, xs:extension, xs:list, xs:restriction, xs:simpleContent, xs:simpleType, xs:union
  • 7 éléments de modèles de contenu: xs:all, xs:any, xs:anyAttribute, xs:attributeGroup, xs:choice, xs:group, xs:sequence
  • 3 éléments de composition externe: xs:import, xs:include, xs:redefine
  • 12 facettes pour types simples: xs:enumeration, xs:fractionDigits, xs:length, xs:max|minExclusive, xs:max|minInclusive, xs:minLength, xs:pattern, xs:totalDigits, xs:whiteSpace
  • 3 éléments de doc: xs:appinfo, xs:annotation, xs:documentation
Un bon exemple de Schéma est celui auquel je contribue actuellement avec le groupe AFNOR pour le LOMFR. La dernière version est mise en ligne sur http://www.cndp.fr/standards/metadonnees/outils/lomfr/lomfr.xsd

Il existe quelques types prédéfinis: anyURI, boolean, dateTime, byte, duration, ID, IDREF, integer, language, name, string...
complextype indique que l'élément a des attributs et/ou des sous-éléments.
simpleContent indique que le contenu de l'élément est un type simple
On peut regroper des attributs similaires avec attributeGroup. attribute group ref="..." pour l'appel et attributeGroup name="..." pour la déclaration.
Les schémas et espaces de nom
  • Dans le doc:
    Faire pointer xmlns: sur le W3c, xsiSchemaLocation="mon_uri URI_du_xsd" xmlns:"mon_uri"
  • Dans le schéma:
    <xs:schema xmlns:xs="le W3c" targetNameSpace="mon_uri" xmlns:local="monURI" (pour les ref locales)>
    elementFormDefault="qualified" AttributeFromDefault"qualified" (vérifient que élément et attrbiuts déclarés localement sont vérifiés par un espace de nom).
mixed: il existe des données textuelles dans le corps de l'élément
sequence: impose un ordre aux éléments
choice: permet d'énumérer des éléments
all: vérifie que les éléments existent sans contrôles leur ordre
group: déclare des séquences d'éléments pouvant se répeter dans le document xml.

Schémas externes
include inclut le schéma comme si totu était dans le même fichier
import: permet d'importer des schémas extérieurs (ex: w3c)

extension et restriction: permet d'étendre des types existants selon un mode ressemblant à la programmation objet. On utilise pour cela xsi:type"le_type_restreint_ou_etendu"
L'attribut final= #all|extension|restriction est l'équivalent de sealed en C#.

Unicité
on utilise unique et key (idem que unique sauf que les valeurs sont obligatoires)

La discussion continue ailleurs

URL de rétrolien : http://www.d-ornano.com/blog-de-marc-hoang/index.php?trackback/30

Fil des commentaires de ce billet