XML et XSD - Noms d’espaces & Schémas XML - Partie (3)

. 8/13/2011
  • Agregar a Technorati
  • Agregar a Del.icio.us
  • Agregar a DiggIt!
  • Agregar a Yahoo!
  • Agregar a Google
  • Agregar a Meneame
  • Agregar a Furl
  • Agregar a Reddit
  • Agregar a Magnolia
  • Agregar a Blinklist
  • Agregar a Blogmarks


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>