• Aucun résultat trouvé

[PDF] Support de cours sur les schémas XSD et les transformations XSLT | Formation informatique

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Support de cours sur les schémas XSD et les transformations XSLT | Formation informatique"

Copied!
36
0
0

Texte intégral

(1)

Le langage de Transformation XSL



Formatage d’un document XML,



Le langage XSLT:



Le langage XSLT:



Définition,



Principe de fonctionnement,



Structure d’une feuille de style,



Format d’une règle de transformation,



Tri, Choix et Filtre avec XSLT

(2)

Formatage d’un document XML

CSS:

CSS1 et CSS2 (Cascading Style Sheets) sont des feuilles de style dédiées

à la présentation visuelle de documents XML.

XSL:

Le langage XSL eXtensible Stylesheet Language), permet d’effectuer des

Le langage XSL eXtensible Stylesheet Language), permet d’effectuer des

transformations sur un document XML.

API:

Une autre façon de formater un document consiste à modifier son

contenu par un programme (Java, C++, PERL,…), pour aboutir à un

document HTML ou un format de sortie donnée.

Les deux principales catégories d’API sont (SAX pour Simple API XML

et DOM pour Document Object Model)

2 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(3)

Le langage XSLT

Le langage XSL (eXtensible Style Language) a été conçu pour

transformer des documents XML en d'autres formats comme PDF ou

des pages HTML.

Il est constitué de 2 langages:



XSLT (pour XML Stylesheet Language Transformation) est un langage

de transformation de documents XML.



XSL-FO (pour XML Stylesheet Language - Formatting Objets) est un

langage de mise en page de document.

Ces 2 langages sont des applications XML.

3 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(4)

Définition

XSLT est un langage qui permet d’appliquer des règles de

transformation sur un document XML donné en entrée, et de

générer en sortie un document XML, HTML ou une autre forme.

Le processus de transformation d'un document XML en un

document imprimable, au format PDF par exemple, est donc

découpé en deux phases:

1- le document XML est transformé en un document

XSL-FO à l'aide de feuilles de style XSLT.

2- Dans la seconde phase, le document FO obtenu à la

première phase est converti par un processeur FO en un document

imprimable.

4 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(5)

Principe de fonctionnement



Une transformation XSLT- appelée une feuille de style – consiste

en une série de règles pour transformer un arbre source (source

tree) XML en un arbre résultant (result tree).

tree) XML en un arbre résultant (result tree).



La transformation se fait en associant des motifs (patterns) à

des modèles (templates)et en les appliquant aux éléments de

l’arbre source.

5 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(6)

Exemple

Soit un document XML: catalogue.xml

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

<?xml-stylesheet type="text/xsl" href="transfo.xsl"?>

<Catalogue>

<Catalogue>

<CD>

<!-- Bon CD -->

<Titre> Best of Bob Dylan<Titre>

<Jacket NOM="dylan.gif"/ >

<?audio dylan.mp3?>

</CD>

</Catalogue>

6 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(7)

Exemple:

L’ arbre associé

Racine

PI: xml-stylesheet

El: Catalogue

El: CD

Commentaire

El: Titre

El: Jacket

PI: audio

Texte

Texte

Att: Nom

7 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(8)

Structure d’une feuille de style XSLT

<?xml version="1.0" ?>

<xsl:stylesheet

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

version="1.0">

<!-- les règles de transformations -->

...

...

</xsl:stylesheet>

Remarque:

Toutes les instructions XSL appartiennent à l’espace de noms

xsl

, elles commencent toutes par

xsl:

8 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(9)

Format d’une règle de transformation

Un

motif

est une expression qui identifie le/les nœud(s)

XML du document qui est/sont concerné(s) par la règle et

sur le(s) quel(s) il faut appliquer une action

Une

action

est une opération qui réalise la transformation

et/ou spécifie les caractéristiques de la présentation

<xsl:template match=‘

un motif

’>

[action]

</xsl:template>

9 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(10)

Exemple 1: document demo.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"

href="demo.xsl"?>

href="demo.xsl"?>

<demoXML>

<message>

Voici du XML

</message>

</demoXML>

10 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(11)

Exemple1: le document xsl associé demo.xsl

<?xml version="1.0"?>

<xsl:stylesheet

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

version="1.0">

<xsl:template match="

/

">

<xsl:template match="

/

">

