Schémas XML : XSD / Elements (XSD : Elements)
* Syntaxe
< xsd:element name="nom_element" type="type_element">
- nom_element : le nom du nœud
- Type_element: le type de données de l’élément (chaines de caractéres, entier, date, …)
* Exemples :
< xsd:element name="date-naissance" type="xsd:date">
< xsd:element name="nombre-enfants" type="xsd:integer">
< xsd:element name="prenom" type="xsd:string">
* Syntaxe Valeur / Valeur par défaut ...
< xsd:element name="nom_element" type="type_element"
default="valeur par defaut">
< xsd:element name="nom_element"
type="type_element"
fixed="valeur figée">
- default: spécifie (en absence de cet élément) la valeur par défaut
- fixed:Spécifie une valeur fixe égale à "valeur figée"
* Exemples :
< xsd:element name="date-naissance" type="xsd:date" default="01/01/1990" >
< xsd:element name="nombre-enfants" type="xsd:integer" fixed="0" >
Schémas XML : XSD / Elements (XSD : Eléments / Types des éléments)
* Prédéfinis
- Les schémas possèdent de nombreux types prédéfinis :
» Certains, comme xsd:int et xsd:float, proviennent des langages de programmation.
» Certains, comme xsd:date et xsd:time, sont inspirés de normes ISO.
» et d’autres, comme xsd:ID, sont hérités des DTD.
* Propriétaire / Personnalisé
Schémas XML : XSD / Elements (XSD : Eléments / Types des éléments)
* Types Numériques
- xsd:boolean
» Valeur booléenne avec true ou 1 pour vrai et false ou 0 pour faux.
- xsd:int
» Nombre entier signé sur 32 bits
- xsd:short
» Nombre entier signé sur 16 bits
- xsd:byte
» Nombre entier signé sur 8 bits
- xsd:long
» Nombre entier signé sur 64 bits.
* Types Numériques
- xsd:integer
» Nombre entier sans limite de précision. Ce type n'est pas primitif et dérive du type xsd:decimal.
- xsd:positiveInteger
» Nombre entier strictement positif sans limite de précision
- xsd:negativeInteger
» Nombre entier strictement négatif sans limite de précision
- xsd:float
» Nombre flottant sur 32 bits conforme à la norme IEEE 754 [ ]
- xsd:double
» Nombre flottant sur 64 bits conforme à la norme IEEE 754 [ ]
- xsd:decimal
» Nombre décimal sans limite de précision
* Types Chaines de caractères
- xsd:string
» Chaîne de caractères composée de caractères Unicode
- xsd:normalizedString
» Chaîne de caractères normalisée contenant pas de : tabulation / de saut de ligne / de retour chariot .
- xsd:Name
» Nom XML
- xsd:language
» Code de langue sur deux lettres de la norme ISO 639 comme fr ou en éventuellement suivi d'un code de pays de la norme ISO 3166 comme en-GB.
- xsd:anyURI
» Une URI comme http://www.fsts.zadhiri.ma/~cours/.
* Types Date & Heures
- xsd:time
» Heure au format hh:mm:ss[.sss][TZ],
exemple 14:07:23.
partie .sss des secondes est optionnelle. les autres champs sont obligatoires.
peut être suivie d'un décalage horaire TZ qui est soit Z pour le temps universel soit un décalage commençant par + ou - comme -07:00.
- xsd:date
» Date au format YYYY-MM-DD,
exemple 2008-01-16.
les champs sont obligatoires.
- xsd:dateTime
» Date et heure au format YYYY-MM-DDThh:mm:ss,
exemple 2008-01-16T14:07:23.
les champs sont obligatoires.
* Types Hérités des DTD
- xsd:ID
» nom XML identifiant un élément
- xsd:IDREF
» référence à un élément par son identifiant
- xsd:IDREFS
» liste de références à des éléments par leurs identifiants
- xsd:ENTITY
» entité externe non XML
- xsd:ENTITIES
» liste d'entités externes non XML séparés par des espaces
Schémas XML : XSD / Elements (XSD : Eléments / Types Simples)
* Les types simples définissent uniquement des contenus textuels.
* Ils peuvent être utilisé pour les éléments ou les attributs.
* Ils sont introduits par l'élément xsd:simpleType.
* Il peut aussi être construit par union d'autres types simples ou par l'opérateur de listes.
* Les types simples / Déclaration :
<xsd:simpleType name="Byte">
…
</xsd:simpleType>
* Au lieu de juste PCDATA et CDATA:
<xsd:element name="prix" type="xsd:float"/>
Schémas XML : XSD / Elements (XSD : Eléments / Opérateurs de séquence)
* Les types complexes définissent
- des contenus purs (constitués uniquement d'éléments),
- des contenus textuels ou
- des contenus mixes
* Tous ces contenus peuvent comprendre des attributs. Les types complexes peuvent seulement être utilisés pour les éléments.
* TYPES COMPLEXES
< !-- Type explicite -->
<xsd:complexType ...>
< !-- Construction du type avec xsd:sequence, xsd:choice ou xsd:all -->
...
< /xsd:complexType>
* Contenu mixte
<xsd:element name="person">
<xsd:complexType mixed="true">
<xsd:sequence>
<xsd:element name="firstname" type="xsd:string"/>
<xsd:element name="lastname" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
< /xsd:element>
* Contenu mixte
<person>
Prénom : <firstname>Albert</firstname>,
Nom : <lastname>Einstein</lastname>.
< /person>
* Opérateurs de sequences
- L'opérateur xsd:sequence définit un nouveau type formé d'une suite des éléments en séquence ordonnée.
- C'est l'équivalent de l'opérateur ',' des DTD.
En DTD : <!ELEMENT livre (titre, auteur, isbn)>
Equivaut à en XSD :
< xsd:element name="livre">
< xsd:complexType>
<xsd:sequence>
<xsd:element name="titre" type="xsd:string"/>
<xsd:element name="auteur" type="xsd:string"/>
<xsd:element name="isbn" type="xsd:string"/>
<xsd:sequence>
< xsd:complexType/>
< /xsd:element>
Schémas XML : XSD / Elements (XSD : Eléments / Opérateurs de choix)
* Opérateurs de choix
- L'opérateur xsd:choice définit un nouveau type formé d'une suite
des éléments énumères de choix.
- C'est l'équivalent de l'opérateur '|' des DTD.
En DTD :
<!ELEMENT publication (livre | article | rapport)>
Equivaut à en XSD :
<xsd:element name="publication">
< xsd:complexType>
<xsd:choice>
<xsd:element name="livre" type="xsd:string">
<xsd:ele ment name="article" type="xsd:string">
<xsd:element name="rapport" type="xsd:string">
</xsd:choice>
< xsd:complexType>
< /xsd:element>
Schémas XML : XSD / Elements (XSD : Eléments / Opérateurs d’ensemble)
* L'opérateur xsd:all n'a pas d'équivalent dans les DTD. Il définit un nouveau type dont chacun des éléments doit apparaître une fois dans un ordre quelconque.
* Exemple :
<xsd:element name="livre">
<xsd:complexType>
<xsd:all>
<xsd:element name="titre"type="xsd:string"/>
<xsd:element name="auteur"type="xsd:string"/>
<xsd:element name="annee"type="xsd:string"/>
<xsd:element name="editeur" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
< /xsd:element>
* Exemple :
<?xml version="1.0" encoding="iso-8859-1"?>
< bibliographie>
<livre lang="fr">
<auteur>Alain Michard</auteur>
<titre>XML langage et applications</titre>
<editeur>Eyrolles</editeur>
<annee>2001</annee>
</livre>
<livre lang="en">
<titre>Designing with web standards</titre>
<auteur>Jeffrey Zeldman</auteur>
<annee>2003</annee>
<editeur>New Riders</editeur>
</livre>
...
< /bibliography>
Schémas XML : XSD / Elements (XSD : Eléments / Opérateurs d’union)
* L'opérateur xsd:union définit un nouveau type simple dont les valeurs sont celles des types listés dans l'attribut memberTypes.
* Exemple :
<xsd:simpleType name="IntegerType">
<xsd:union memberTypes="xsd:nonPositiveInteger xsd:nonNegativeInteger">
< /xsd:simpleType>
Schémas XML : XSD / Elements (XSD : Eléments / Opérateurs de liste)
* L'opérateur xsd:list définit un nouveau type simple dont les valeurs sont les listes de valeurs du type simple donné par l'attribut itemType.
* Il s'agit uniquement de listes de valeurs séparées par des espaces.
* Ces listes sont souvent utilisées comme valeurs d'attributs.
* Exemples :
<!-- Type pour les listes d'entiers -->
<xsd:simpleType name="IntList">
<xsd:list itemType="xsd:integer"/>
< /xsd:simpleType>
< !-- Type pour les listes de 5 entiers -->
<xsd:simpleType name="IntList5">
<xsd:restriction base="IntList">
<xsd:length value="5"/>
</xsd:restriction>
< /xsd:simpleType>
* Exemple : Une liste d ’octets :
< xsd:simpleType name="numéroDeTéléphone">
<xsd:list itemType="xsd:unsignedByte"/>
< /xsd:simpleType>
< xsd:element name="téléphone" type="numéroDeTéléphone">
< téléphone>04 92 38 77 77</téléphone>
Schémas XML : XSD / Elements (XSD : Eléments / Indicateurs d’occurence)
* Les attributs minOccurs et maxOccurs permettent de préciser le nombre minimal ou maximal d'occurrences d'un élément ou d'un groupe.
* Ils sont l'équivalent des opérateurs ?, * et + des DTD.
* Ils peuvent apparaître comme attribut des éléments xsd:element, xsd:sequence, xsd:choice et xsd:all.
* L'attribut minOccurs prend un entier comme valeur.
* L'attribut maxOccurs prend un entier ou la chaîne unbounded comme valeur pour indiquer qu'il n'y a pas de nombre maximal.
* La valeur par défaut de ces deux attributs est la valeur 1.
* Exemple :
EN DTD :
<!ELEMENT elem (elem1, elem2?, elem3*) >
EN XSD : <xsd:element name="elem">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="elem1"/>
<xsd:element ref="elem2" minOccurs="0"/>
<xsd:element ref="elem3" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
< /xsd:element>
0 commentaires:
Enregistrer un commentaire