Les schémas XSD
Par Marc Hoang d'Ornano le dimanche 8 avril 2007, 00:02 - Technique - Lien permanent
Ils sont plus puissants qu'une DTD pour décrire des documents.
Les catégories sont
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
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)
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
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).
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)