<html>

<body>

<

xsl:value-of select

="demoXML/message"/>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

11 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(12)

Remarques:



La balise

<xsl:value-of>

permet de sélectionner un

élément du fichier XML pour le traiter dans le fichier XSL.

Dans l'attribut

select

, on détermine le chemin d'accès vers

la balise XML souhaitée.

la balise XML souhaitée.



La balise

template

indique le format de transformation

L’attribut

match

mentionne les éléments qui sont concernés

par la transformation,



/

indique l'élément racine et tous les sous éléments

12 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(13)

Exemple 2: enfants.xml (IE!)

Enfants.xml

<?xml version="1.0"

encoding="ISO-8859-1"?>

<?xml-stylesheet href="enfants.xsl"

type="text/xsl"?>

<enfants>

<enfant>

<nom>Ali</nom>

Enfants.xsl

<?xml version="1.0" encoding="ISO-8859-1"?> <html xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<body style="family:Arial; font-size:12pt;">

<xsl:for-each select="enfants/enfant"> <div style="background-color:teal; color:white;">

<span style="font-weight:bold; color:white;

<nom>Ali</nom>

<lien>garçon</lien>

<date>07/11/83</date>

<data>Une tête brulée!</data>

</enfant>

<enfant>

<nom>Samia</nom>

<lien>fille</lien>

<date>20/12/85</date>

<data>La petite fille chérie à

son papa.</data>

</enfant>

</enfants>

<span style="font-weight:bold; color:white; padding:4px">

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

<xsl:value-of select="lien"/> </span> </div>

<div style="margin-left:20px; font-size:10pt">

<span> Anniversaire le <xsl:value-of select="date"/> </span> <span style="fontstyle:italic"> -<xsl:value-of select="data"/> </span> </div> </xsl:for-each> </body> </html>

(14)

Le langage XSLT: exemple

(15)

Exemple 3: compilation.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"

href="compilation.xsl"?>

<compilation>

<mp3>

<titre>Foule sentimentale</titre>

<artiste>Alain Souchon</artiste>

<mp3>

<titre>Pourtant</titre>

<artiste>Vanessa Paradis</artiste>

</mp3>

<mp3>

<titre>Chambre avec vue</titre>

<artiste>Henri Salvador</artiste>

<artiste>Alain Souchon</artiste>

</mp3>

<mp3>

<titre>Solaar pleure</titre>

<artiste>MC Solaar</artiste>

</mp3>

<mp3>

<titre>Le baiser</titre>

<artiste>Alain Souchon</artiste>

</mp3>

<artiste>Henri Salvador</artiste>

</mp3>

</compilation>

15 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(16)

Exemple 3: films.xml

<?xml version="1.0"

encoding="ISO-8859-1"?>

<?xml-stylesheet type="text/xsl"

href="films.xsl"?>

<films>

<film>

<titre>Papa est en vayage

<film>

<titre>Le tableau noir</titre>

<realisateur>Samira

Makhmalbaf</realisateur>

</film>

<film>

<titre>Chat noir chat blanc</titre>

<realisateur>Emir

<titre>Papa est en vayage

d'affaires</titre>

<realisateur>Emir

Kusturica</realisateur>

</film>

<film>

<titre>Matador</titre>

<realisateur>Pedro

Almodovar</realisateur>

</film>

<realisateur>Emir

Kusturica</realisateur>

</film>

<film>

<titre>Amores perros</titre>

<realisateur>Alejandro

gonzales</realisateur>

</film>

</films>

16 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(17)

Exemple 3: La feuille associée films.xsl

<?xml version='1.0'

encoding="ISO-8859-1"?>

<xsl:stylesheet

xmlns:xsl="http://www.w3.org/1999

/XSL/Transform" version="1.0">

<xsl:template match="/">

<html>

<td>

<xsl:value-of

select="films/film/titre"/>

</td>

<td>

<xsl:value-of

select="films/film/realisateur"/>

<html>

<body>

<table border="1"

cellspacing="0" cellpadding="3">

<tr bgcolor="#FFFF00">

<td>Titre</td>

<td>Réalisateur</td>

</tr>

<tr>

select="films/film/realisateur"/>

</td>

</tr>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

17 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(18)

Le résultat

18 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(19)

Sélection de tous les titres: filmsTous.xsl

Pour afficher tous les éléments, on ajoute la balise:

xsl:for-each

(pour chaque)

avec comme attribut select="films/film"

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

<xsl:stylesheet

xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="/">

<html>

<body>

<table border="1" cellspacing="0" cellpadding="3">

<tr bgcolor="#FFFF00">

<td>Titre</td>

Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014 19

<td>Titre</td>

<td>Réalisateur</td>

</tr>

<xsl:for-each select="films/film">

<tr>

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

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

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

(20)

Le résultat

20 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(21)

Les autres possibilités du langage XSLT

Le langage XSLT permet aussi de :



trier les données XML en ordre croissant ou

décroissant.

décroissant.



filtrer des éléments XML en fonction de certains

critères.



choisir des éléments.



retenir des éléments par des tests conditionnels.

21 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(22)

Trier avec XSLT

1- il suffit d'ajouter l'attribut:

order-by="+balise"

pour trier en ordre croissant et

order-by="-balise"

pour trier en ordre décroissant.

pour l'espace de nom:

xmlns:xsl="http://www.w3.org/TR/WD-xsl

xmlns:xsl="http://www.w3.org/TR/WD-xsl

2- Ou bien, l'attribut:

order="ascending"

pour trier en ordre croissant et

order="descending"

pour trier en ordre décroissant.

pour l'espace de nom:

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

22 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(23)

Trier avec XSLT: filmsO1.xsl

Trier en ordre alphabétique croissant

du nom des réalisateurs

<?xml version='1.0'

encoding="ISO-8859-1"?>

<xsl:stylesheet

xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<!-- xsl:stylesheet

<xsl:for-each

select="films/film"

order-by="+realisateur"

>

<tr>

<td><xsl:value-of

select="realisateur"/> </td>

<td><xsl:value-of

<!-- xsl:stylesheet

xmlns:xsl="http://www.w3.org/1999/X

SL/Transform" version="1.0"-->

<xsl:template match="/">

<html>

<body>

<table border="1" cellspacing="0"

cellpadding="3">

<tr bgcolor="#FFFF00">

<td>Réalisateur</td>

<td>Titre</td>

</tr>

<td><xsl:value-of

select="titre"/></td>

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

23 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(24)

Le résultat

24 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(25)

Trier avec XSL: filmsO2.xsl

Trier en ordre alphabétique croissant

du nom des artistes.

<?xml version='1.0'

encoding="ISO-8859-1"?>

<xsl:stylesheet

xmlns:xsl="http://www.w3.org

/1999/XSL/Transform"

version="1.0">

<xsl:template match="/">

<xsl:for-each

select="films/film">

<xsl:sort

select="realisateur"

order="descending" />

<tr>

<td><xsl:value-of

select="realisateur"/>

</td>

<xsl:template match="/">

<html>

<body>

<table border="1"

cellspacing="0"

cellpadding="3">

<tr bgcolor="#FFFF00">

<td>Réalisateur</td>

<td>Titre</td>

</tr>

</td>

<td><xsl:value-of

select="titre"/></td>

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

25 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(26)

Le résultat

26 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(27)

Filtrer avec XSLT

Le langage XSLT permet de filtrer les données du fichier XML

associé selon les critères:

égal, pas égal, plus grand que, plus petit que

Pour ce faire, on utilise l'attribut:

select="chemin_d'accès[balise='xxx']"

Les opérateurs possibles sont :

=

pour

égal

.

!=

pour

différent

.

&gt;

pour

plus grand que

.

&lt;

pour

plus petit que

.

27 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(28)

Filtrer avec XSLT: compilationFiltre.xsl

La sélection des titres de l'artiste Alain Souchon.

L'attribut

select

devient:

select="films/film[realisateur='Emir Kusturica']"

<?xml version='1.0'

encoding="ISO-8859-1"

?>

<xsl:stylesheet

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

version="1.0">

<xsl:template match="/">

<html>

<body>

<table border="1" cellspacing="0" cellpadding="3">

<tr bgcolor="#FFFF00">

<tr bgcolor="#FFFF00">

<td>Titre</td>

<td>Réalisateur</td>

</tr>

<xsl:for-each

select="films/film[realisateur='Emir Kusturica']"

>

<tr>

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

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

</tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

28 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(29)

Filtrer avec XSLT:

29 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(30)

Le Choix avec XSLT

La balise

<xsl:if> ... </xsl:if>

