Chapitre 3
Chapitre 3
Chapitre 3
Chapitre 3
La technologie XML
Définition
eXensible Markup Language
1
Structure d’un document XML
<messenger>
<contact pseudo= "medba" >
<nom>Ben Ali</nom>
<prenom>Mohamed</prenom>
<pays>Tunisie</pays>
</contact>
Corps du document
</ messenger >
Les balises
Un élément constitutif d’un document XML repose sur un nom
et un contenu.
<pays>Tunisie</pays>
2
Les noms de balises
Les noms peuvent contenir des caractères alphanumériques, de souli
gnement (_), de ponctuation (. , ;) et le trait d’union.
Les attributs
But : Associer des informations complémentaires aux
éléments.
<montant monnaie= "DT" > 24 </montant>
Les noms des attributs suivent les mêmes règles que celles
des noms des éléments.
Un élément peut posséder un ou plusieurs attributs dans la
balise d’ouverture.
Le nom de l’attribut est unique pour un élément donné.
La valeur de l’attribut doit obligatoirement être entre " ".
Les guillemets (" ") peuvent être remplacés par des
apostrophes (‘ ‘)
3
Les éléments vides
Les éléments qui ne possèdent pas de contenu sont dits
« vides » (Empty).
4
Imbrication des éléments (2/2)
Les balises d’ouverture et de fermeture des éléments fils
doivent toujours être comprises entre les balises d’ouverture
et de fermeture des parents.
<? xml version = "1.0" ?> <? xml version = "1.0" ?>
<messenger> <messenger>
<contact pseudo= "XXX" > <contact pseudo= "XXX" >
</contact> </ messenger >
</ messenger > </contact>
La racine
À la racine d’un document XML, il ne peut y avoir qu’un seul
et unique élément.
Le document XML se termine à la fermeture de la balise de
racine.
<? xml version = "1.0" ?> <? xml version = "1.0" ?>
<messenger> <messenger>
<contact pseudo= "XXX" > </ messenger >
</contact> <contact pseudo= "XXX" >
</ messenger > </contact>
5
La déclaration XML
Généralement la première ligne d’un document XML.
Déclaration facultative
6
Exemple
Declaration
<? xml version = "1.0" ?> Instructions
de traitement
<? xml-stylesheet href = "http://cui.unige.ch/adressesToHTML.xsl"
type = "text/xsl" version = "1.0" ?>
Entête du
<? cocoon-process type = "xslt" ?> document
<! DOCTYPE adresses SYSTEM "http://cui.unige.ch/adresses.dtd">
Type de
Commentaire document
<!--Ceci est un commentaire--> Racine du
< adresses> document
Attribut
<personne id= "marchand " >
<type classe= "enseignant" rang="MA"/> Element vide
<nom>Marchand-Maillet</nom> Corps du
<prenom>Stéphane</prenom> document
Element non-vide
<adresse>CUI, Université de Genève</adresse>
</personne>
Balise d'ouverture Balise de fermeture
</adresses >
Exercice 1
Écrire un document XML permettant de maintenir une liste de contacts dans u
n carnet d’adresses.
Solution :
<?xml version="1.0" encoding="UTF-8"?>
<carnet>
<contacts>
<contact id="c1">
<nom/>
<prenom/>
<pseudo/>
<mail1/>
<mail2/>
<tel_bur/>
<tel_mob/>
</contact>
</contacts>
</carnet>
7
DTD
DTD : Document Type Definition
But : Définir une structure type de document XML.
Une grammaire qui décrit la façon de construire les documents
XML.
Document Valide
Document valide
Respect d’une DTD spécifiée (Conformité par rapport à
une DTD)
8
Déclaration d’une DTD
1. Déclaration de la DTD à l’intérieur du fichier XML.
9
Déclaration des éléments (2/5)
regle peut faire référence à séquence d’éléments fils
Séquence ordonnée : (fils1,fils2,fils3)
<!ELEMENT date(mois,annee)>
<date> <date>
<date>
<mois>10</mois> <annee>2006</annee>
<annee>2006</annee>
<annee>2006</annee> <mois>10</mois>
</date>
</date> </date>
<date> <date>
<date>
<mois>10</mois> <annee>2006</annee>
<annee>2006</annee>
<annee>2006</annee> <mois>10</mois>
</date>
</date> </date>
<date> <date>
<date>
<mois>10</mois> <annee>2006</annee>
<annee>2006</annee>
<annee>2006</annee> <mois>10</mois>
</date>
</date> </date>
10
Déclaration des éléments (4/5)
Pour la déclaration de l’élément date, on doit spécifier le type
des éléments mois et année.
<date>
<mois>10</mois>
<annee>2006</annee>
</date>
<!ELEMENT livre((titre,auteur)|description)
Cette déclaration signifie qu’il est possible de saisir
soit la description d’un livre
soit son titre suivi de son auteur
11
Occurrence des éléments
Autoriser un certain nombre de répétitions au niveau d’un
élément.
12
Déclaration des attributs (2/5)
Si la valeur par défaut n’est pas spécifiée, on peut préciser les paramètres
suivants :
Exemples
<!ATTLIST personne nom CDATA #REQUIRED>
<!ATTLIST personne age CDATA #IMPLIED>
<!ATTLIST date année CDATA #FIXED "2004">
<!ATTLIST machine état CDATA "neuf">
Exemples :
<!ATTLIST rectangle largeur CDATA "0">
<!ATTLIST personne situation (célibataire|mariée|divorcée) #IMPLIED>
13
Déclaration des attributs (4/5)
La notation ID permet d’assurer qu’un attribut a une valeur un
ique dans tout le document XML.
Les notations IDREF et IDREFS permettent de relier les différe
ntes sections d’un document.
Exemple
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE personnels SYSTEM "LePersonnel.dtd">
<personnels>
<employe ide="a10" directeur="d50" collegues="a40 a60"/>
<employe ide="a20" directeur="d50" collegues="a50"/>
<employe ide="a30" directeur="d20"/>
<employe ide="a40" directeur="d20" collegues="a10 a60"/>
<employe ide="a50" directeur="d20" collegues="a20"/>
<employe ide="a60" directeur="d50" collegues="a10 a40"/>
<employe ide="d20" collegues="d50"/>
<employe ide="d50" collegues="d20"/>
</personnels>
14
Exercice 2
Écrire la DTD relative au document XML de l’exercice 1.
Limites DTD
15
XSD
XSD : XML Schema Definition
Avantages de XSD
Typage
Gestion de plusieurs types à savoir les booléens, les entiers..
Possibilité de créer de nouveaux types.
Héritage
Les éléments peuvent hériter du contenu et des attributs d’un autre
élément.
Les espaces de nom.
Occurrence
Les indicateurs d’occurrence des éléments peuvent être tout nombre
non négatif
16
Exemple de XSD
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
</xsd:schema>
Syntaxe
<xsd:element name="element_name" type="element_type">
</xsd:element>
17
Déclaration des attributs
Un attribut ne peut être que de type simple (Similaire à DTD)
Syntaxe
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="etudiant" >
<xsd:complexType >
<xsd:attribute name="date_naissance" type="xsd:date" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Exemples
<xsd:attribute name="date_naissance" type="xsd:date" use="required" />
<xsd:attribute name="rang" type="xsd:positiveInteger" use="optional" />
<xsd:attribute name="date_maj" type="xsd:date" use="optional" default="
2006-11-09"/>
<xsd:attribute name="institut" type="xsd:string" fixed="ISI" />
18
Contraintes d’occurrence (2/2)
Tableau comparatif des indicateurs d’occurrences
en DTD et XSD
XSD
DTD
use default fixed
#REQUIRED required - -
"yes" #REQUIRED required "yes" -
#IMPLIED optional - -
"yes" #IMPLIED optional "yes" -
#FIXED "yes" - - "yes"
19
Types de données Complexes (1/4)
A. Séquence d'éléments
Déclaration d’un élément comme étant une suite ordonnée de sous
éléments.
Analogie à l’opérateur , dans DTD
Syntaxe
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prénom" type="xsd:string" />
<xsd:element name="dateDeNaissance" type="xsd:date" />
<xsd:element name="adresse" type="xsd:string" />
<xsd:element name="adresseElectronique" type="xsd:string" />
<xsd:element name="téléphone" type="numéroDeTéléphone" />
</xsd:sequence>
</xsd:complexType>
Syntaxe
<xsd:complexType name="typePersonne">
<xsd:sequence>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prénom" type="xsd:string" />
<xsd:element name="dateDeNaissance" type="xsd:date" />
<xsd:choice>
<xsd:element name="adresse" type="xsd:string" />
<xsd:element name="adresseElectronique" type="xsd:string" />
</xsd:choice>
</xsd:sequence>
<xsd:element name="téléphone" type="numéroDeTéléphone" />
</xsd:complexType>
20
Types de données Complexes (3/4)
B. all
L'élément xsd:all indique que les éléments enfants doivent apparaître un
e fois (ou pas du tout), et dans n'importe quel ordre. Il doit être un enfa
nt direct de l'élément xsd:complexType.
Syntaxe
<xsd:complexType>
<xsd:all>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prénom" type="xsd:string" />
<xsd:element name="dateDeNaissance" type="xsd:date" />
<xsd:element name="adresse" type="xsd:string" />
<xsd:element name="adresseElectronique" type="xsd:string" />
<xsd:element name="téléphone" type="numéroDeTéléphone" />
</xsd:all>
</xsd:complexType>
21
Indicateurs d'occurrences
XSD offre la possibilité de mentionner le nombre d'occurrence
possible pour un élément donné et ce par le biais des attributs
minOccurs et maxOccurs
minOccurs: le nombre minimal de fois où un élément peut paraître dans
un document XML.
maxOccurs: le nombre maximal de fois où un élément peut paraître dans
un document XML.
Dans les cas d'un élément présent avec un nombre de fois
illimité, la valeur unbounded est utilisée.
XSD
DTD
minOccurs maxOccurs
* 0 unbound
+ 1 unbound
? 0 1
- 1 1
Exercice 3
Écrire un XSD validant le document XML de l’exercice 1.
Solution
22
XSL
XSL : eXtensive Stylesheet Langage.
XSL offre (un peu comme les CSS) des propriétés de style et
contient des éléments qui contrôlent le déroulement logique de
l a prés entati on de données , comme l a numérotation
automatique de chapitre ou des fonctions de tri.
Composants XSL
La recommandation XSL du W3C est basée sur 2 composants :
Transformation
XSL
Document Document
Source Final
Feuille de Style
XSL
23
Déclaration d’une XSL
Un document XSL comprend impérativement une en-tête contenant la
déclaration XML et indiquant le jeu de caractères utilisé.
24
Exemple de mise en forme avec XSL (2/3)
On se propose donc de créer une XSL qui permettra de générer
un fichier HTML qui contient un tableau contenant la liste des
titres des livres ainsi que leur ISBN:
25
Les expressions de sélection (1/2)
Ces expressions (XSL patterns) sont des chaînes de caractères
permettant la sélection d’éléments (noeuds) à partir d’un
document source.
1. Sélection d’éléments
<xsl:value-of select="element_name" />
Exemple
<xsl:value-of select="livre/titre">
Opérateurs de sélection
parent/fils : définir la sélection de l’élément « fils » de chaque élément
« parent ».
*/fils : définir la sélection des sous éléments « fils » quelque soit leurs
« parent ».
parent//fils : définir la sélection de tous les descendants « fils » de l’élé
ment « parent » et non seulement via les fils directs.
. : définir la sélection l’élément courant
Exemple
<xsl:value-of select="livre[@langue]>
<xsl:value-of select="livre[@langue="fr"]>
26
Notions fondamentales (1/3)
1. <xsl:stylesheet>
C’est la racine du document XSL.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Tr
ansform">
</xsl:stylesheet>
2. <xsl:output>
Se place directement après <xs:stylesheet> et permet de
spécifer les options relatives à l'arbre de sortie.
<xsl:output
method="xml | html | text"
version="nmtoken"
encoding="chaine"
omit-xml-declaration="yes | no"
standalone="yes | no"
/>
27
Notions fondamentales (3/3)
4. <xsl:template>
Cet élément définit le modèle à appliquer à un noeud et à un contexte
spécifique.
Questions ?
28