Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Module
« Les technologies du Web »
Responsable : Abdelmajid DARGHAM
Licence fondamentale SMI
Semestre 5
Année universitaire 2008/2009
Deuxième Partie :
XML, XPath & XSLT
Chapitre 4 : Langage XML
Sommaire
�Introduction à XML
�Documents XML
�DTD
�Espaces de noms
Introduction à XML� Limites du langage HTML :
� HTML est formé d’un ensemble prédéfini de balises : <html>, <body>, <p>, <img>, 0etc.
� La signification de chaque balise HTML est fixée par la norme.
� Le HTML mélange des balises à caractère sémantique avec d’autres à caractère présentation et de mise en page.
� Les liens HTML sont très simples.
Introduction à XML� Le langage XML :
� XML se réfère à eXtensible Markup Language.
� Les balises XML sont personnalisables : l’utilisateur défini à son goût ses propres balises.
� La signification d’une balise XML est laissée àson auteur.
� Le langage XML n’utilise que des balises sémantiques : pas de balises de mise en forme.
� XML est un méta-langage : il permet de créer d’autres langages de balisage.
Introduction à XML� Les atouts du langage XML :
� Extensibilité :
• Possibilité de définir des éléments spécifiques pour chaque composant identifiéd’une information structurée.
� Structure d’arbre :
• Les éléments sont organisés dans une structure arborescente.
� Données purement textuelles :
• XML ne contient que des éléments décrits sous un format textuel très simple.
Introduction à XML� Les atouts du langage XML :
� Structures types modulaires et réutilisables :
• Grâce au DTD (Document Type Definition), XML permet de définir de telles structures types des éléments.
� Contrôle de validité :
• Possibilité d’analyse lexicale, syntaxique et même sémantique des documents XML se conformant à une structure type.
� Standard d’échange de documents sur le Net
Introduction à XML�Quelques applications XML :
� MathML : • Langage XML qui permet de représenter des
expressions mathématiques.� SVG (Scalable Vector Graphics) :
• Dérivé de XML permettant de créer et de visualiser des graphiques structurés.
� SMIL (Synchronised Multimedia IntegrationLanguage) : • Langage XML permettant de représenter et
d’échanger des documents multimédias dynamiques synchrones.
Introduction à XML�Quelques applications XML :
� RDF (Ressource Description Framework) :
• Langage XML qui permet de définir des relations très complexes entre des documents ou des données.
� XHTML (eXtensible HTML) :
• Est une redéfinition de HTML sous forme de dialecte XML.
Introduction à XML�Quelques technologies liées à XML :
� XPath :
• Langage de description des chemins dans un arbre XML.
� XSLT :
• Langage de transformation des documents XML vers d’autres formats (HTML, PDF, Word, Excel, 0etc).
� XPointer :
• Langage pour désigner un fragment de document XML.
Introduction à XML�Quelques technologies liées à XML :
� XLink : • Langage qui permet de créer des liens entre
fichiers XML ou portions de fichiers XML (grâce à XPointer).
� XQuery : • Langage qui permet d'extraire des
informations d'un document XML. Il permet également d'effectuer des calculs complexes à partir des informations extraites et de reconstruire de nouveaux documents ou fragments XML.
Documents XML�Classes des documents XML :
� Les documents bien formés : • Un document XML est « bien formé » s’il
obéit aux règles syntaxiques du langage XML.
� Les documents valides : • Un document XML est « valide » s’il est
d’abord bien formé, et de plus obéit à une structure type définie explicitement dans une DTD.
Documents XML�Structure générale d’un document XML :
� Un prologue : • Facultatif, mais conseillé.
� Un arbre d’éléments : • Contenu du document XML.
� Commentaires : • Facultatifs.
� Instructions de traitement : • Facultatifs.
Documents XML� Le prologue :
� La déclaration minimale : <?xml version = '1.0' ?>
� Autres attributs : <?xml version = '1.0'
encoding = 'UTF-8'
standalone = 'yes' ?>
� encoding : spécifie le jeu de caractères utilisés pour coder les données en XML. Par défaut, c’est UTF-8.
� standalone : spécifie si un DTD externe est requis pour le document XML (sinon, 'yes').
Documents XML� Les éléments :
� La construction syntaxique de base d'un document XML est un élément.
� Un élément dans un document XML est délimitépar une balise de début et une balise de fin.
� Syntaxes de définition d’un élément XML :•<tagName></tagName>
•<tagName/>
•<tagName>children</tagName>
Documents XML� Les éléments :
� Exemple :<Personne>
<Nom>Munier</Nom>
<Prenom>Alix</Prenom>
<Age>45</Age>
</Personne>
Documents XML� Les éléments :
� Règles :• Le nom de la balise d’un élément doit
commencer par une lettre.• Il ne contient que des lettres, des chiffres et
les caractères « - », « _ » ou « . ».� Les sections CDATA :
• Permettent d'indiquer à l'analyseur qu'il n'y a pas de balisage dans les caractères contenus dans ces sections :
<![CDATA[Ceci est un texte arbitraire <avec> un ]]>
Documents XML� Les éléments vides :
� Exemples :<personne>
<nom>Munier</nom>
<prenom>Alix</prenom>
<age>45</age>
<adresse></adresse>
<situation marie = "oui"/>
</personne>
Documents XML� Les attributs d’éléments :
� Les éléments XML peuvent avoir des attributs.� Un attribut doit être indiqué dans une balise de
début.� Il doit aussi avoir une valeur donnée entre " " ou
bien entre ' '.� Exemple :
<personne nationnalite = "MA">
<nom initiale = 'A.'>Saad</nom>
<age>20</age>
</personne>
Documents XML�Règles concernant les documents XML :
� Tout élément fils est complètement inclus dans son père : impossible de recouvrer des éléments. Ainsi, le document suivant n’est pas bien formé :
<para>Voici un petit paragraphe.<note> remarque concernant</para><para>Ceci est un autre petit paragraphe</para></note>
Documents XML�Règles concernant les documents XML :
� Il existe dans un document un et un seul élément père qui contient tous les autres, c’est l’élément racine. Ainsi, le document suivant n’est pas bien formé :
<voiture couleur = 'rouge'>
<marque>Peugeot 205</marque>
</voiture>
<voiture couleur = 'bleu'>
<marque>Renault 19</marque>
</voiture>
Documents XML�Un exercice corrigé :
� Créer un document XML pour marquer les valeurs nutritives des tomates.
� Voici les informations à transformer en fichier XML :
Tomate confite (à l’huile) : Lipides (33%), Glucides (55%), Protéines (12%).
Tomate rouge (conserve) : Lipides (2%), Glucides (87%), Protéines (11%).
Tomate verte crue : Lipide (3%), Glucides (78%), Protéines (18%).
Documents XML�Une solution :
<?xml version = '1.0' ?><tomate><confite>
<lipides>33%</lipides><glucides>55%</glucides><proteines>12%</proteines>
</confite><rouge>
<lipides>2%</lipides><glucides>87%</glucides><proteines>11%</proteines>
</rouge>
Documents XML�Une solution :
<verte><lipides>3%</lipides><glucides>78%</glucides><proteines>18%</proteines>
</verte></tomate>
Documents XML�Affichage du document dans un navigateur :
Documents XML� Les commentaires dans XML :
� Il est possible de définir des commentaires dans un document XML.
� Un commentaire s’insère dans une déclaration de commentaire selon la syntaxe suivante :<!-- Ceci est un commentaire -->
� Les instructions de traitement :� Les instructions de traitement dans un
document XML précisent les orientations vers les applications qui sont censées traiter le document.
� La sémantique associée à ces instructions sont spécifiques aux applications.
Documents XML� Les instructions de traitement :
� La syntaxe d'une instruction de traitement est la suivante :<?cible "paramètres"?>
� Dans une instruction de traitement :• « cible » précise l'application cible qui est
attendue pour le traitement de l'instruction.• « paramètres » précisent les arguments de
l’instruction de traitement.
Documents XML� Les instructions de traitement :
� Exemple : <?xml-stylesheet href="style.css" type="text/css"?>
� Dans cette instruction de traitement :• L’application cible est le navigateur.• Elle indique au navigateur qu’il faut appliquer
le format défini dans la feuille de style nommé « style.css » au document qui contient cette instruction.
• Cette feuille de style étant elle-même une ressource de type « text/css ».
Documents XML�Attribut d’indication de langue :
� Pour faciliter certains traitements linguistiques des documents et leur indexation, il est utile d’y inclure une indication de la langue naturelle qui est employée : c’est l’objectif de l’attribut prédéfini xml:lang.
� Exemples :<couleur xml:lang = 'fr'>rouge</couleur><couleur xml:lang = 'ar'>أصفر</couleur><couleur xml:lang = 'en'>black</couleur>
Documents XML�Contenu d’un élément :
� Un élément peut contenir :
• D’autres éléments.
• Des données.
• Des références à des entités.
• Des sections littérales (CDATA).
• Des instructions de traitement.
� Il peut également être vide.
� Un élément peut aussi avoir un contenu récursif, comme dans l’exemple suivant :
Documents XML�Contenu récursif : un exemple
<vecteur>
<composant>
<vecteur>
<composant>1</composant>
<composant>2</composant>
</vecteur>
<composant>3</composant>
<composant>4</composant>
</vecteur>
((1, 2), 3,4)
Documents XML� Les données :
� Les données contenues dans un élément sont constituées par un flot de caractères.
� Tous les caractères sont autorisés, à l’exception des caractères suivants :
• Le « et commercial » : &.
• Le « plus petit » : <.
Documents XML� Les espaces :
� Les caractères blancs, de tabulation, les retours à la ligne et les lignes vierges constituent les espaces.
� Ils sont en principe transmis intacts par un parseur XML à une application.
� C’est l’application qui détermine la nature des traitements des espaces.
� En règle générale, tous ces espaces sont équivalents pour un processeur XML.
Documents XML� Les espaces :
� L’attribut xml:space :
• Il permet d’indiquer à l’application si le contenu d’un élément doit être traité :
–En préservant les espaces figurant dans le document source (xml:space = 'preserve').
–Ou si l’application peut appliquer son traitement par défaut (xml:space = 'default').
Documents XML� Les références aux entités prédéfinies :
� Ce sont les caractères qui servent au balisage XML :•< pour le caractère <.
•> pour le caractère >.
•& pour le caractère &.
•' pour le caractère '.
•" pour le caractère ".
Documents XML� Les références à des caractères spéciaux :
� Une référence à un caractère spécial est préfixée par « &#x », suivi du code hexadécimal du caractère, suivi d’un point-virgule.
� Exemple :• Soit l’équation : ∀ x ≥ 0, f(y) < z.• Comment l’écrire en XML ?• Réponse : <equation>
∀ x ≧ 0, f(y) < z</equation>
DTD�Notion de DTD :
� Une DTD (Document Type Definition) définit la structure logique d'un document XML.
� Si le contenu d'un document XML est conforme à la structure imposée par sa DTD, on dit qu’un tel document est valide.
� Une DTD se présente comme une grammairedont les phrases sont les documents XML.
DTD�Déclaration des DTD :
� Une DTD peut être déclarée à l’intérieur ou àl’extérieur d’un document XML.
� Déclaration interne :<!DOCTYPE racine [déclarations]>
� Déclaration externe :<!DOCTYPE racine SYSTEM "file.dtd">
• Le nom de la DTD (racine) doit être identique au nom de l’élément racine dans le document XML.
DTD�Exemple d’une déclaration interne de DTD :
<?xml version = "1.0"?>
<!DOCTYPE note [
<!ELEMENT note (a,de,en-tete,mes)>
<!ELEMENT a (#PCDATA)>
<!ELEMENT de (#PCDATA)>
<!ELEMENT en-tete (#PCDATA)>
<!ELEMENT mes (#PCDATA)>
]>
<note>
<a>Bob</a>
DTD�Exemple d’une déclaration interne de DTD :
<de>Taylor</de>
<en-tete>Rappel</en-tete>
<mes>RDV à 8h, ce soir</mes>
</note>
DTD�Exemple d’une déclaration externe de DTD :
<!-- note.dtd -->
<!ELEMENT note (a,de,entete,mes)>
<!ELEMENT a (#PCDATA)>
<!ELEMENT de (#PCDATA)>
<!ELEMENT entete (#PCDATA)>
<!ELEMENT mes (#PCDATA)>
<!-- note.xml -->
<?xml version = "1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
DTD�Exemple d’une déclaration externe de DTD :
<a>Bob</a>
<de>Taylor</de>
<entete>Rappel</entete>
<mes>RDV à 8h, ce soir</mes>
</note>
DTD� Les objets d’une DTD :
� Les éléments (balises XML)
� Les attributs
� Les entités (caractères spéciaux)
� Les flots de caractères (PCDATA signifie Parsed Character DATA) : contenu textuel qu’on trouve entre la balise d’ouverture et la balise de fermeture d’un élément. Ce contenu sera analysé par le parseur.
� Les sections CDATA (CDATA signifie CharacterDATA) : contenu textuel ignoré par le parseur.
DTD�Déclaration des éléments :
� Dans une DTD, les éléments sont déclarés en utilisant le mot clé ELEMENT.
� Syntaxe générale :<!ELEMENT nom Type_Elément>
� Types des éléments :
• Vide;
• Texte;
• Quelconque;
• Liste d’éléments;
• Liste de choix d’éléments.
DTD�Déclaration des éléments :
� Élément vide :
• Un élément vide ne présente aucun contenu (ni un texte, ni autre chose).
• Cependant, un élément vide peut avoir 0, un ou plusieurs attributs.
� Exemple (DTD) :<!ELEMENT vide EMPTY>
� Exemples (XML) valides : •<vide/>
•<vide></vide>
DTD�Déclaration des éléments :
� Éléments avec contenu textuel :
• Cet élément est le plus fréquent, puisque c'est celui qui contient du texte.
• Il se déclare selon la syntaxe suivante :<!ELEMENT nom (#PCDATA)>
� Exemple :<!ELEMENT date (#PCDATA)>
� Exemple XML (valide) : <date>10-01-2009</date>
DTD�Déclaration des éléments :
� Éléments avec contenu quelconque :• Un élément quelconque est un élément qui
peut contenir tout autre élément défini dans la DTD, aussi bien qu'être vide ou contenir du texte.
• Les éléments enfants éventuels peuvent apparaître dans n'importe quel ordre, et en quantité non définie.
• Il est préférable de ne pas utiliser trop souvent ce type de déclaration, car on perd les avantages qu'offre la rédaction d'une DTD, et qui sont, à savoir, fixer des contraintes précises sur la structure du document XML qui lui est associé.
DTD�Déclaration des éléments :
� Éléments avec contenu quelconque :• Le mot clé utilisé pour la déclaration de ce
type d'élément est ANY :<!ELEMENT nom ANY>
� Exemple :<!ELEMENT tout ANY>
� Exemples XML (valides) : <tout>un texte</tout><tout></tout><tout/><tout>un<x>contre</x></tout>
DTD�Déclaration des éléments :
� Séquence d’éléments :
• Une séquence d'éléments est une liste ordonnée des éléments qui doivent apparaître en tant qu'éléments enfants de l'élément que l'on est en train de définir.
• Ce dernier ne pourra contenir aucun autre élément que ceux figurant dans la séquence.
• Cette liste est composée d'éléments séparéspar des virgules et est placée entre parenthèses.
DTD�Déclaration des éléments :
� Séquence d’éléments :
• Chaque élément enfant doit de plus être déclaré par ailleurs dans la DTD (avant ou après la définition de la liste, peu importe).
• Dans le fichier XML, ils doivent apparaître dans l'ordre de la séquence.
• Un élément enfant peut sans aucun problème avoir des enfants.
� Syntaxe de déclaration :<!ELEMENT nom (fils)>
<!ELEMENT nom (fils1, fils2, ...)>
DTD�Déclaration des éléments :
� Exemple :<!ELEMENT note (a,de,en-tete,mes)>
� Exemple XML (valide) : <note>
<a>. . . </a>
<de>. . . </de>
<en-tete>. . .</en-tete>
<mes>. . . </mes>
</note>
DTD�Déclaration des éléments :
� Exemple XML (invalide) : <note>
<a>. . . </a>
<de>. . . </de>
<!-- en-tête manquant -->
<mes>. . . </mes>
</note>
DTD�Déclaration des éléments :
� Exemple XML (invalide) : <note>
<a>. . . </a>
<en-tete>. . . </en-tete>
<mes>. . . </mes>
<de>. . . </de>
<!-- l’ordre est non respecté -->
</note>
DTD�Déclaration des éléments :
� Liste de choix d’éléments :
• Une liste de choix d'éléments permet de choisir un élément parmi plusieurs éléments possibles.
• L'utilisation précise dépend des indicateurs d'occurrence.
• De même que pour la séquence, les éléments enfants doivent être déclarés dans la DTD.
• Cette liste est composée d'éléments séparés par le caractère « | ».
DTD�Déclaration des éléments :
� Syntaxe de déclaration d’une liste de choix d’éléments :<!ELEMENT nom (fils1|...|filsN)>
� Exemple :<!ELEMENT contact (tél | E-mail)>
� Exemple XML (valide) :<contact>
<tél>062-255-958</tél>
</contact>
DTD�Déclaration des éléments :
� Exemple XML (valide) :<contact>
<E-mail>[email protected]</E-mail>
</contact>
� Exemple XML (invalide) :<contact>
<tél>062-123-456</tél>
<E-mail>[email protected]</E-mail>
</contact>
DTD� Indicateurs du nombre d’occurrences :
� Lors de la déclaration de liste ou de choix d'éléments, à chaque élément enfant peut être attribuée une indication du nombre d'occurrences.
� Ces indicateurs sont : •+ : l’enfant doit apparaître au moins une fois.
•* : l’enfant peut apparaître autant de fois que l’on veut (et même, ne pas apparaître).
•? : l’enfant doit apparaître au maximum une fois (ou ne pas apparaître du tout).
DTD� Indicateurs du nombre d’occurrences :
� Si aucun de ces trois indicateurs n’est présent, cela signifie que l’enfant doit apparaître exactement une fois.
� Syntaxes d’emploi des indicateurs : <!ELEMENT nom (enfant+)>
<!ELEMENT nom (enfant*)>
<!ELEMENT nom (enfant?)>
<!ELEMENT nom (enfant)>
DTD�Déclaration des éléments :
� Exemple : <!ELEMENT personne (nom, prénom+, date, age?, diplôme*)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prénom (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT diplôme (#PCDATA)>
DTD�Déclaration des éléments :
� Exemple XML (valide) : <personne>
<nom>Bob</nom>
<prénom>Taylor</prénom>
<date>01-01-1970</date>
<age>39</age>
<diplôme>licence</diplôme>
</personne>
DTD�Déclaration des éléments :
� Exemple XML (valide) : <personne>
<nom>Bob</nom>
<prénom>Taylor</prénom>
<prénom>Taylor, le petit</prénom>
<date>01-01-1970</date>
<age>39</age>
<diplôme>licence</diplôme>
</personne>
DTD�Déclaration des éléments :
� Exemple XML (valide) : <personne>
<nom>Bob</nom>
<prénom>Taylor</prénom>
<prénom>Taylor, le petit</prénom>
<date>01-01-1970</date>
<diplôme>licence</diplôme>
<diplôme>phd thesis</diplôme>
</personne>
DTD�Déclaration des éléments :
� Exemple XML (invalide) : <personne>
<nom>Bob</nom>
<date>01-01-1970</date>
<diplôme>licence</diplôme>
<diplôme>phd thesis</diplôme>
</personne>
DTD�Déclaration des éléments :
� Indicateur du nombre d’occurrence globale :
• Cet indicateur porte sur toute la liste des éléments, et non pas sur l’un des éléments.
� Syntaxes :<!ELEMENT nom (enfants)+>
<!ELEMENT nom (enfants)*>
<!ELEMENT nom (enfants)?>
<!ELEMENT nom (enfants)>
DTD�Déclaration des éléments :
� Exemple :<!ELEMENT contact (nom, tél)>
� Exemple XML (valide) :
<contact>
<nom>Bob</nom>
<tél>012-345-678</tél>
</contact>
DTD�Déclaration des éléments :
� Exemple :<!ELEMENT contact (nom, tél)?>
� Exemple XML (valide) :
<contact>
</contact>
� Exemple XML (valide) :<contact>
<nom>Bob</nom>
<tél>012-345-678</tél>
</contact>
DTD�Déclaration des éléments :
� Exemple :<!ELEMENT contact (nom, tél)+>
� Exemple XML (invalide) :
<contact>
</contact>
� Exemple XML (valide) :<contact>
<nom>Bob</nom>
<tél>012-345-678</tél>
</contact>
DTD�Déclaration des éléments :
� Exemple :<!ELEMENT contact (nom, tél)*>
� Exemple XML (valide) :
<contact>
</contact>
� Exemple XML (valide) :<contact>
<nom>Bob</nom>
<tél>012-345-678</tél>
</contact>
DTD�Déclaration des éléments :
� Élément à contenu mixte :
• Un élément à contenu mixte peut contenir aussi bien du texte que des éléments enfants.
• Il se présente comme une liste de choix, avec des indicateurs du nombre d'occurrence bien choisis.
• Le texte contenu peut se trouver à n'importe quel endroit dans l'élément, et peut être une section CDATA.
DTD�Déclaration des éléments :
� Exemple d’un élément à contenu mixte :<!ELEMENT citation (#PCDATA | auteur)*>
� Exemple XML (valide) :<citation>
<auteur>Inconnu</auteur>Rien ne se perds, tous se transforme avec XSLT.
</citation>
DTD�Modèles de contenu de base :
DTD�Marqueurs du nombre d’occurrences :
DTD�Déclaration des attributs :
� Avec les DTD, il est également possible de déclarer et attacher à un élément donné un ou plusieurs d’attributs.
� Chaque attribut se déclare séparément.
� Chaque attribut défini dans la liste possède un nom et un type.
� On peut aussi lui donner une valeur par défaut, ou bien le spécifier obligatoire.
� Le mot clé de cette déclaration est ATTLIST.
DTD�Déclaration des attributs :
� Syntaxe de déclaration d’un attribut : <!ATTLIST nom-élément nom-attributtype-attribut valeur-par-défaut>
� Exemple :<!ATTLIST paiement type CDATA"cache">
� Exemple XML :<paiement type = "chèque"/>
DTD�Types des attributs :
� CDATA : chaîne de caractères arbitraires.
� ID : un nom unique dans le document (joue le rôle d’identifiant).
� IDREF : une référence à une valeur de type IDdans le document.
� IDREFS : une liste de valeurs séparées par des espaces. Chaque valeur est de type IDREF.
� ENTITY : le nom d’une entité déclarée dans le DTD.
DTD�Types des attributs :
� ENTITIES : une liste de valeurs séparées par des espaces. Ces valeurs sont de type ENTITY.
� NMTOKEN : un nom XML valide.
� NMTOKENS : une liste de valeurs séparées par des espaces et de type NMTOKEN.
DTD�Valeurs par défaut (après la déclaration du type) :
� "Valeur" : la valeur par défaut de l’attribut.
� #REQUIRED : l’attribut est requis (obligatoire).
� #IMPLIED : l’attribut est facultatif (non obligatoire).
� #FIXED "Valeur" : la valeur de l’attribut est fixée (constante).
DTD�Déclaration des attributs :
� Exemple (valeur par défaut) :• DTD :<!ELEMENT carre EMPTY>
<!ATTLIST carre largeur CDATA "0">
• XML (valide) :<carre largeur = "100"/>
• Dans cet exemple, l’élément "carre" est un élément vide avec un attribut "largeur" de type CDATA.
• Si aucune largeur n’est spécifiée, la valeur par défaut 0 sera la valeur de cet attribut.
DTD�Déclaration des attributs :
� Exemple (valeur requise) :• DTD :<!ATTLIST personne cin CDATA#REQUIRED>
• XML (valide) :<personne cin = "BF125024"/>
• XML (invalide) :<personne/>
• #REQUIRED s’utilise si aucune valeur par défaut n’est spécifiée, et si l’on veut forcer l’attribut d’être présent.
DTD�Déclaration des attributs :
� Exemple (valeur optionnelle) :• DTD :<!ATTLIST contact fax CDATA#IMPLIED>
• XML (valides) :<contact fax = "120-454-187"/>
<contact/>
• #IMPLIED s’utilise si aucune valeur par défaut n’est spécifiée, et si l’on ne veut pas forcer l’attribut d’être présent.
DTD�Déclaration des attributs :
� Exemple (valeur fixée) :• DTD :<!ATTLIST expéditeur compagnieCDATA #FIXED "Epson">
• XML (valide) :<expéditeur compagnie = "Epson"/>
• XML (invalide) :<expéditeur compagnie = "Xerox"/>
• #FIXED s’utilise lorsqu’on veut qu’un attribut ait une valeur fixe, sans permettre à l'auteur de la changer. Si un utilisateur inclut une autre valeur, le parseur XML retournera une erreur.
DTD
�Déclaration des attributs :� Exemple (valeur liste énumérée) :
• DTD :<!ATTLIST paiement type (chèque|cache) "cache">
• XML (valides) :<paiement type = "cache"/>
<paiement type = "chèque"/>
• Une liste énumérée s’utilise lorsqu’on veut qu’un attribut ait une valeur parmi les valeurs indiquées dans la liste.
DTD�Un exemple :
<!-- emp.dtd -->
<!ELEMENT employés (employé*)>
<!ELEMENT employé (#PCDATA)>
<!ATTLIST employé
nom CDATA #REQUIRED
id ID #REQUIRED
chef IDREF #IMPLIED
gere IDREFS #IMPLIED
>
DTD�Un exemple :
<!-- emp.xml --><!DOCTYPE employés SYSTEM "emp.dtd"><employés><employé nom="Billy" id="e100" gere="e101 e102"/>
<employé nom="Jim" id="e101" chef="e100"/>
<employé nom="Sarah" id="e102" chef="e100" gere="e103"/>
<employé nom="Nak" id="e103" chef="e102"/>
<employé nom="Pan" id="e104"/></employés>
DTD�Types des attributs :
� Liste énumérée :
• On peut parfois désirer limiter la liste de valeurs possibles pour un attribut.
• On le définit alors comme étant de type liste énuméré.
• Donner une autre valeur dans le fichier XML, qui n’est pas dans la liste énumérée,provoquera une erreur.
DTD�Types des attributs :
� Exemple de liste énumérée :<!ELEMENT img EMPTY>
<!ATTLIST img format (GIF | JPEG | PNG) "PNG">
• Cet exemple déclare un attribut format d'un élément img. La valeur de cet attribut peut être soit PNG, soit GIF ou bien JPEG.
• Si aucune valeur n'est spécifiée à cet attribut, c'est la valeur par défaut qui le sera, ici PNG.
• On notera l'absence de guillemets dans la liste des valeurs possibles.
DTD�Déclaration des attributs :
� Utilisation de liste lors de la déclaration des attributs d’un élément :
• Il est possible de « factoriser » le nom de l'élément lorsqu’on déclare ses attributs.
� Exemple :<!ELEMENT sportif (...)>
<!ATTLIST sportif
longueur CDATA #REQUIRED
poids CDATA #REQUIRED
>