Programmation d’applications pour le Web

28
1 1 Cours 2 ème année ING ISI-Tunis Année universitaire 2011/2012Semestre 2 Programmation d’applications pour le Web Chapitre 3 La technologie XML Définition eXensible Markup Language Un méta langage permettant la définition de langages adaptés à des besoins variés. Extensible et évolutif : les balises ne sont pas prédéfinies. Représentation de contenus indépendamment de toute application. Séparation entre contenu et forme. Langage strict : Syntaxe rigoureuse.

Transcript of Programmation d’applications pour le Web

Page 1: Programmation d’applications pour le Web

1

1

Cours 2ème année ING

ISI-Tunis

Année universitaire 2011/2012– Semestre 2

Programmation d’applications pour le Web

Chapitre 3

La technologie XML

Définition

eXensible Markup Language

Un méta langage permettant la définition de langages adaptés

à des besoins variés.

Extensible et évolutif : les balises ne sont pas prédéfinies.

Représentation de contenus indépendamment de toute application.

Séparation entre contenu et forme.

Langage strict : Syntaxe rigoureuse.

Page 2: Programmation d’applications pour le Web

2

Structure d’un document XML

<? xml version = "1.0" ?>

<? xml-stylesheet href = "messenger.xsl " type = "text/xsl" version = "1.0" ?>

<! DOCTYPE adresses SYSTEM " messenger.dtd">

<messenger>

<contact pseudo= "medba" >

<nom>Ben Ali</nom>

<prenom>Mohamed</prenom>

<pays>Tunisie</pays>

</contact>

</ messenger >

Entête du document

Corps du document

Les balises

Un élément constitutif d’un document XML repose sur un nom et un contenu.

Le contenu d’un élément est compris entre :

Une balise de début (balise d’ouverture).

Une balise de fin (balise de fermeture).

Balise de fermeture = balise d’ouverture + /

<pays>Tunisie</pays>

Contrairement à HTML, la balise de fermeture est nécessaire dans XML.

Page 3: Programmation d’applications pour le Web

3

Les noms de balises

Les noms peuvent contenir des caractères alphanumériques, de soulignement (_), de ponctuation (. , ;) et le trait d’union.

Les noms de balises sont sensibles à la casse.

<Pays> # <pays>

Les noms doivent commencer par un caractère alphabétique ou par le soulignement (_).

Certains caractères spéciaux sont permis mais peuvent fausser l’interprétation au niveau de certains programmes (> + é à ù ï ç)

Les noms ne peuvent pas contenir des espaces

Les noms ne peuvent pas commencer par la séquence xml

Les caractères interdits sont : ? $ ! < &

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 (‘ ‘)

Page 4: Programmation d’applications pour le Web

4

Les éléments vides

Les éléments qui ne possèdent pas de contenu sont dits

« vides » (Empty).

Intégrés au document pour la valeur de leurs attributs.

Une notation raccourcie permet d’associer la balise

d’ouverture et celle de fermeture

<mail href= "mailto:[email protected]"/>

Pour XML, deux notations équivalents pour les éléments vides

<mail href= "mailto:[email protected]"/>

<mail href= "mailto:[email protected]"> </mail>

Imbrication des éléments (1/2)

Tout document XML doit comporter une racine

Chaque élément du document XML peut contenir un ou

plusieurs éléments.

Chaque document XML est hiérarchisé dans une

arborescence.

<? xml version = "1.0" ?>

<messenger>

<contact pseudo= "medba" >

<nom>Ben Ali</nom>

<prenom>Mohamed</prenom>

<pays>Tunisie</pays>

</contact> <contact pseudo= « h_yassine" >

<nom>Herelli</nom>

<prenom>Yassine</prenom>

<pays>Tunisie</pays>

</contact>

</ messenger >

messenger

contact

nom prénom pays

contact

Racine Élément Parent

Élément Fils

Page 5: Programmation d’applications pour le Web

5

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" ?>

<messenger>

<contact pseudo= "XXX" >

</contact>

</ messenger >

<? xml version = "1.0" ?>

