• Aucun résultat trouvé

Comme on peut trouver dans un document XML des éléments possédant des attributs, il est normal que la DTD permette de définir des contraintes sur ces derniers.

On peut déclarer et attacher à un élément donné chaque attribut séparément, mais il est préférable de les assembler sous la forme d'une liste. Chaque attribut défini dans la liste possède un nom et un type.

Syntaxe :

<!ATTLIST NomElement NomAttribut Type ValeurParDefaut> Avec :

Enseignante : Mme Natija BOUZIDI 77  NomElement : Le nom d’un élément XML.

 NomAttribut : Le nom d’un attribut d’un élément XML.

 Type : le type de données de l’attribut (par exemple CDATA pour dire une chaine de caractères).

 ValeurParDefaut : Permet de définir le comportement du parseur en cas d’absence de l’attribut.

Cette valeur peut prendre l’une des quatre valeurs suivantes :  #REQUIRED : la présence de l’attribut est obligatoire;  #IMPLIED : la présence de l’attribut est optionnelle;

 #FIXED : la présence de l’attribut est optionnelle, mais s’il est présent, sa valeur doit être identique à la valeur précisée comme valeur de cet attribut.

Une valeur qui sera utilisée comme valeur par défaut en cas d’absence de l’attribut.

Exemple 1 : Déclaration d'un attribut avec une valeur par défaut :

<!ELEMENT elt(...)><!ATTLIST elt attr CDATA "valeur">

Un tel attribut n'est pas obligatoire. S'il est omis dans le fichier XML lors de l'utilisation de l'élément elt, il est considéré comme valant valeur. Dans cet exemple, si on écrit <elt>(...)</elt>, cela est équivalent à écrire <elt attr="valeur">(...)>/elt>.

Exemple 2 : Déclaration d'un attribut requis :

<!ELEMENT elt (...)><!ATTLIST elt attr CDATA #REQUIRED>

Un tel attribut est obligatoire. Son absence déclenche une erreur du vérificateur syntaxique sur le fichier XML.

Exemple 3 : Déclaration d'un attribut optionnel :

<!ELEMENT elt(...)><!ATTLIST elt attr CDATA #IMPLIED> Exemple 4 : Déclaration d'un attribut avec une valeur fixe :

<!ELEMENT elt(...)><!ATTLIST elt attr CDATA #FIXED "valeur">

L'utilité d'un tel attribut peut sembler bizarre à première vue, puisqu'il ne peut prendre qu'une seule valeur. Cette fonctionnalité est cependant utile lors d'une mise à jour d'une DTD, pour préserver la compatibilité avec des versions ultérieures.

III.1. Type chaîne de caractères

Il s'agit là du type d'attribut le plus courant. Une chaîne de caractères peut être composée de caractères ainsi que d'entités analysables. Le mot-clef utilisé pour la déclaration de chaîne de caractère est CDATA.

Exemple de déclaration de CDATA :

Enseignante : Mme Natija BOUZIDI 78

Exemples d'utilisations :

<elt attr="Chaîne de caractères"></elt>

<!ENTITY car "caractères"><elt attr="Chaîne de &car;">(...)</elt>

III.2. Les valeurs énumérées

On peut parfois désirer limiter la liste de valeurs possibles pour un attribut. On le définit alors comme étant de type énuméré. Donner une autre valeur dans le fichier XML provoque une erreur. Les valeurs énumérées se définissent comme une liste entre parenthèses dont les valeurs sont séparées des autres par le caractère «|» (barre verticale)

Exemple de déclaration d'une liste de choix d'attributs :

<!ELEMENT img EMPTY>

<!ATTLIST img format (BMP | GIF | JPEG) "JPEG">

Cet exemple déclare un attribut format d'un élément img. La valeur de cet attribut peut être BMP, GIF ou JPEG. Si aucune valeur n'est affectée à cet attribut, c'est la valeur par défaut qui le sera affectée, ici JPEG. On notera l'absence de guillemets dans la liste des valeurs possibles. C'est une source courante d'erreur dans la rédaction d'une DTD.

<!ATTLIST personne civilite (Mme | Melle | M) #REQUIRED >

