XML - Free

publicité
Introduction à XML
IUT GTR / Axway Sopra Group.
Denis Viollet / Lionel Baylot
Juin 2004
1
Origines de XML

XML (eXtensible Markup Language) est en quelque sorte
un langage HTML amélioré permettant de définir de
nouvelles balises contrairement à HTML où le nombre de
balises est limité.
Html décrit la présentation et le contenu, Xml ne décrit que
le contenu
2
Origines de XML

SGML



Issu de 30 ans de recherche dans le domaine des documents
développé par l’ISO au début des années 80
Usage : standard (ISO 8879) de fait dans le milieu de la gestion
documentaire.



(Standard Generalized Markup Langage)
(utiliser dans le domaine de la documentation technique.
Langage puissant , mais très complexe.
Propriétés SGML
Langage de balisage extensible
(en anglais Extensible Markup Language)
Méta-langage
Permet de définir des langages de représentation de
données structurées et évolutifs.
3
Origines de XML

HTML
Est une application très populaire de SGML,
 Développement a commencé en 1990,
 Caractéristiques :

HTML est un langage de présentation de données,
 HTML est un langage de balises non extensibles,
 HTML mélange les informations :

De Présentation, de Contenu, de Structure
HTML : Standard de présentation des documents et applications Web
 Navigateurs web (Browser) : Interpréteur universel de page HTML

4
Origines de XML

World Wide Web Consortium (W3C)
420 membres à travers le monde
 Développer les technologies de base du Web
 Ouverture et consensus
 Gère une cinquantaine de projet.


XML Working Group (1996) :
Travail pour créer un langage simplifié dérivé du SGML,
 Qui répond à la même problématique :

Permet de définir des langages de représentation de données
structurées et évolutifs.
5
XML, pourquoi faire ?
« […] un système d ’information relié universellement, dans
lequel généralisation et portabilité sont plus importants que
graphisme avenants et autres fonctionnalités complexes »
Tim Berners-Lee

De la page personnel au e-commerce…
6
XML, pourquoi faire ?

Définition du e-commerce :
d ’informations au sein d ’une entreprise
décentralisée,
 Échanges de données d ’informations sur les
transactions financières (cartes de crédit, bancaires,
etc.),
 Échanges de données concernant les transactions
médicales entre patients, hôpitaux, médecins et
compagnie d ’assurance,
 Échanges
 Distribution
de logiciels via le web, paiement au service.
7
XML, pourquoi faire ?

XML facilite les échanges B2B

XML est utilisé comme langage de description et d'échange
de données entre partenaires.

Exemples
RossettaNet : Utilisé par les constructeurs de matériels
informatique pour échanger avec leurs partenaires / sous
traitants
Amazon.com, Vente d ’articles, livres, CD, DVD, logiciels depuis
une page web.
SI1
Transformation/
Importation
Extraction/
Transformation
XML
Echange
SI2
XML
8
XML, pourquoi faire ?

Standard d’échange entre Applications dans le
S.I.
par n’importe quel
composant du système,
 Simple à manipuler par n’importe
quel programme,
 Universel : Promu par l’ensemble
des éditeurs sans exception,
Progiciel
intégré
 Accessible
SGBD
XML
Application
métier
XNet
9
Les limites du HTML

Le HTML manque de structure


Le HTML ne tient pas compte du contenu



Ne permet de décrire le contenu des informations.
Création de balises personnalisées en XML
Le HTML n ’est pas international


Utilisation des balises d ’en-tête ordonnées (de H1 à H6) et
possibilité de blocs imbriqués à l ’intérieur de balises DIV
Propositions ont été faites pour identifier la langue
Le HTML ne convient pas aux échanges de
données

Absence sémantique et peu de balises utilisées
10
Avantages de XML

La solution Xml

Lisibilité : aucune connaissance ne doit théoriquement
être nécessaire pour comprendre le contenu d'un
document XML

Autodescriptif et extensible

Structure arborescente : permettant de modéliser la
majorité des problèmes informatiques

Universalité et portabilité : les différents jeux de
caractères sont pris en compte
11
Avantages de XML

Déployable : il peut être facilement distribué par
n'importe quels protocoles à même de transporter du
texte, comme HTTP

Intégralité : un document XML est utilisable par toute
application pourvue d'un parser (c'est-à-dire un logiciel
permettant d'analyser un code XML)

Extensibilité : un document XML doit pouvoir être
utilisable dans tous les domaines d'applications
XML est particulièrement adapté à l'échange de données
12
Anatomie d’un document XML

Le balisage consiste à ajouter à des informations des
caractères qui pourront servir à traiter ces informations
d ’une manière définie.

Une simple virgule (,) peut être interprétée comme caractère
de séparation,

La DTD du Text Encoding Initiative est une forme plus
complexe de balisage qui permet d ’effectuer la transcription
de manuscrits anciens,

Les fichiers de traitement de texte comprennent des balises
(ex. MSWord, WordPerfect, etc.).
13
Anatomie d’un document XML
<?xml version="1.0"?>
<page.accueil>
<en-tete>
<titre>Ma page d'accueil</titre>
<banniere source="banniere.gif"/>
</en-tete>
<corps>
<titre.principal>
Bienvenue sur ma page d'accueil
</titre.principal>
<ligne/>
<texte>
<para>
Desole, cette page est en construction. A bientot !
</para>
</texte>
</corps>
<pied source="foot.gif"/>
</page.accueil>
14
Anatomie d’un document XML
15
Anatomie d’un document XML
Élément
racine
Déclaration
<?xml version="1.0"? encoding="ISO-8859-1" >
<page.accueil>
<en-tete>
<titre>Ma page d'accueil</titre>
<banniere source="banniere.gif"/>
</en-tete>
<corps>
<titre.principal>
Bienvenue sur ma page d'accueil
Des attributs
</titre.principal>
<ligne/>
Un élément vide
<texte>
<para>
Desole, cette page est en construction. A bientot !
</para>
</texte>
</corps>
<pied source="foot.gif"/>
</page.accueil>
16
Anatomie d’un document XML

Balises


Déclaration XML



Identifie que ce qui suit est du code XML
Élément racine


Nom de balise ouvrante = nom de balise fermante
Un document XML ne doit avoir qu ’un seul élément racine.
Tous les autres doivent être inclus à l ’intérieur.
Élément vide
Les attributs

Un ou plusieurs attributs facultatifs ou obligatoires, définis
dans la balise ouvrante de l ’élément
<fruit saveur=«acide»>
17
Structure logique des éléments XML
page d ’accueil
en-tête
titre
Élément racine
Éléments frères
« siblings »
bannière
corps
titre1
ligne
texte
para
Pied de page
18
Syntaxe XML

un élément peut avoir différents types de contenu :
d ’autres éléments
 du texte
 être vide



un élément quelconque est délimité par une balise de
début et une balise de fin: <tag>...</tag>
un élément vide peut avoir 2 formes :
ne pas avoir de contenu: <tag></tag>
 être formé d'une balise unique: <tag/>

19
Syntaxe XML
Les séparateurs de balisage
Symbole
Description
<
Séparateur d'ouverture de balise ouvrante
</
Séparateur d'ouverture de balise fermante
foo
Nom d'élément
>
Séparateur de fermeture de balise
/>
Séparateur de fermeture de balise vide
Balisage d ’éléments
Symbole
Nom
Description
<foo>
Balise ouvrante
Au début d'un élément, la balise ouvrante
texte
Contenu
Au milieu d'un élément, son contenu
</foo>
Balise fermante
A la fin d'un élément, la balise fermante
20
Syntaxe XML

un attribut XML :

Permet de représenter des informations
supplémentaires relatives à un élément

Est placé dans la balise de début ou dans la balise
unique d'un élément

Est composé d'un couple nom/valeur
<... attrName="value" ...>
<personne class="informaticien">
21
Syntaxe XML
Spécification d ’un attribut
Symbole
Description
<
Séparateur d'ouverture de balise ouvrante
nom.élément
Nom de l'élément
propriété
Nom de l'attribut
=
Indicateur de valeur
"
Séparateur de chaîne littérale
Séparateur de chaîne littérale alternatif
valeur
Valeur de l'attribut
>
Séparateur de fermeture de balise ouvrante
22
Syntaxe XML

Règles d ’affectation des noms
Un nom consiste en au moins une lettre: de a à z,
ou de A à Z,
 Si plus d ’un caractère, le nom peut commencer par un trait
de soulignement (_) ou deux points (:),
 Les espaces et et les tabulations ne sont pas permis dans
les noms d ’éléments. Seuls signes de ponctuation permis
sont le tiret (-) et le point (.).
Cela_est_un_nom_long est par exemple interdit...


Les commentaires

exemple de commentaire
<!-- Voici du texte en commentaire -->
23
Syntaxe XML

Les sections CDATA (Character DATA)

Une section CDATA permet de masquer du texte que le
processeur XML (parser) pourrait interpréter comme du
balisage.
<![CDATA [Voici du texte que le processeur XML ne
doit pas voir !]]>

Une section CDATA constitue une méthode à privilégier
pour incorporer du code d ’applications (JavaScripts,
Vbasic, Perl, etc.) dans votre code XML.
24
Syntaxe XML

Les sections CDATA (Character DATA)
<?xml version="1.0" encoding="iso-8859-1"?>
<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1
}
else
{
return 0
}
}
]]>
</script>
25
Syntaxe XML