<messenger>

<contact pseudo= "XXX" >

</ 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" ?>

<messenger>

<contact pseudo= "XXX" >

</contact>

</ messenger >

<? xml version = "1.0" ?>

<messenger>

</ messenger >

<contact pseudo= "XXX" >

</contact>

Page 6: Programmation d’applications pour le Web

6

La déclaration XML

Généralement la première ligne d’un document XML.

Définir un document comme étant un document XML.

<?xml version= "1.0" encoding= "UTF-8 "?>

version : Numéro de la version de XML (1.0)

Encoding : Encodage (jeu de caractères) : ISO-8859-1 ,UTF-8

Déclaration facultative

Document « bien formé »

Un document XML bien formé (well formed) est un document

XML syntaxiquement correct :

Contient un ou plusieurs éléments (Non vide)

Structure hiérarchique

A chaque balise d’ouverture est associée une balise de fermeture.

Imbrication correcte : Pas de croisement entre balises ( du type <a><b></a>

</b>)

Respect de la casse

Les valeurs des attributs sont quottées (" " ou ‘ ‘)

Une seule racine

Caractères spéciaux

< &lt;

& &amp;

> &gt;

" &aquot;

Page 7: Programmation d’applications pour le Web

7

Exemple

Instructions de traitement

Type de document

Corps du document

Racine du document

Attribut

Element vide

Element non-vide

Commentaire

Balise d'ouverture Balise de fermeture

Declaration

<? xml version = "1.0" ?>

<? xml-stylesheet href = "http://cui.unige.ch/adressesToHTML.xsl"

type = "text/xsl" version = "1.0" ?>

<? cocoon-process type = "xslt" ?>

<! DOCTYPE adresses SYSTEM "http://cui.unige.ch/adresses.dtd">

<!--Ceci est un commentaire-->

< adresses>

<personne id= "marchand " >

<type classe= "enseignant" rang="MA"/>

<nom>Marchand-Maillet</nom>

<prenom>Stéphane</prenom>

<adresse>CUI, Université de Genève</adresse>

</personne>

</adresses >

Entête du document

Exercice 1

Écrire un document XML permettant de maintenir une liste de contacts dans un 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>

Page 8: Programmation d’applications pour le Web

8

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.

Une DTD définit la filiation des éléments :

Quelle est la racine du document ?

Qui doit/peut avoir quels fils ?

Quels sont les éléments (attributs) obligatoires et ceux optionnels ?

Combien d’enfants possède un élément ?

Quels éléments peuvent contenir du texte ?

Quelles sont les valeurs des attributs ?

Document Valide

Document bien formé

Respect de la syntaxe XML.

Document valide

Respect d’une DTD spécifiée (Conformité par rapport à

une DTD)

Page 9: Programmation d’applications pour le Web

9

Déclaration d’une DTD

1. Déclaration de la DTD à l’intérieur du fichier XML.

2. Déclaration de la DTD en tant que DTD « privée ». Cette DTD

sera enregistrée dans un fichier autonome.

<? xml version = "1.0" standalone= "yes"?>

<!DOCTYPE contacts[

<! ELEMENT contacts (#PCDATA)>

]>

<contacts></contacts>

<? xml version = "1.0" ?>

<!DOCTYPE contacts SYSTEM "contacts.dtd ">

<contacts></contacts>

Déclaration des éléments (1/5)

Déclaration de chaque élément qui apparaît à l’intérieur d’un

fichier XML.

<!ELEMENT nom_element (regle)>

nom_element obéit aux règles syntaxiques concernant les

noms des éléments XML.

regle peut avoir la forme suivante

ANY : L’élément peut contenir des éléments fils.

#PCDATA : L’élément ne peut contenir que des caractères (pas d’éléments

fils)

<!ELEMENT titre (#PCDATA)>

<titre> Le Rouge et le Noir </titre>

EMPTY : L’élément doit obligatoirement être un élément vide.

Page 10: Programmation d’applications pour le Web

10

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)>

Séquence non ordonnée : (fils1|fils2|fils3)