permet

d'effectuer un choix dans les données du fichier XML.

On ajoute l'attribut

match

où l'on indique l'élément

choisi.

<xsl:if match=".[balise='xxx']">

balises Html

</xsl:if>

30 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(31)

Le choix avec XSLT: filmsChoix.xsl

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

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<!--xsl:stylesheet

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

version="1.0"-->

<xsl:template match="/">

<html>

<body>

<table border="1" cellspacing="0" cellpadding="3">

<tr bgcolor="#FFFF00">

<td>Titre</td>

<td>Réalisateur</td>

</tr>

</tr>

<xsl:for-each select="films/film">

<xsl:if match=".[realisateur='Samira Makhmalbaf']">

<tr>

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

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

</tr>

</xsl:if>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

31 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(32)

Le choix avec XSLT: résultat

32 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(33)

Le choix conditionnel: compilationCond.xsl

Le choix conditionnel se fait avec:

<xsl:choose>.

<xsl:when

une action

xsl:otherwise

une autre action

</xsl:choose>

<xsl:choose>

<xsl:when

test=".[artiste='Emir Kusturica']">

<tr bgcolor="#00FF00">

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

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

</tr>

</xsl:when>

<xsl:otherwise>

<tr>

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

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

</tr>

</xsl:otherwise>

</xsl:choose>

33 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(34)

XSLT: Choix conditionnel

<?xml version='1.0'

encoding="ISO-8859-1"?>

<xsl:stylesheet

xmlns:xsl="http://www.w3.org/TR/W

D-xsl">

<xsl:template match="/">

<html>

<body>

<table border="1" cellspacing="0"

cellpadding="3">

<tr bgcolor="#FFFF00">

<xsl:otherwise>

<tr>

<td><xsl:value-of

select="titre"/></td>

<td><xsl:value-of

select="realisateur"/></td>

</tr>

</xsl:otherwise>

</xsl:choose>

<tr bgcolor="#FFFF00">

<td>Réalisateur</td>

<td>Titre</td>

</tr>

<xsl:for-each

select="films/film">

<xsl:choose>

<xsl:when

test=".[realisateur='Emir

Kusturica']">

<tr bgcolor="#00FF00">

<td><xsl:value-of

select="titre"/></td>

<td><xsl:value-of

select="realisateur"/></td>

</tr>

</xsl:when>

</xsl:choose>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

(35)

Le choix conditionnel: résultat

Tous les titres d'Alain Souchon seront affichés dans une colonne verte, les

autres seront affichés normalement.

35 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

(36)

Plusieurs choix sur la sélection

<xsl:choose>

<xsl:when test="quelque-chose">

[action]

</xsl:when>

<xsl:when test="autre-chose">

[action]

[action]

</xsl:when>

...

<xsl:otherwise>

[action]

</xsl:otherwise>

</xsl:choose>

36 Prof. M.D.RAHMANI Technologies XML Master IT 2013-2014

Références

Documents relatifs

Le but principal de cet essai clinique est de vérifier si le sodium de monensîn utilisé à une concentration de 16 ppm chez des troupeaux laitiers commerciaux provoque une hausse de

Ces données sont devenues une véritable monnaie d’échange pour lutter contre la criminalité internationale et l’échange des données la principale activité du Parquet

Il en va vraisemblablement de même pour ce qui, présenté comme des « frappes ciblées » contre des terroristes, s’apparente à des exécutions extra-judiciaires

D’abord, le programme de danse pour le secondaire est, à l’instar de celui pour le primaire, structuré autour de la démarche disciplinaire, cette fois définie en

Cette collision politique avec le siècle se trouve aussi dans la scène de la Nuit de Walpurgis du Faust I goethéen, quoique quelque peu atténuée, puisque Faust

Dans cette optique, onze amusiques et leurs contrôles appariés ont jugé des extraits de musique classique gais et tristes, dans leur forme originale et dans deux

De ce fait, il est très étonnant de voir que les lecteurs-destinataires de ces informations sont des ibères (et non des grecs ou des latins). Les ibères de- vaient donc jouer un

ةطلسلا لاقتناو &#34;وام&#34; ينيصلا ميعزلا ةافو تلكش تاينيعبسلا فصتنم يف ىلإ ةدايق إرثكأ ةيتامغااب او لادتع غنيد&#34; ايس و