Exemple d ’appel d ’entité interne
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE installation [
<!ENTITY contrat "Tous droits réservés. Le Logiciel est
protégé par les lois sur la propriété intellectuelle et les
traités internationaux. La reproduction ou redistribution de
tout ou partie du Logiciel est expressément interdite par la
loi sous peine de sévères poursuites civiles et criminelles.
Les contrevenants seront poursuivis pour la peine maximale
possible.">
]>
<installation>
<page>
<titre> Installation de Axway Integration Platform</titre>
<licence>Copyright (c) Axway Software, 2004,
&contrat;</licence>
</page>
26
</installation>
Syntaxe XML

Exemple d ’appel d ’entité interne
27
DTD (Document Type Definition)
Qu’est ce qu’une DTD ?



XML permet d'utiliser un fichier afin de vérifier qu'un
document XML est conforme à une syntaxe donnée
une DTD est une grammaire permettant de vérifier la
conformité du document XML
la norme XML n'impose pas l'utilisation d'une DTD pour un
document XML, mais elle impose par contre le respect
exact des règles de base de la norme XML
28
DTD - Exemple
Définition d’une
grammaire définissant
la structure d’un
« carnet d’adresse »
29
DTD - Appels d ’entités

Appels d ’entités
 Entités
internes :
Permettent d ’éviter de saisir une grandes quantité de
caractères superflus,
 Peuvent être considérées comme des sortes de macros.

