XML et DTD - Partie (2)

. 8/12/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


DTD : Declaration

* DTD interne :
<!DOCTYPE root-element [ declarations ]>
< !DOCTYPE simple [
   <!ELEMENT simple (#PCDATA)>
]>


* DTD externe :
UR L : <!DOCTYPE bibliography SYSTEM "bibliography.dtd">
Fichier local : <!DOCTYPE bibliography SYSTEM "bibliography.dtd">


DTD : Construction ...


* Du point de vue d'une DTD, un document XML est constitué des blocs de données suivants:
  - Éléments
  - Balises
  - Attributs
  - Entités
  - Données brutes PCDATA
  - CDATA


DTD : Exemple

<!ELEMENT (livre+)>
< !ELEMENT livre (titre,isbn,auteurs,description?,prix)>
< !ELEMENT auteurs (nom_auteur+)>
< !ELEMENT titre (#PCDATA)>
< !ELEMENT isbn (#PCDATA)>
< !ELEMENT auteur (#PCDATA)>
< !ELEMENT description (#PCDATA)>
< !ELEMENT prix EMPTY>
< !ATTLIST prix CanCDATA #REQUIRED>


DTD : ELEMENTS (Déclaration des éléments)

* Syntaxe :
   
    <!ELEMENT element regexp>

  - Le nom de l'élément est donné par l'identifiant element et l'expression rationnelle regexp décrit les suites autorisées d'éléments dans le contenu de
l'élément.
  - Cette expression rationnelle est construite à partir des noms d'éléments en utilisant les opérateurs ',', '|', '?','*' et '+' ainsi que les parenthèses '(' et ')' pour former des groupes.


Opérateur                Signification
       ,                        Mise en séquence
       |                        Choix
       ?                        0 ou 1 occurence
       *                        Itération (nombre quelconque d'occurences)
       +                       Itération stricte (nombre non nul d'occurences)


* Syntaxe :
   
       <!ELEMENT nom-élément contenu-élément>

  - nom-élément est le nom de l'élément;
  - contenu-élément indique le type de données ou les éléments qui doivent ou peuvent être imbriqués.


* Exemple :

< !ELEMENT NOM_PERSONNE (NOM,PRENOM+)>
< !ELEMENT NOM (#PCDATA)>
< !ELEMENT container ANY>
< !ELEMENT BR EMPTY>


Déclaration de structure d'élément

* Séquence
        < !ELEMENT HTML (HEAD,BODY)>

* Choix
        < !ELEMENT ENFANT (FILLE | GARCON)>
* Indicateur d'occurrences

   
1       HEAD
   ?       0 ou 1 e-mail?
   *       0 ou plusieurs TELEPHONE*
   +       1 ou plusieurs PRENOM+

Déclaration des éléments

* Exemples:

       <!ELEMENT elem (elem1, elem2, elem3)>
  - elem doit contenir un élément elem1, un élément elem2 puis un élément elem3 dans cet ordre.

       <!ELEMENT elem (elem1 | elem2 | elem3)>
  - elem doit contenir un seul des éléments elem1, elem2 ou elem3.

       <!ELEMENT elem (elem1, elem2?, elem3)>
  - elem doit contenir un élément elem1, un ou zéro élément elem2 puis un élément elem3 dans cet ordre.

       <!ELEMENT elem (elem1, elem2*, elem3)>
  - elem doit contenir un élément elem1, une suite éventuellement vide d'éléments elem2 et un élément elem3 dans cet ordre.

       <!ELEMENT elem (elem1, (elem2 | elem4), elem3)>
  - elem doit contenir un élément elem1, un élément elem2 ou un élément elem4 puis un élément elem3 dans cet ordre.