Cours XSL

formation complet Xsl en pdf


Télécharger formation complet Xsl en pdf

★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Formation complet Xsl methodes et explications

Xsl

XSLT  est, comme son nom l'indique, un langage destiné à transformer un fichier XML en quelque chose d'autre.

XSLT offre de nombreuses fonctions dignes d'un langage de haut-niveau : variables, paramètres, tests, boucles, fonctions, inclusion d'une feuille de style XSLT dans une autre, chargement de plusieurs documents XML dans une même feuille de style XSLT, recherche de balises XML selon de nombreux critères, etc.

Structure

xsl:stylesheet

élément racine de la feuille de style

xsl:output

permet de définir le type de sortie qui sera produit et de générer des entêtes.

<xsl:output

method = "xml" | "html" | "text"

version = nmtoken encoding = string

omit-xml-declaration = "yes" | "no" standalone = "yes" | "no" doctype-public = string doctype-system = string indent = "yes" | "no" media-type = string /> method="xml|html|text" indique le format du document résultant.

  • Pour spécifier une sortie HTML :

doctype-system=""

doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"

encoding="ISO-8859-1"

/>

  • Pour spécifier une sortie TEXT :

A mettre au début du fichier (après xsl:stylesheet)

règle modèle

L'élément permet de définir une règle de modèle.

Quelle est la syntaxe d'une règle modèle ?

Elle est la suivante :

Si vous souhaitez que le modèle fasse quelque chose, ne serait-ce que rendre la main à d'autres modèles, eh bien il faut le lui demander explicitement !

Vous pouvez, par exemple lui demander de simplement remplacer les balises et tout ce qu'elles contiennent par le texte "trouvé !". En ce cas il vous suffira d'écrire :

trouvé !

//                               Indique tous les descendants d'un noeud

Si vous désirez que ce texte "trouvé !" apparaisse à l'intérieur d'une nouvelle balise, par exemple

, alors vous écrirez :

trouvé !

Les principaux motifs (patterns) sont :

Pattern

Exemple

Signification

|

Gauche|Milieu

