Académique Documents
Professionnel Documents
Culture Documents
Form XSL Intro
Form XSL Intro
Sadok.benyahia@fst.rnu.tn
Objectifs
Transformation de documents
Sélection
Filtrage
Présentation de documents
HTML, XHTML
2
Notre exemple d ’annuaire
<annuaire>
<entete>
<responsable>Samir</responsable>
<dateRevision>20 septembre 2011</dateRevision>
</entete>
<membre>
<prenom>Chiraz</prenom><nom>Cherif</nom>
<tel type="fax"> + 216 71 885 890</tel>
<tel type="bureau"> + 216 71 560 830</tel>
<adresse>
<rue>Campus Universitaire, BP 1060</rue>
<ville> Tunis</ville>
<codePostal>54506</codePostal>
<pays>TUNISIE</pays>
</adresse>
<département href="departements.xml#informatique"/>
</membre>
</annuaire>
3
Une feuille de style...
4
Exemple de structure XSL
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
</xsl:template>
<xsl:template match="annuaire">
</xsl:template>
</xsl:stylesheet>
5
Structure des règles (template)
caractéristiques de la présentation
6
Structure d ’une règle
7
Structure d ’une règle (exemple)
<xsl:template match=‘annuaire’>
<xsl:apply-templates/>
</xsl:template>
8
Création d’une feuille de style (1)
Créer une règle pour chacun des types de nœuds dans notre
document (DTD en fait)
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="annuaire">
<xsl:apply-templates/>
</xsl:template> ...
... <xsl:template match="departement">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="."/>
</xsl:template>
9
Explication <xsl:value-of select >
<xsl:value-of select="."/>
Dans notre cas, la chose est un nœud de type texte donc ce qui
lui-même.
10
Création d’une feuille de style (2)
supprimer l'instruction :
<xsl:apply-templates/>
11
Création d’une feuille de style (3a)
<HTML>
<HEAD>Annuaire</HEAD>
<BODY>
...
</BODY>
</HTML>
12
Création d’une feuille de style (3b)
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>Annuaire</TITLE>
</HEAD> Ajout
<BODY>
<xsl:apply-templates/>
</BODY>
</HTML>
</xsl:template>
...
13
HTML: Mise en forme du texte
Gras[Bold] <B>...</B>
<STRONG>...</STRONG> Début et fin de zone en gras
Italique[Italic] <I>...</I>
<EM>...</EM> Début et fin de zone en italique
14
HTML: Les titres
En-têtes [Heading] <Hn></Hn> avec n=1 à 6 : Afficher une en-tête de niveau n et sauter
une ligne
Liste non-ordonnée [Bullet list]<UL></UL> :Afficher le texte sous forme d'une liste non-
ordonnée.
<FONT…> ... </FONT> : Agit sur la police, la couleur et la taille des caractères.
15
HTML: Les titres
16
HTML: Les titres (exemple)
17
HTML: Les images
Dimensions width=?
Height=? Hauteur et largeur (en pixels)
Alignement align=top
align=middle
align=botton
align=left
align=right 18
HTML: Les images …
19
HTML: Les tableaux
<TABLE>
<TR><TD>1</TD><TD>2</TD></TR>
<TR><TD>3</TD><TD>4</TD></TR>
</TABLE>
20
HTML: Les tableaux
Bordure de cadre
[Border] <TABLE border=?
></TABLE>
<TABLE border=2>
<TR><TD>1</TD><TD>2</TD></TR>
<TR><TD>3</TD><TD>4</TD></TR>
</TABLE>
21
HTML: Les tableaux …
22
HTML: Les tableaux …
23
Création d’une feuille de style (4a)
horizontale <HR>
24
Création d’une feuille de style (4b)
... ...
<xsl:template match="membre"> <xsl:template match="membre">
<HR/> <HR></HR>
<xsl:apply-templates/> <xsl:apply-templates/>
</xsl:template> </xsl:template>
... (a) ... (b)
...
<xsl:template match="membre">
<HR>
<xsl:apply-templates/>
</HR>
</xsl:template>
... (c)
25
Règles par défaut (1)
/ ou *
text()
26
Règles par défaut (2)
Correspond au document ou à
<xsl:template match="/|*"> n'importe quel élément.
Renvoie le résultat des
<xsl:apply-templates/> templates pour les fils
</xsl:template>
27
Factorisation des motifs
28
Contrôler le parcours du document
(1)
29
Contrôler le parcours du document
(2)
<xsl:apply-templates select="motif">
30
Contrôler le parcours du document
- exemple
...
<xsl:template match="membre">
<xsl:apply-templates select="nom"/>
<xsl:apply-templates select="prenom"/>
<xsl:apply-templates select="tel"/>
<xsl:apply-templates select="departement"/>
<xsl:apply-templates select="adresse"/>
</xsl:template>
...
31
Les boucles (for-each)
<xsl:for-each select="motif">
[action]
</xsl:for-each>
32
Les boucles : exemple
...
<xsl:template match="annuaire">
<xsl:apply-templates select="entete"/>
<TABLE BORDER="1" WIDTH="100%">
<xsl:for-each select="membre">
<TR>
<xsl:apply-templates/>
</TR>
</xsl:for-each>
</TABLE>
</xsl:template> Pour chaque membre, crée une
... ligne du tableau et traite les fils
33
Le tri avec xsl:sort
...
<xsl:template match="annuaire">
<xsl:apply-templates select="membre">
<xsl:sort select="nom" order="ascending"/>
</xsl:apply-templates>
</xsl:template>
...
34
Le test avec xsl:if
...
<xsl:template match="entete">
<!-- si pas de date, écrire 3 ? -->
<xsl:if test="not(dateRevision)">
<text>???</text>
</xsl:if>
...
</xsl:template>
...
<xsl:if test="position()=2">...
<xsl:if test="name(.)='nom'">...
<xsl:if test="@id">...
35
Choix multiple avec xsl:choose
...
<xsl:choose>
<xsl:when test="quelque-chose">
[action]
</xsl:when>
<xsl:when test="autre-chose">
[action]
</xsl:when>
...
<xsl:otherwise>
[action]
</xsl:otherwise>
</xsl:choose>
...
36
Les variables
Référence : $toto
<xsl:value-of select="$toto"/>
37
Appel explicite à une règle
...
<xsl:template match="dateRevision">
<xsl:call-template name="formatDate"/>
</xsl:template>
<xsl:template name="formatDate">
<!-- Code XSL ici pour formater la date -->
</xsl:template>
...
38
Passage de paramètres à une règle
<xsl:template match="elementType">
<xsl:param name="txt"/>
<xsl:param name="lang" select="FR"/>
...
</xsl:template>
Passer les paramètres à l'invocation d'une règle
Passer les paramètres à l'invocation d'une règle
<xsl:apply-template select="elementType">
<xsl:with-param name="txt" select="text()"/>
<xsl:with-param name="lang" select="@xml:lang"/>
...
</xsl:template>
39
Les modes
40
Les modes : exemple (1)
...
<xsl:template match="annuaire">
<xsl:apply-templates select="entete"/>
<UL>
<xsl:apply-templates select="membre" mode="toc"/>
</UL>
<TABLE BORDER="1" WIDTH="100%">
<xsl:apply-templates select="membre" mode="main"/>
</TABLE>
</xsl:template>
...
41
Les modes : exemple (2)
...
<xsl:template match="membre" mode="toc">
<LI>
<A href="#{@id}"><xsl:value-of select="nom/text()"/></A>
</LI>
</xsl:template>
...
...
<xsl:template match="membre" mode="main">
<TR>
<A NAME="{@id}"/>
<xsl:apply-templates/>
</TR>
</xsl:template>
...
42
Copie de nœuds
<xsl:template match="/">
<xsl:copy-of select="."/>
</xsl:template>
43
La fonction document()
<xsl:variable name="multi-res"
select="document(http://…/ressources.xml)"/>
44
Fragmenter et ré-utiliser des
feuilles de style
<xsl:include> <xsl:import>
<xsl:stylesheet … >
<xsl:include href="fds2.xsl">
A
</xsl:stylesheet>
B C
45
Format de sortie
<xsl:output>
Indiquer à XSL ce qu'il est en train de générer
HTML : <p/> en <p>…</p>
Codage des caractères
<xsl:stysheet …>
<xsl:output method="html" encoding="UTF-8"/>
<xsl:template …
</xsl:stylesheet>
46
Et maintenant …
A vous de jouer !