xsd

en-tête
 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > 





déclarer un élément
 <xsd:element name="element" type="type"/> 
name="" le nom de l'élément dans le bloc xml
type="" le type de l'élément prédéfini: type="xsd:string"
défini: type="mon-type"





les types
simples <xsd:simpleType>...</xsd:simpleType>
complexes <xsd:complexType>...</xsd:complexType>





Dérivation de type les types
Nombres et booléens
xsd:boolean true ou false (resp. 1 ou 0)
xsd:byte entier signé sur 8 bits
xsd:unsignedByte entier non signé sur 8 bits
xsd:short entier signé sur 16 bits
xsd:unsignedShort entier non signé sur 16 bits
xsd:int entier signé sur 32 bits
xsd:unsignedInt entier non signé sur 32 bits
xsd:long entier signé sur 64 bits.
xsd:unsignedLong entier non signé sur 64 bits
xsd:integer entier de longueur arbitraire.
xsd:positiveInteger entier strictement positif de longueur arbitraire
xsd:negativeInteger entier strictement négatif de longueur arbitraire
xsd:nonPositiveInteger entier négatif ou nul de longueur arbitraire
xsd:nonNegativeInteger entier positif ou nul de longueur arbitraire
xsd:float nombre flottant sur 32 bits
xsd:double nombre flottant sur 64 bits
xsd:decimal nombre décimal de longueur arbitraire
Les chaînes de caractères
xsd:string chaîne de caractères.
xsd:normalizedString chaîne de caractères ne contenant pas de tabulation, de saut de ligne, ou de retour chariot.
xsd:token comme xsd:normalizedString avec la condition supplémentaire de pas avoir d'espace en début ou en fin de chaîne ou plusieurs espaces consécutifs.
xsd:Name nom XML
Les chaînes de caractères
pour attribut uniquement
xsd:ID nom xml utilisé pour un attribut servant à identifier un élément dans un document XML (contrainte d'unicité)
xsd:IDREF nom XML qui fait référence à une valeur de type xsd:ID existant dans le document
xsd:IDREFS liste de noms XML (références à des identifiants) séparés par des espaces
xsd:NMTOKEN jeton
xsd:NMTOKENS liste de jetons séparés par des espaces
Les dates et heures
xsd:time heure au format hh:mm:ss.
xsd:date date au format YYYY-MM-DD.
xsd:dateTime date et heure au format YYYY-MM-DDThh:mm:ss.
xsd:duration durée spécifiée selon le format PnYnMnDTnHnMnS
– Commence toujours par Pc

– nY, nM, nD spécifient le nombre d'année, mois et jours
– La lettre T est obligatoire si on veut décrire des heures, minutes ou secondes
– nhnMnS spécifient le nombre d'heures, minutes et secondes.
– exemple P8Y4M5D, P7M9DT10H5S et PT3H10S.
xsd:dayTimeDuration durée spécifiée selon le format PnDTnHnMnS.
xsd:yearMonthDuration durée spécifiée selon le format PnYnM comme P1Y6M.
xsd:gYear année au format YYYY.
xsd:gYearMonth année et mois au format YYYY-MM.
xsd:gMonth mois au format MM (de 01 à 12).
xsd:gMonthDay jour et mois au





les types
Les types simples non-prédéfinis (permettent uniquement de décrire des contenus ''texte''.)
restriction <xsd:restriction base="xsd:unsignedByte">
<xsd:minInclusive value="18"/>
</xsd:restriction>
sur une base d'entier non signé on oblige à avoir une valeur minimum de 18
union <xsd:union memberTypes="xsd:integer Infini"/> une union entre des entier et un type infini (le type infini est une restriction de string avec soit +infini ou -infini)
list
Les types complexes
sequence définie une séquence d'éléments qui devras respecter un ordre.
choice <xsd:element ref="rouge"/>
<xsd:element ref="bleu"/>
<xsd:element ref="jaune"/>
précise que parmis les éléments enfants un seul éléments peut apparaitre (attnetion ici ref appel à un élément complexe enfant de la racine)
all n'importe quel ordre et que chaque élément enfant peut apparaître zéro ou une fois
Les contenues mixtes
mixed="true" <livre>
titre : <titre>
The shortest book ever</titre>,
Auteur : <auteur>Duschmol</auteur>.
Contenu : <contenu> :-) </contenu>
</livre>
chaque éléments fils d'un élément valide pour X peut être entouré de texte autre que des caractères d'espacement.
vide <xsd:element name="vide" type="Vide"/>
<xsd:complexType name="Vide>
</xsd:complexType>
une valise de type < vide/> est considéré comme un contenue complexe





les attributs
description interne <xsd:attribute name="entier" type="xsd:integer"/>
description externe <xsd:attribute name="listeEntiers">
<xsd:simpleType>
<xsd:list itemType="xsd:integer"/>
</xsd:simpleType>
</xsd:attribute>
use="" use=required: obligatoire
use=optional : optionelle
use=prohibited : interdit
default='' permet de donner une valeur par défault





Dérivation de type
extension <!-- Type complexe dérivé à contenu simple -->
<xsd:complexType ...>
<xsd:simpleContent>
<!-- Extension -->
...
</xsd:simpleContent>
</xsd:complexType>
<!-- Type complexe dérivé à contenu complexe--><xsd:complexType ...>
<xsd:complexContent>
<!-- Extension -->
...
</xsd:complexContent>
</xsd:complexType>
nb: L'extension d'un type simple est le seul cas parmi les dérivations, que sont la restriction et l'extension, où le type résultat peut changer
restriction <xsd:simpleType ...>
<!-- restriction -->
...
</xsd:complexType>
<xsd:complexType ...>
<xsd:simpleContent>
<!-- restriction -->
...
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType ...>
<xsd:complexContent>
<!-- restriction -->
...
</xsd:complexContent>
</xsd:complexType>
restriction par borne <xs:restriction base="xsd:date">
<xs:minExclusive value="2019-12-01"/>
</xs:restriction>
uniquement aux types numériques et types dates via les éléments minInclusive, maxInclusive, minExclusive et maxExclusive
restriction par énumération <xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Audi"/>
<xsd:enumeration value="Golf"/>
<xsd:enumeration value="BMW"/>
</xsd:restriction>
</xsd:simpleType>
à tous les types simples
restriction par motif <xsd:element name="password">
<xsd:simpleType>
<xsd:restriction base="xs:string">
<xsd:pattern value="[a-zA-Z0-9]{8}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
à tous les types simples
restriction par longueur (xsd:length, xsd:minLength ou xsd:maxLength) <xsd:element name="password">
<xsd:simpleType>
<xsd:restriction base="xs:string">
<xsd:minLength value="6"/>
<xsd:maxLength value="12"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
uniquement aux types chaîne et au type contruit via l'opérateur xsd:list
contraintes d'unicité xsd:key xsd :selector : pour indiquer sur quels éléments porte la contrainte
xsd :field pour indiquer ce qui doit être unique
<xsd:element name="bibliothèque" type="Bibliothèque">
<xsd:key name="unicité">
<xsd:selector xpath="livre"/>
<xsd:field xpath="@titre"/>
</xsd:key>
</xsd:element>
contraintes d'existance xsd:keyref xsd :name le nom de la contrainte
xsd:ref le nom de l'element xsd:key auquel il fait reférence
(refére ce à l'exeple du sessus)<xsd:keyref name="existence" refer="unicité">
<xsd:selector xpath=".//ref_livre"/>
<xsd:field xpath="@ref"/>
</xsd:keyref>