Indique une alternative (un noeud ou bien l'autre (ou les deux))

/

personne/nom

Chemin d'accès aux éléments (personne/bras/gauche) au même titre que l'arborescence utilisée généralement pour les fichiers (/usr/bin/toto)

*

*

Motif "joker" désignant n'importe quel élément

//

//personne

Indique tous les descendants d'un noeud

.

.

Caractérise le noeud courant

..

..

Désigne le noeud parent

@

@valeur

Indique un attribut caractéristique

La transformation peut être réalisée

  • soit par ajout de texte,
  • soit en définissant des éléments de transformation, c'est-à-dire des éléments permettant de définir des règles de transformation à appliquer aux éléments sélectionnés par l'attribut match

L'attribut select permet de spécifier certains éléments enfants auxquels la transformation doit être appliquée

La première chose à faire quand on commence une feuille XSL devant être appliquée à un fichier

XML, c’est écrire   pour se placer à la racine du document.

 

Il suffira ensuite d'utiliser l'élément afin d'effectuer la mise en forme des éléments ciblés.

 

L'élément apply-templates utilisé au sein de la balise permet d'appliquer la règle de transformation contenu dans la balise template.

L'élément indique le traitement de tous les enfants directs de la racine.

 

l'élément utilisé dans une règle de modèle permet de récupérer les valeurs des éléments ciblés ou de leurs attributs.

Un exemple simple 

Cours XML

Poulard

Philippe

Ce cours aborde les concepts de base mis en œuvre dans XML.

Fichier

xmlns:xsl="; xmlns=";>

                                   dans le contexte de "/"

<xsl:value-of select="Cours/Titre"/>

<xsl:value-of select="Cours/Titre"/>

<xsl:apply-templates select="Cours/Auteur"/>

                                                 dans le contexte de "Auteur"

match="Auteur">

par <xsl:value-of select="Nom"/>

match="Description">

."/>

Exemple 2:

1234567890

Fichier

doctype-system="" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"    encoding="iso-8859-1"

/>

Explication:

Un processeur XSL analyse un fichier XML source et s'efforce de trouver une règle modèle concordante. S'il en trouve une, les instructions qu'elle contient sont évaluées.

Le traitement commence toujours par le modèle sélectionnant le noeud correspondant au motif match="/". Ce noeud est le noeud racine.

Les données XML de l'exemple ne contiennent que l'élément racine avec une suite de chiffres comme contenu. La feuille de style de l'exemple n'en est que plus simple.

Avec xsl:template est définie un modèle pour transcrire les données XML en sortie HTML. Ces définitions XSL et d'autres sont incluses dans l'élément racine xsl:stylesheet. Dans l'exemple le repère d'ouverture de cet élément contient les mentions typiques sur la version XSLT, sur la source XSLT et sur la source de l'espace de nommage HTML employé (ici: XHTML).

Lorsque ce modèle n'est pas explicitement indiqué, le modèle implicite est utilisé (il comporte une seule instruction ). Cette instruction signifie : traiter tous les noeuds fils du noeud courant, y compris les noeuds textuels

Autre exemple

Considérons une liste de livres avec nom du livre, auteur et date

 

Le guet des orfèvres

Terry Pratchett

1993

Nobliaux et sorcières

Terry Pratchett

1992

Mécomptes de fées

Terry Pratchett

1991

Tinbin obéit aux serviettes

Alain Provistt

1999

et sa feuille xsl:

version="1.0" xmlns:xsl=";>

doctype-system="" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"

encoding="ISO-8859-1"

/>

On remarque que la fin de chaque fiche est affichée sans demande précise;Lorsque le modèle n'est pas explicitement indiqué, le modèle implicite est utilisé (il comporte une seule instruction ). Cette instruction signifie : traiter tous les noeuds fils du noeud courant, y compris les noeuds textuels.

Résultat

Le guet des orfèvres

Terry Pratchett

1993

Nobliaux et sorcières

Terry Pratchett

1992

Mécomptes de fées

Terry Pratchett

1991

Tinbin obéit aux serviettes

Alain Provistt

1999

Utiliser un attribut @

select="" permet de récupérer l'attribut date de item

Les attributs sont accessibles de la même manière que les éléments. Notez la présence du caractère "@" devant les noms d'attributs.

Source XML

Feuille de style XSLT


Sortie



AAA id=a1

AAA id=a2

Vue HTML

AAA id=a1

AAA id=a2

xsl:for-each

L'instruction xsl:for-each comporte un modèle qui est appliqué à chaque noeud sélectionné à l'aide de l'attribut select.

xsl:for-each n'est pas vraiment une boucle comme un "for" en langage C. Cette fonction va prendre tous les noeuds d'une requête XPATH, et va leur appliquer un traitement.

 

 

    

          

Feuille de style XSLT

xmlns:xsl=''>

 

<xsl:for-each select="//BBB">

id=

     <xsl:for-each select="source/AAA/CCC">

id=

Feuille de style dans le fichier xsl

Pour inclure la feuille de style directemment dans le fichier xsl, il suffit d'utiliser  :

et

xmlns:xsl="">

system="" doctype-public="-//W3C//DTD XHTML

1.0 Transitional//EN" indent="yes" encoding="iso8859-1" />

 Extensions de fichiers

   bak        fichier de     sauvegarde    

   bmp         graphique Bitmap     

<xsl:template match="titre">

 

<xsl:template match="glossaire/element">

match="terme">

 :

<xsl:template match="signification">

Élément

L'élément est utlisé pour érire du texte en sortie.

TEST

  • l'égalité : =
  • supérieur : &gt ;
  • inférieur : &lt ;
  • addition: +
  • soustraction : - (attention ce symbole est accepté dans les noms de balises, il faut donc impérativement le faire précéder et succéder d'un espacesi on veut qu'il soit interprété)
  • division : div • modulo : mod

xsl:if

L'élément permet d'appliquer un test conditionnel dans la structure d'une feuille de style XSL.

Instructions...

Si le test conditionnel est vérifié alors le processeur XSL exécutera les instructions contenues à l'intérieur des marqueurs, sinon il les ignorera et passera aux instructions suivantes.

Exemple

Moi

Jean

Michel

 

xmlns:xsl=";>

/>

bonjour Michel

Si le test conditionnel est vérifié alors le processeur XSL exécutera les instructions contenues à l'intérieur des marqueurs, sinon il les ignorera et passera aux instructions suivantes.

xsl:choose  - xsl:otherwise

La fonction xsl:choose permet d'exécuter différents codes selon différentes conditions. Exemple d'utilisation de la l'instruction choose :

On utilise souvent xsl:choose comme alternative au xsl:if pour disposer de xsl:otherwise (qui remplace xsl:else qui n'existe pas).

On utilise souvent xsl:choose comme alternative au xsl:if pour disposer de xsl:otherwise (qui remplace xsl:else qui n'existe pas).

Moi

Jean

Michel

encoding="ISO-8859-1"

/>

<xsl:when

 test=".= 'Moi'"> xsl:text> Salut

<xsl:when

 test=".= 'Michel'"> xsl:text> Fait ciseau

Message impersonnel Bonjour

For-each: autre exemple -catalogue cd-

Empire Burlesque

Bob Dylan

USA

Columbia

10.90

1985

Hide your heart

Bonnie Tyler

UK

CBS Records

9.90

1988

Greatest Hits

Dolly Parton

USA

RCA

9.90

1982

Still got the blues

Gary Moore

UK

Virgin records

10.20

1990

Eros

Eros Ramazzotti

EU

BMG

9.90

1997

One night only

Bee Gees

UK

Polydor

10.90

1998

Sylvias Mother

UK

CBS

8.10

1973

Maggie May

Rod Stewart

UK

Pickwick

8.50

1990

Romanza

Andrea Bocelli

EU

Polydor

10.80

1996

When a man loves a woman

Percy Sledge

USA

Atlantic

8.70

1987

Black angel

Savage Rose

EU

Mega

10.90

1995

1999 Grammy Nominees

Many

USA

Grammy

10.20

1999

For the good times

Kenny Rogers

UK

Mucik Master

8.70

1995

Big Willie style

Will Smith

USA

Columbia

9.90

1997

Tupelo Honey

Van Morrison

UK

Polydor

8.20

1971

Soulsville

Jorn Hoel

Norway

WEA

7.90

1996

The very best of



Cat Stevens

UK

Island

8.90

1990

Stop

Sam Brown

UK

A and M

8.90

1988

Bridge of Spies

T`Pau

UK

Siren

7.90

1987

Private Dancer

Tina Turner

UK

Capitol

8.90

1983

Midt om natten

Kim Larsen

EU

Medley

7.80

1983

Pavarotti Gala Concert

Luciano Pavarotti

UK

DECCA 9.90

1991

The dock of the bay

Otis Redding

USA

Atlantic

7.90

1987

Picture book

Simply Red

EU

Elektra

7.20

1985

Red

The Communards

UK

London

7.80

1987

Unchain my heart

Joe Cocker

USA

EMI

8.20

1987

Feuille xsl

xmlns:xsl=";>

<xsl:output    method="html"     encoding="ISO-8859-1"

/>

My CD Collection

Title

Artist

Empire Burlesque

Bob Dylan

Still got the blues

Gary Moore

One night only

Bee Gees

Romanza

Andrea Bocelli

Black angel

Savage Rose

1999 Grammy Nominees

Many

My CD Collection

     Title        Pour chaque

     Artist       cd du

                       catalogue

         

           

            

            

    

xsl:sort

Tri alphabétique  "ascending" par défaut

"..." order="descending"/>

Tri numérique

Trier les éléments d'après leur contenu.

12

19

27

10

Antoine

Patrick

Richard

William

 fichier

  

/>

  

  

  

  

    

Élément

Insère un nombre formaté dans l'arborescence résultat.

<xsl:number

  level = "single" | "multiple" | "any"   count = Pattern from = Pattern   value = number-expression   format = { string }   lang = { nmtoken }

letter-value = { "alphabetic" | "traditional" } grouping-separator = { char }   grouping-size = { number } />

Attributs

level

Spécifie les niveaux de l'arborescence source à prendre en considération ; les valeurs possibles sont "single", "multiple" et "any". La valeur par défaut est "single". count

Modèles qui spécifie les nœuds à compter à ces niveaux. Si l'attribut count n'est pas spécifié, la valeur par défaut est le modèle correspondant à tout nœud ayant le même type de nœud que le nœud actuel et, si le nœud actuel a un nom développé, ayant le même nom développé que le nœud actuel.

from

Modèles qui spécifie où commence le comptage.

value

Spécifie l'expression à convertir en un nombre et à insérer dans l'arborescence résultat. Si aucun attribut value n'est spécifié, l'élément insère un nombre d'après la position du nœud actuel dans l'arborescence source.

format

Séquence de jetons spécifiant le format à utiliser pour chaque nombre figurant dans la liste. S'il n'y a pas de jetons de format, la valeur par défaut utilisée est 1, qui génère une séquence 1 2 ... 10 11 12.... Chaque nombre hormis le premier est séparé du précédent par le jeton séparateur, lequel précède le jeton de format utilisé pour formater ce nombre. S'il n'y a pas de jetons séparateurs, c'est un point qui est utilisé (« . »).

.

Jeton de format

Séquence générée

1

1 2 3 4 5 ... 10 11 12 ...

01

01 02 03 ... 19 10 11 ... 99 100 101...

A

A B C ... Z AA AB AC...

i

i ii iii iv v vi vii viii ix x...

I

I II III IV V VI VII VIII IX X...

lang

Spécifie l'alphabet utilisé. Si aucune langue n'est spécifiée, elle est déterminée par l'environnement système.

letter-value

Lève l'ambiguïté entre les séquences de numérotation qui utilisent des lettres. Une séquence de numérotation affecte des valeurs numériques aux lettres dans l'ordre alphabétique, tandis que l'autre affecte des valeurs numériques à chaque lettre d'une autre manière traditionnelle pour cette langue. En anglais, ces séquences de numérotation sont spécifiées par les jetons de format « a » et « i ». Dans certaines langues, le premier membre de chaque séquence est identique, si bien que le jeton de format seul serait ambigu. La valeur "alphabetic" spécifie l'ordre alphabétique ; la valeur "traditional" spécifie l'autre possibilité. La valeur par défaut est "alphabetic".

grouping-separator

Définit le séparateur utilisé pour le regroupement (p. ex. des milliers) dans les séquences de numérotation décimales. Par exemple, grouping-separator="," et groupingsize="3" produiraient des nombres du genre 1,000,000. Si un seul des attributs grouping-separator et grouping-size est spécifié, il est ignoré.

grouping-size

Spécifie la taille (normalement 3) des groupes. Par exemple, grouping-separator="," et grouping-size="3" produiraient des nombres du genre 1,000,000. Si un seul des attributs grouping-separator et grouping-size est spécifié, il est ignoré.

Les langues/schémas de numérotation suivants sont pris en charge. « Jeton de format » correspond à l'attribut format, « Langue » correspond à l'attribut lang et « Valeur lettre » correspond à l'attribut letter-value.

Description

Jeton de format

Langue

Valeur lettre

Occidental

0x0031 (1)

n/a

n/a

Lettre majuscule

0x0041 (A)

n/a



n/a

Lettre minuscule

0x0061 (a)

n/a

n/a

Chiffre romain majuscule

0x0049 (I)

n/a

n/a

Chiffre romain minuscule

0x0069 (i)

n/a

n/a

Russe (cyrillique) majuscule

0x0410

n/a

n/a

Russe (cyrillique) minuscule

0x0430

n/a

n/a

Hébreu alphabétique

0x05d0

n/a

Alphabétique

Hébreu traditionnel

0x05d0

n/a

Arabe

traditionnel

0x0623

n/a

n/a

Hindi, consonnes

0x0905

n/a

n/a

Hindi, voyelles

0x0915

n/a

n/a

Hindi, chiffres

0x0967

n/a

n/a

Thaï, lettres

0x0e01

n/a

n/a

Thaï, chiffres

0x0e51

n/a

n/a

Japonais, Aiueo (double octet)

0x30a2

n/a

n/a

Japonais, Iroha (double octet)

0x30a4

n/a

n/a

Description

Jeton de format

Langue

Valeur lettre

Coréen, Chosung

0x3131

n/a

n/a

Taïwanais décimal

0x4e01

« zh-tw »

n/a

Coréen décimal

0x4e01

« ko »

n/a

Asiatique décimal

0x4e01

toute autre langue

n/a

Asiatique, Kanji

0x58f1

n/a

n/a

Taïwanais traditionnel

0x58f9

« zh-tw »

n/a

Chinois traditionnel

0x58f9

toute autre langue

n/a

Chinois « Zodiaque » 12

0x5b50

n/a

n/a

Chinois « Zodiaque » 10

0x7532

n/a

n/a

Chinois « Zodiaque » 60

0x7532, 0x5b50

n/a

n/a

Coréen, Ganada

0xac00

n/a

n/a

Coréen décimal

0xc77c

n/a

n/a

Coréen 99

0xd558

n/a

n/a

Occidental (double octet)

0xff11

n/a

n/a

Japonais, Aiueo (simple octet)

0xff71

n/a

n/a

Japonais, Iroha (simple octet)

0xff72

n/a

n/a

Si le jeton de format à lui seul suffit pour lever l'ambiguïté pour un schéma de numérotation particulier, il n'est pas nécessaire de spécifier la langue ni la valeur lettre.

Exemple :

voiture

Plume

LP 33 tours

Sagesse

GSM

Projecteur

trou

Verrière

Widget

Concepte

Null character

et son fichier xsl

nombre d'items :

"/>

template et call-template

Il existe deux versions de l'élément template qui se différencient par leurs attributs :

    ...

name="nom_modele">

    ...

La version avec l'attribut match définit un modèle par défaut, applicable à tel type d'élément. Ce modèle est instancié par le processeur XSLT à chaque fois qu'un élément correspondant est rencontré.

La version avec l'attribut name correspond aux fonctions des langages fonctionnels. Ils sont destinés à êtres "appelés" par l'instruction call-template.

Exemples

XSL

<xsl:call-template name="dis_bonjour"/>

name="dis_bonjour">

    Bonjour !

Quelque soit le document XML en entrée, le processeur commence à chercher un modele pouvant s'appliquer à la racine, trouve ici le premier modele dans la feuille de style et l'applique. Ce modele spécifie la génération de texte et l'instanciation du modele dont le nom est dis_bonjour.

Il est possible, comme pour une fonction, de passer à un tel modele des paramètres et de réaliser des appels récursifs :

     énumération :

        0

9

    

1"/>

Réponse

énumération : 0123456789



169