<!ELEMENT date (mois|annee)>

<date>

<mois>10</mois>

<annee>2006</annee>

</date>

<date>

<annee>2006</annee>

<mois>10</mois>

</date>

<date>

<annee>2006</annee>

</date>

<date>

<mois>10</mois>

<annee>2006</annee>

</date>

<date>

<annee>2006</annee>

<mois>10</mois>

</date>

<date>

<annee>2006</annee>

</date>

Déclaration des éléments (3/5)

Séquence non ordonnée : (fils1&fils2&fils3)

<!ELEMENT date (mois&annee)>

<date>

<mois>10</mois>

<annee>2006</annee>

</date>

<date>

<annee>2006</annee>

<mois>10</mois>

</date>

<date>

<annee>2006</annee>

</date>

Page 11: Programmation d’applications pour le Web

11

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.

La déclaration des éléments équivalente à l’exemple précédent

est :

<!ELEMENT date (mois,annee)>

<!ELEMENT mois (#PCDATA)>

<!ELEMENT annee (#PCDATA)>

<date>

<mois>10</mois>

<annee>2006</annee>

</date>

Déclaration des éléments (5/5)

On peut utiliser une séquence ordonnée et une séquence non

ordonnée au niveau d’une même déclaration d’un élément.

<!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

Page 12: Programmation d’applications pour le Web

12

Occurrence des éléments

Autoriser un certain nombre de répétitions au niveau d’un

élément.

<!ELEMENT livre (titre,auteur+)>

Un livre doit avoir un ou plusieurs auteurs.

X? L’élément X doit apparaître 0 ou 1 fois

X+ L’élément X doit apparaître 1 ou n fois

X* L’élément X doit apparaître 0 ou n fois

Déclaration des attributs (1/5)

Déclaration des attributs d’une balise

<!ATTLIST nom_elmt nom_attribut type_attribut val_defaut>

nom_elmt : la balise à laquelle on précise la liste des attributs

nom_attribut : le nom de l’attribut qu’on va ajouter

type_attribut : règle qu’un attribut doit respecter

val_defaut : valeur par défaut

Exemples

<!ATTLIST rectangle longueur CDATA "0">

<!ATTLIST rectangle largeur CDATA "0">

<!ATTLIST personne situation (célibataire | mariée | divorcée) #IMPLIED>

Page 13: Programmation d’applications pour le Web

13

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">

#REQUIRED L’attribut doit être spécifié.

#IMPLIED L’attribut est optionnel.

#FIXED "val" La valeur de l’attribut est fixé et ne doit

pas être changé.

"val" La valeur par défaut.

Déclaration des attributs (3/5)

Types possibles pour les attributs :

Exemples :

<!ATTLIST rectangle largeur CDATA "0">

<!ATTLIST personne situation (célibataire|mariée|divorcée) #IMPLIED>

CDATA Character DATA : d’une manière plus simple, du TEXT.

Enumération La liste des valeurs uniquement à partir des quels on

peut choisir les valeurs d’un attribut.

ID Identifiant unique.

IDREF Référence à un identifiant unique.

IDREFS Multiples références (séparées par un espace) sur des

identifiants uniques.

Page 14: Programmation d’applications pour le Web

14

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>

Déclaration des attributs (5/5)

La DTD équivalente à l’exemple précédent est :

<?xml version="1.0" encoding="UTF-8"?>

<!ELEMENT personnels (employe+)>

<!ELEMENT employe EMPTY>

<!ATTLIST employe

ide ID #REQUIRED

directeur IDREF #IMPLIED

collegues IDREFS #IMPLIED

>

Page 15: Programmation d’applications pour le Web

15

Exercice 2

Écrire la DTD relative au document XML de l’exercice 1.

<!ELEMENT carnet (contacts)>

<!ELEMENT contact (nom, prenom, pseudo, mail1, mail2, tel_bur, tel_mob)>

<!ATTLIST contact

id ID #REQUIRED

>

<!ELEMENT contacts (contact)>

<!ELEMENT mail1 (#PCDATA)>

<!ELEMENT mail2 (#PCDATA)>

<!ELEMENT nom (#PCDATA)>

<!ELEMENT prenom (#PCDATA)>

<!ELEMENT pseudo (#PCDATA)>

<!ELEMENT tel_bur (#PCDATA)>

<!ELEMENT tel_mob (#PCDATA)>

Limites DTD

Une DTD n’est pas un document XML.

Les DTD ne supportent pas les espaces de noms.

Typage des données limité.

Page 16: Programmation d’applications pour le Web

16

XSD

XSD : XML Schema Definition

Définition d’une classe de définition de documents XML.

Éléments et leurs attributs,

Imbrication des éléments,

Ordre d’apparition des éléments,

Et plus

Un document XSD est un document XML.

Le vocabulaire de XML Schema est composé d’environ 30

éléments et attributs.

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

Page 17: Programmation d’applications pour le Web

17

Exemple de XSD

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<!-- déclarations de éléments -->

<xsd:element name="classe" type="typeClasse"></xsd:element>

<xsd:element name="remarque" type="xsd:string">

</xsd:element>

<!-- déclarations des types complexes -->

<xsd:complexType name="typeClasse">

<xsd:attribute name="code" type="xsd:string" />

</xsd:complexType>

</xsd:schema>

Déclaration des éléments

2 types d’éléments

Type Complexe : Éléments contenant des éléments fils ou des attributs.

Type Simple : Éléments ne contenant des éléments fils ni des attributs.

Syntaxe

<xsd:element name="element_name" type="element_type">

</xsd:element>

Chaque élément element_name déclaré est associé à un type (

element_type) de données via l'attribut type.

Page 18: Programmation d’applications pour le Web

18

Déclaration des attributs

Un attribut ne peut être que de type simple (Similaire à DTD)

Les déclarations d'attributs doivent impérativement être placées aprè

s les définitions des types complexes.

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>

Contraintes d’occurrence (1/2)

Syntaxe

<xsd:attribute name="attName" type="attType"

use="Occurence" default="defaultValue" />

Use : occurrence de l’attribut attName.

Default : Valeur par défaut de l’attribut, doit être du même type que

attType

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" />

Page 19: Programmation d’applications pour le Web

19

Contraintes d’occurrence (2/2)

Tableau comparatif des indicateurs d’occurrences

en DTD et XSD

DTD XSD

use default fixed

#REQUIRED required - -

"yes" #REQUIRED required "yes" -

#IMPLIED optional - -

"yes" #IMPLIED optional "yes" -

#FIXED "yes" - - "yes"

Types de données Simples

Les types de données simples ne peuvent pas contenir

Des éléments fils,

Des attributs.

Hiérarchie des types simples prédéfinies

Page 20: Programmation d’applications pour le Web

20

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>

Types de données Complexes (2/4)

B. Choix d'éléments

Analogie à l’opérateur | au niveau de DTD

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>

Page 21: Programmation d’applications pour le Web

21

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>

Types de données Complexes (4/4)

Création d’un type complexe à partir d’un type simple

Valeur simple

Attribut

Exemple

<poids unite="kg">67</poids>

Syntaxe

<xsd:complexType name="typePoids">

<xsd:simpleContent>

<xsd:extension base="xsd:positiveInteger">

<xsd:attribute name="unite" type="xsd:string" />

</xsd:extension>

</xsd:simpleContent>

</xsd:complexType>

Page 22: Programmation d’applications pour le Web

22

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.

DTD XSD

minOccurs maxOccurs

* 0 unbound

+ 1 unbound

? 0 1

- 1 1

Exercice 3

Écrire un XSD validant le document XML de l’exercice 1.

Solution

Page 23: Programmation d’applications pour le Web

23

XSL

XSL : eXtensive Stylesheet Langage.

XSL a été créé comme langage de feuilles de style général pour

les données XML afin de formater les données XML.

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

la présentation de données, comme la numérotation

au tomat i que de chapi t re ou des fonct i ons de t r i .

Contient en plus des constructions telles que des instructions

conditionnelles ou des instructions pour des boucle.

Composants XSL

La recommandation XSL du W3C est basée sur 2 composants :

Un composant pour le formatage de données XML (XSL-FO : "XSL

Formatting Objects" ).

Un composant pour la transformation de données XML en d’autres

données XML (XSLT : "XSL Transformation" )

Feuille de Style

XSL

Transformation

XSL

Document

Source

Document

Final

Page 24: Programmation d’applications pour le Web

24

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é.

La déclaration XSL sera faîtes grâce à <xsl:stylesheet et vient juste

après l'en-tête et comprendra ainsi toute les déclarations relatives au

formatage et traitement du document XML.

Au niveau du fichier XSL

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Tra

nsform">

</xsl:stylesheet>

Au niveau du fichier XML

<?xml:stylesheet type="text/xsl" href="biblio.xsl"?>

Exemple de mise en forme avec XSL (1/3)

Soit le document XML suivant

<?xml version="1.0" encoding="UTF-8"?>

<?xml:stylesheet type="text/xsl" href="biblio.xsl"?>

<bibliotheque>

<livre>

<titre>XML</titre>

<auteur>Yves Dubois </auteur>

<auteur>Benoit Marchal</auteur>

<edition>Campus Press</edition>

<ISBN>2744009245</ISBN>

</livre>

<livre>

<titre>Objet Relationnel sous Oracle8 </titre>

<auteur>Christian Soutou</auteur>

<annee>2005</annee>

<edition>Eyrolles</edition>

<ISBN>2212090633</ISBN>

</livre>

</bibliotheque>

Page 25: Programmation d’applications pour le Web

25

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:

Exemple de mise en forme avec XSL (3/3)

Ce document XSL(T) est le suivant :

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://w

ww.w3.org/1999/XSL/Format">

<xsl:template match="/">

<html><head><title>Gestion de Bibliothèque</title></head><body>

<h1>Liste des livres</h1>

<table border="1">

<tr>

<td>Titre</td>

<td>Auteur</td>

</tr>

<xsl:for-each select="bibliotheque/livre">

<tr> <td><xsl:value-of select="titre"></xsl:value-of></td>

<td><xsl:value-of select="ISBN"></xsl:value-of></td></tr>

</xsl:for-each>

</table>

</body></html>

</xsl:template>

</xsl:stylesheet>

Page 26: Programmation d’applications pour le Web

26

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

Les expressions de sélection (2/2)

2. Sélection d’attributs :

Les attributs d'un élément sont sélectionnés pas la notation @attribute.

elmnt[@attr] sélectionne les éléments « elmnt » ayant comme attribut

« attr »

elmnt[@attr="id"] sélectionne les élément « elmnt » ayant comme

attribut « attr » et dont sa valeur est égale à «id ».

Exemple

<xsl:value-of select="livre[@langue]>

<xsl:value-of select="livre[@langue="fr"]>

Page 27: Programmation d’applications pour le Web

27

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"

/>

Notions fondamentales (2/3)

method : méthode de transformation.

version : version de la méthode de sortie (xml 1.0, html 4.01...).

encoding : version du jeu de caractères à utiliser pour la sortie.

omit-xml-declaration : indiquer au processeur XSLT l'ajout ou non d'

une déclaration XML.

standalone : création ou pas d’un arbre de sortie avec ou sans déclarati

on de type de document.

3. <xsl:value-of>

Insertion de la valeur d’un élément ou d’un attribut lors de la

transformation.

<xsl:value-of select="titre"/>

select : évaluation de l'expression donnée, et insertion du résultat dans la

transformation.

Page 28: Programmation d’applications pour le Web

28

Notions fondamentales (3/3)

4. <xsl:template>

Cet élément définit le modèle à appliquer à un noeud et à un contexte

spécifique.

<xsl:template name="nommodele" match="expression">

</xsl:template>

name correspond au nom associé au modèle.

match indique quel jeu de noeuds sera affecté par le modèle. Cette exp

ression peut comprendre un test d'existence d'attribut.

Questions ?