<!DOCTYPE class [
<!ELEMENT ...>
...
]>
 Entités

externes :
Objets externes tels qu ’une adresse URL ou un fichier
graphique prévu pour figurer dans le documents XML,
<!DOCTYPE class PUBLIC "name" "URL">
<!DOCTYPE class SYSTEM "filename">
30
DTD - Éléments

Exemple d ’appel d ’entité interne
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to
(#PCDATA)>
<!ELEMENT from
(#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body
(#PCDATA)>
]>
<note>
<to>Sydney</to>
<from>Vaughn</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>
31
DTD - Éléments

Exemple d ’appel d ’entité externe
 Appel dentité externe dans un document
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Sydney</to>
<from>Vaughn</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

XML
Fichier «note.dtd» contenant la DTD
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
note (to,from,heading,body)>
to (#PCDATA)>
from (#PCDATA)>
heading (#PCDATA)>
body (#PCDATA)>
32
DTD - Éléments

Pour pouvoir créer un document XML il est utile dans
un premier temps de définir les éléments pouvant être
utilisés :

Déclaration d ’une entité :
<!ELEMENT element-name category>
<!ELEMENT element-name (element-content)>
33
DTD - Éléments

Élément vide, sans contenu (EMPTY)
<!ELEMENT element-name EMPTY>
exemple :
<!ELEMENT br EMPTY>
exemple de document XML correspondant :
<br />

Élément de contenu quelconque (ANY)
<!ELEMENT element-name ANY>
exemple :
<!ELEMENT note ANY>
34
DTD - Éléments

Élément dont le contenu est une séquence de
caractères (#CDATA)


Pas de traitement du contenu par le parser
Élément dont le contenu est une séquence de caractère
« parsé » (#PCDATA)

Les marqueurs et les entités figurant dans la séquence de
caractères sont traités par le parser.
35
DTD - Éléments

Elément comprenant des fils (séquences) et une seule
occurrence de chaque (1,1)
<!ELEMENT element-name
(child-element-name)>
ou
<!ELEMENT element-name
(child-element-name,child-element-name,.....)>
exemple :
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT

note (to,from,heading,body)>
to
(#PCDATA)>
from
(#PCDATA)>
heading (#PCDATA)>
body
(#PCDATA)>
… il devra obligatoirement être de la forme :
36
DTD - Éléments

Contenu comprenant au moins une occurrence d ’un
même élément (1,N)
<!ELEMENT element-name (child-name+)>
exemple :
<!ELEMENT note (message+)>

Contenu pouvant comprendre plusieurs occurrences
d ’un même élément (0,N)
<!ELEMENT element-name (child-name*)>
exemple :
<!ELEMENT note (message*)>

Contenu pouvant comprendre une occurrence d ’un
élément (0,1)
<!ELEMENT element-name (child-name?)>
exemple :
<!ELEMENT note (message?)>
37
DTD - Éléments

Déclaration de contenu à base de ET / OU
exemple :
<!ELEMENT note (to,from,header,(message|body))>

Déclaration de contenu mixte
exemple :
<!ELEMENT note (#PCDATA|to|from|header|message)*>
38
DTD - Éléments

D'autre part, il est possible de définir des règles
d'utilisation, c'est-à-dire les éléments XML qu'un
élément peut ou doit contenir :
39
DTD - Attributs

Il est possible de définir les attributs d’un élément à
l’intérieur d ’une DTD

Une déclaration d'attributs spécifie la liste d'attributs
associés à un élément et a la forme
<!ATTLIST element-name attribute-name
attribute-type default-value>
exemple DTD :
<!ATTLIST payment type CDATA "check">
exemple XML :
<payment type="check" />
40
DTD - Attributs

attribute-type :
Valeur
CDATA
(en1|en2|..)
ID
IDREF
IDREFS
NMTOKEN
NMTOKENS
ENTITY
ENTITIES
NOTATION
xml:

Description
The value is character data
The value must be one from an enumerated list
The value is a unique id
The value is the id of another element
The value is a list of other ids
The value is a valid XML name
The value is a list of valid XML names
The value is an entity
The value is a list of entities
The value is a name of a notation
The value is a predefined xml value
delault-value :
Valeur
value
#REQUIRED
#IMPLIED
#FIXED value
Description
The default value of the attribute
The attribute value must be included in the element
The attribute does not have to be included
The attribute value is fixed
41
DTD - Attributs

Attribut par défaut
exemple de DTD :
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">
document XML valide :
<square width="100" />

Attribut optionnel
exemple de DTD :
<!ATTLIST contact fax CDATA #IMPLIED>
document XML valide :
<contact fax="555-667788" />
ou
<contact />
42
DTD - Attributs

Attribut obligatoire
exemple de DTD :
<!ATTLIST person number CDATA #REQUIRED>
document XML valide :
<person number=
"3134" />
document XML invalide :
<person />

Attribut « fixé à la valeur »
exemple de DTD :
<!ATTLIST sender company CDATA #FIXED "Microsoft">
document XML valide :
<sender company="Microsoft" />
document XML invalide :
<sender company= »Axway Software" />
43
DTD - Attributs

Attribut de type énuméré
<!ATTLIST element-name
attribute-name (en1|en2|..) default-value>
exemple de DTD :
<!ATTLIST peinture couleur (ROUGE|JAUNE|BLEU)"BLEU">
exemple XML :
<peinture couleur="ROUGE" />
ou
<peinture couleur="JAUNE" />
44
DTD - Exemple

Exemple de DTD :
<?xml version="1.0"?>
<!DOCTYPE message
[
<!ELEMENT message (subject, exp, dest, content, sign)>
<!ATTLIST message status ("private"|"public") "public">
<!ELEMENT subject (#PCDATA)>
<!ELEMENT exp (#PCDATA)>
<!ELEMENT dest (#PCDATA)+>
<!ELEMENT content (parag|image)*>
<!ELEMENT date (#PCDATA)?>
<!ELEMENT sign (#PCDATA)>
<!ELEMENT parag (#PCDATA)>
<!ELEMENT image EMPTY>
<!ATTLIST image source CDATA #REQUIRED>
]>
45
DTD / Schémas Avantages et inconvénients

Insuffisances des DTD :
Pas écrites en XML (2 langages différents à maîtriser)
 Support des types de données est très limité (10 types).
 Permettent pas de définir des vocabulaires complets et
évolutifs


Avantages des Schémas :
Type données : (39 types prédéfinis), créer ses propres types.
 Orienté objet : Notion de dérivation de types.
 Écrit en XML :

Pas besoin d’apprendre un autre langage,
Transformer et manipuler un Schéma avec les outils XML
46
DTD / Schémas Avantages et inconvénients
Schéma
DTD
<xsd:element name=« elt1 »>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=« s1 »
minoccurs=« 0 » maxoccurs=« unbounded »>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!ELEMENT
elt1(s1*)>
<xsd:element name=« elt1 »>
<xsd:complexType>
<xsd:choice>
<xsd:element
name=« s1 » type=« xs:string » />
<xsd:element
name=« s2 » type=”xs:date” />
</xsd:choice>
</xsd:complexType>
</xsd:element>
<!ELEMENT
elt1(s1|s2)>
47
Représentations Xml

Il existe deux représentations d’un document XML

Forme sérialisée : c’est la forme courante où le
contenu est marqué par des balises

Forme arborescente : elle met en évidence la
structure du document
48
Représentations Xml

La représentation sérialisée permet :

Le stockage de données sous forme fichier

L’échange de documents
<?xml version="1.0" encoding="ISO-8859-1" ?> <CINEMA>
<NOM>Epée de Bois</NOM>
<ADRESSE>100, rue Mouffetard</ADRESSE>
<METRO>Censier-Daubenton</METRO>
</CINEMA>
49
Représentations Xml

La représentation arborescente est utilisée par
certaines applications qui gèrent l’ensemble du
document en mémoire (parsers, éditeurs,…)
50
Représentations Xml

Un document XML est structuré sous forme d’arbre :
51
Parsing XML

La récupération des données encapsulées dans le
document nécessite un outil appelé analyseur
syntaxique (en anglais parser), permettant de
parcourir le document et d'en extraire les informations
qu'il contient.
On passe ainsi de la forme sérialisée à la forme
arborescente permettant à un programme de parcourir
le document Xml pour extraire les données
52
Parsing XML

On distingue deux types de parseurs XML :

Les parseurs validants (validating) permettant de
vérifier qu'un document XML est conforme à sa DTD

Les parseurs non validants (non-validating) se
contentant de vérifier que le document XML est bien
formé (c'est-à-dire respectant la syntaxe XML de base)
53
Parsing XML

Type de Parseurs :

DOM (Document Objet Model) :
Construction d’une représentation interne sous
forme d'arbre.
 Fourni une API qui permet par programmation :

• De construire des documents.
• De naviguer dans leur structures.
• De mettre à jour les éléments.

SAX : Simple Access XML
Lecture du document en entrée, reconnaissance
et interprétation des balises au fur et à mesure
 Aucun stockage d'informations


Utilisations :
• Recherche dans un document XML volumineux.
• Echange continue d’un flux XML entre deux systèmes.
54
Parsing XML

SAX est une API basée sur un modèle événementiel,
cela signifie que SAX permet de déclencher des
événements au cours de l'analyse du document XML.
Une application utilisant SAX implémente généralement
des gestionnaires d'événements, lui permettant
d'effectuer des opérations selon le type d'élément
rencontré

soit le document XML suivant :
<personne>
<nom>Baylot</nom>
<prenom>Lionel</prenom>
</personne>
55
Parsing XML

Les événements générés par Sax sont :
start document
start element: personne
start element: nom
characters: Baylot
end element: nom
start element: prenom
characters: Lionel
end element: prenom
end element: personne
end document
56
Parsing XML

DOM est une spécification du W3C (World Wide Web
Consortium) définissant la structure d'un document
sous forme d'une hiérarchie d'objets, afin de simplifier
l'accès aux éléments constitutifs du document

DOM permet à une application de parcourir la structure
du document et d'agir dynamiquement sur celui-ci
57
Parsing XML

DOM construit en mémoire une représentation
arborescente du document où :

chaque nœud est un objet de type Node

chaque catégorie syntaxique est représentée par un
sous-type de Node

la racine est un nœud spécial, de type Document
58
Parsing XML

Exemple de représentation DOM :
59
Parsing XML

L’ensemble du document est représenté par un nœud de type
Document : c’est la racine du document

Ce nœud peut avoir plusieurs fils, dont un et un seul de type
Element : c’est l’élément racine

Quelques exemples de fonctions DOM disponibles :
insertBefore() (Node nouv, Node fils)
replaceChild() (Node nouv, Node ancien)
removeChild() (Node fils)
boolean hasChildNodes()()
createElement(), createComment(), …
60
Parsing XML

Un traitement DOM s’effectue en trois phases



Un arbre vierge est créé en mémoire ou il est créé en
important un document Xml sérialisé
Des manipulations de cet arbre sont effectuées
L’arbre modifié est sérialisé à nouveau (par exemple
pour être stocké)
61

Il existe plusieurs sérialisations possibles pour un
même document :

ainsi cet arbre peut donner 3 versions sérialisées
« différentes » :
62
<?xml version="1.0"
?>
<A>
<!-commentaire
-->
<B>texte</B>
<C>
<D>1 <
2</D>
</C>
</A>
<?xml version="1.0" ?>
<A>
<!-- commentaire
->
<B>texte</B>
<C>
<D><![CDATA[1 <
2]]></D>
</C>
</A>
<?xml version="1.0" ?>
<!DOCTYPE A [
<!ENTITY file SYSTEM
"CetD.xml">
] >
<A>
<!-commentaire
-->
<B>texte</B>
&file;
</A>
-
63
Parsing XML

Exemple de programme DOM :
le programme prend en argument un nom de fichier
contenant un document XML
 il analyse ce document avec un parser DOM (ici
xerces)
 il parcourt ensuite les nœuds du document et numérote
les nœuds de type Text par leur position dans l’arbre
 ensuite le document modifié est à nouveau sérialisé

64
XSL (eXtensible StyleSheet Language)

Mise en page avec XSL (eXtensible StyleSheet
Language) :

XML est un langage de structuration des données, et
non de représentation des données.

XSL est un langage pour effectuer la représentation
des données de documents XML.

XSL est lui-même défini avec le formalisme XML, cela
signifie qu'une feuille de style XSL est un document
XML bien formé
65
XSL


Il est donc possible à partir d'un document XML de
créer des documents utilisant différentes
représentations (HTML pour créer des pages web,
WML pour les mobiles WAP, ...)
XSL est essentiellement utilisé pour transformer du
XML en HTML mais il est aussi capable de générer
des documents PDF, un autre document XML ou texte,
par exemple
66
XSL

Avantages du tandem XML – XSL :

La modification de l’aspect d’une page Web n’implique
que la modification du XSL

L’ajout d’une nouvelle donnée ou d’un nouveau champ
nécessite simplement l’ajout d’un nouvel élément dans
le XML

Les pages Web sont dynamiques et c’est primordial
quand le contenu d’une page n’est pas connu d’avance
67
XSL

XSL possède 2 composantes :

Le langage de transformation des données (XSLT, eXtensible
Stylesheet Transformation) permettant de transformer la structure
des éléments XML

Le processeur XSLT crée une structure arborescente à partir du
document XML et lui fait subir des transformations selon les
template rules contenues dans la feuille XSL pour produire un
arbre résultat représentant, par exemple, la structure d'un
document HTML

Le langage de formatage des données (XSL/FO), c'est-à-dire un
langage permettant de définir la mise en page (affichage de texte
ou de graphiques) de ce qui a été créé par XSLT
68
XSL
Fichier XML
Processeur XSL
Fichier HTML, XML,
texte, ou autre.
Fichier XSL
69
XSL
Fichier XSL
Fichier DTD
Fichier HTML
Fichier XML
Xerces
Xalan
70
XSL

Structure d’un document XSL :

Un document XSL étant un document XML, il commence
obligatoirement par la balise suivante :
<?xml version="1.0" encoding="ISO-8859-1" ?>

Toute feuille de style XSL est comprise entre les balises
<xsl:stylesheet ...> et </xsl:stylesheet>

La balise xsl:stylesheet encapsule des balises xsl:template
définissant les transformations à faire subir à certains
éléments du document XML
71
XSL

Une feuille de style XSL (enregistré dans un fichier
dont l'extension est .xsl) peut être liée à un document
XML (de telle manière à ce que le document XML
utilise la feuille XSL) en insérant la balise suivante au
début du document XML :
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="fichier.xsl" type="text/xsl"?>
72
XSL

Syntaxe :
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>Titre de la page</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<xsl:apply-templates/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="personne" >
<ul>
<li> <xsl:value-of select="nom"/> <xsl:value-of select="prenom"/>
</li>
</ul>
</xsl:template>
</xsl:stylesheet>
73
XSL

Signification de cette feuille XSL :

Le premier tag <xsl:template> permet d'appliquer une transformation
à l'ensemble du document (la valeur "/" de l'attribut match indique
l'élément racine du document XML). Ce tag contient des balises HTML
qui seront transmises dans l'arbre résultat

L'élément <xsl:apply-templates/> indique le traitement de tous les
enfants directs de la racine.

La balise <xsl:template match="personne"> permet d'aller traiter
les éléments de type personne

Enfin les deux éléments <xsl:value-of select="nom"/> et
<xsl:value-of select="prenom"/> permettent de récupérer les
valeurs des balises nom et prenom
74
XSL

Exemple :



Voici un exemple de ce qu’il faut écrire en HTML pour obtenir
un répertoire d’adresses sur Internet :
ex.html
On remarque d’ores et déjà que le code HTML à écrire n’est
pas clair car les informations et la mise en page sont
mélangées
75
XSL

Le XML suivant contient les mêmes informations que la
page HTML, mais il présente les avantage suivants :



l’information et la mise en page (les données et les
traitements) ne sont pas mélangées
la présence de la DTD permet de vérifier la syntaxe du
document (repertoire.dtd)
on peut par exemple, vérifier que l’on n’a pas oublié le
numéro de téléphone d’une personne lorsque celui-ci a
été défini comme obligatoire dans la DTD


cf. ex.xml
76
XSL

Le XSL suivant permet de transformer les données du
répertoire décrit en XML en fichier HTML
cf. ex.xsl
77
Téléchargement