III.3. Les Types ID, IDREF et IDREFS

Ce type sert à indiquer que l'attribut en question peut servir d'identifiant dans le fichier XML. Deux éléments ne pourront pas posséder le même attribut possédant la même valeur.

Exemple de déclaration de type ID optionnel :

<?xml version="1.0" encoding=« UTF8"?>

<!DOCTYPE document SYSTEM "exemple1.dtd" ><document> <personne IDpersonne="id_1">

<nom>Salah</nom><prenom>Mohamed</prenom></personne> <personne IDpersonne="id_2">

<nom>Said</nom>

<prenom>Anas</prenom></personne> <livre auteur="id_1">Mes nouvelles</livre> </document>

Le fichier DTD correspondant est :

<?xml version="1.0" encoding="ISO88591"?> <!ELEMENT document (personne*,livre*)> <!ELEMENT personne (nom, prenom)>

Enseignante : Mme Natija BOUZIDI 79 <!ATTLIST personne IDpersonne ID #REQUIRED>

<!ELEMENT nom (#PCDATA)> <!ELEMENT prenom (#PCDATA)> <!ELEMENT livre (#PCDATA)>

<!ATTLIST livre auteur IDREF #IMPLIED>

Pour établir un lien entre des éléments XML de type plusieurs à plusieurs, on utilise le type IDREFS

Exemple : pour chaque livre peut correspondre plusieurs auteurs : Dans ce cas, la syntaxe suivante n’est pas valide :

<livre auteur="id_1" auteur="id_2">Mes nouvelles</livre> On utilise la syntaxe suivante :

<livre auteur="id_1 id_2">Mes nouvelles</livre> Le fichier DTD correspondant est :

<?xml version="1.0" encoding="ISO88591"?> <!ELEMENT document (personne*,livre*)> <!ELEMENT personne (nom, prenom)>

<!ATTLIST personne IDpersonne ID #REQUIRED> <!ELEMENT nom (#PCDATA)>

<!ELEMENT prenom (#PCDATA)> <!ELEMENT livre (#PCDATA)>

<!ATTLIST livre auteur IDREFS #IMPLIED>

IV.

Exercices d’application

Exercice n°1 :

On souhaite compléter la structure du document XML de l’exercice précédent par les attributs nom et prénom pour les auteurs et titre pour le livre, les sections et les chapitres.

Analysez la structure du nouveau document. Y a-t-il des simplifications possibles ? Vérifiez, à l’aide de l’éditeur, que votre document est bien formé.

Exercice n°2 :

Création d’une DTD

Créez une DTD livre.dtd à partir du document livre2.xml créé dans l’exercice n°1.

Exercice n°3:

Rédiger une DTD pour une bibliographie. Cette bibliographie : contient des livres et des articles ;

Enseignante : Mme Natija BOUZIDI 80 les informations nécessaires pour un livre sont :

o son titre général ; o les noms des auteurs ;

o ses tomes et pour chaque tome, leur nombre de pages ;

o des informations générales sur son édition comme par exemple le nom de o l'éditeur, le lieu d'édition, le lieu d'impression, son numéro ISBN ;

les informations nécessaires pour un article sont : o son titre ;

o les noms des auteurs ;

o ses références de publication : nom du journal, numéro des pages, année o de publication et numéro du journal

Enseignante : Mme Natija BOUZIDI 81

Bibliographies

1) Chedly FEHRI « Cours Technologies XML », Ecole Nationale des Ingénieurs de Sfax,

2005/2006.

2) Alexandre Brillant «XML cours et exercices» Maison d’édition : Eyrolles 2007 ISBN : 978-

2-212-12151-3 3) http://xml.chez.com/initiation/ 4) http://perso.livehost.fr/pdf/appweb/Cours3_XML.pdf 5) https://fr.wikipedia.org/wiki/Extensible_Markup_Language 6) http://www.grappa.univ-ille3.fr/~torre/Enseignement/tp/XML/ 7) http://deptinfo.unice.fr/twiki/pub/Minfo03/ServletEtXml/00-xml-presentation.pdf

Documents relatifs