Cours XSL

Tutoriel de XSLT en pdf


Télécharger Tutoriel de XSLT en pdf

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

Télécharger aussi :


Plan

Avant-propos

XML, format universel Qu’est-ce que XML réelement?

Transformer avec XSLT

Un exemple : publication de données

Les formes primitives de transformation

Sélection et Parcours

Génération de code

Avant-propos

XSLT est une technologie puissante !

XSLT permet de transformer des documents XML

XSLT utilise des règles (templates) pour transformer

à la fois aux frontières et au cœur du dev. de logiciels actuels

Son apprentissage passe par des recettes

Structuration avec XML

représenter des contenus indépendamment de l’application combinaison de plusieurs principes simples et généraux

Le Méliès

6, Rue Bargoin.

Pau

64000

Un secret

21 :00

Structuration avec XML

représenter des contenus indépendamment de l’application combinaison de plusieurs principes simples et généraux

la structurartion avec XML permet : de désigner des parties d’un contenu (chaˆıne de caractère) avec des noms et de hiérarchiser ces noms  une information structurée avec XML consiste à considérer que celle-ci est un arbre

Structuration avec XML

représenter des contenus indépendamment de l’application combinaison de plusieurs principes simples et généraux

la structurartion avec XML permet : de désigner des parties d’un contenu (chaˆıne de caractère) avec des noms et de hiérarchiser ces noms  une information structurée avec XML consiste à considérer que celle-ci est un arbre

Structuration avec XML

la structurartion avec XML permet : de désigner des parties d’un contenu (chaˆıne de caractère) avec des noms et de hiérarchiser ces noms une information structurée avec XML consiste à considérer que celle-ci est un arbre

La désignation est réalisée par des balises :

,,,,,,,

, et

Structuration avec XML

la structurartion avec XML permet : de désigner des parties d’un contenu (chaˆıne de caractère) avec des noms et de hiérarchiser ces noms une information structurée avec XML consiste à considérer que celle-ci est un arbre

Une paire désigne (type) une partie du contenu : l’élémént XML

La hiérarchie entre les différentes paires structure le contenu

Structuration avec XML

Structuration avec XML

Structuration avec XML

Documents XML

Documents XML

la structure d’un document XML est définissable et validable par un schéma un document XML est entièrement transformable dans un autre document XML.

<!ELEMENT cinema(nom, adresse, ville, departement, (salle)+)

<!ELEMENT nom(#PCDATA)>

<!ELEMENT salle (titre, (seances)+)>

<!ATTLIST salle num CDATA #REQUIRED place CDATA #IMPLIED>

<!ELEMENT seances ((seance)+)>

<!ELEMENT seance(#PCDATA)>

Documents XML

la structure d’un document XML est définissable et validable par un schéma un document XML est entièrement transformable dans un autre document XML.

La même chose mais en xml-schema d’abord les éléments de type simple :

Documents XML

la structure d’un document XML est définissable et validable par un schéma un document XML est entièrement transformable dans un autre document XML.

ensuite les éléments de type complexe :

Documents XML

la structure d’un document XML est définissable et validable par un schéma un document XML est entièrement transformable dans un autre document XML.

Les attrib. minOccurs et maxOccurs sont par défaut à 1, donc lorsque omis : l’élément doit apparaˆıtre une et une seule fois

Documents XML

la structure d’un document XML est définissable et validable par un schéma un document XML est entièrement transformable dans un autre document XML.

Les schémas ont plusieurs avantages :

un éditeur se sert du schéma pour faciliter l’édition d’un doc. XML et/ou vérifier sa conformité pour rapport à son schéma

Un programme XSLT se base sur le schéma pour l’origine et la destination de la transformation et/ou à la vérification des règles XSLT

En combinaison avec une analyse validante, le processeur XSLT vérifie avant l’éxécution de la transformation si le doc. à transformer est conforme

Plan

Avant-propos

XML, format universel Qu’est-ce que XML réelement?

Transformer avec XSLT

Un exemple : publication de données

Les formes primitives de transformation

Sélection et Parcours

Génération de code

Publication de données

L’entête habituelle :

<?xml  version =”1.0”  encoding=”UTF−8”?>

<x s l : s t y l e s h e e t xmlns : x s l=”http ://www.w3. org /1999/XSL/Transform”

version =”1.0”>

<x s l : template  match=”/”>

<html>

<head>

<t i t l e >Le  cinéma <x s l : value−of  s e l e c t=”nom”/> </ t i t l e >

</head>

<body>

<p>

<!−−I n sé r e r  une  image  GIF  avec  l e  t i t r e  comme nom−−>

  <img  src=”{nom}. g i f ”  a l i g n=” l e f t ”  height =”220”/>

<h1><x s l : value−of



s e l e c t=”nom”/> </h1>

<x s l : value−of

s e l e c t=”adresse ”/>, <br/>

<i> <x s l : value−of

s e l e c t=”departement”/></i >,

<x s l : value−of

</p>

s e l e c t=” v i l l e ”/>

<x s l : apply−templates  s e l e c t=” s a l l e ”/>

</body>

</html>

</x s l : template>

  <x s l : template  match=” s a l l e ”>

<!−− Extraction  d ’ a t t r i b u t  :  no  de  s a l l e  et  places −−>

  <h2>S a l l e  No <x s l : value−of  s e l e c t=”@num”/>,

  <x s l : value−of  s e l e c t=”@places”/> places </h2>

  <!−− Boucles  sur  toutes  l e s  séances −−>

<h3>Séances </h3><ol>

  <x s l : for −each  s e l e c t=”seances / seance”>

  <l i ><x s l : value−of  s e l e c t =”.”/></ l i >

</x s l : for −each></ol>

</x s l : template>

</x s l : stylesheet >

Transformer des chaˆıne de caractères

La manipulation des chaˆınes de catactères : la forme de transformation la plus primitive

Pour des manipulations complexes les programmeurs ont 2 choix :

1  faire appel à des fonctions écrites dans un autre langage (Java;-) ) lorsque la portabilité n’est pas critique 2  écrire des fonctions avancées en XSLT

Transformer des chaˆıne de caractères

La manipulation des chaˆınes de catactères : la forme de transformation la plus primitive

Pour des manipulations complexes les programmeurs ont 2 choix :

1  faire appel à des fonctions écrites dans un autre langage (Java;-) ) lorsque la portabilité n’est pas critique

2  écrire des fonctions avancées en XSLT

XSLT ne dispose pas de l’artillerie lourde offerte par Perl

XSLT offre principalement 9 fonctions de base

Supprimer/remplacer certains caractères d’une chaˆıne

string translate (string chaine, string arg1, string arg2)

Exemple : supprimer tous les caractères numérique qui apparaissent dans une chaˆıne donnée.

<x s l : param name=’’ chaine ’’>

<x s l : template  name=’’ supprime ’’>

  <x s l : value−of  s e l e c t=

  ’ ’ t r a n s l a t e ( $chaine ,  ’0123456789 ’ , ’ ’) ’ ’/ >

</x s l : template>

la valeur du paramètre $chaine peut être obtenue via la méthode GET du protocole HTTP) :

http ?chaine=12 avril 2012 12 :30

les fonctions de bases

les fonctions de bases

les fonctions de bases

les fonctions de bases

les fonctions de bases

les fonctions de bases

string concat (string chaine1, string chaine2, string chaines∗ )

Boolean contains (string chaine, string souschaine)

string normalizespace(string chaine?) Boolean startswith (string chaine, string souschaine)

number stringlength(string chaine?) string substring (string chaine, number debut, number longueur?)

les fonctions de bases

string concat (string chaine1, string chaine2, string chaines∗ )

Boolean contains (string chaine, string souschaine)

string normalizespace(string chaine?) Boolean startswith (string chaine, string souschaine)

number stringlength(string chaine?) string substring (string chaine, number debut, number longueur?)



string substringbefore (string chaine, string souschaine)

Nombres, op. math. et date / heure

Seules le opérations arithmétiques de base sont disponibles : compter,

  <x s l : template  name=”math : abs”>

<x s l : param name=”x”/>

<x s l : choose>

  <x s l : when  t e s t=”$x &l t ;  0”>

<x s l : value−of

</x s l : when>

<x s l : otherwise >

s e l e c t=”$x∗−1”/>

<x s l : value−of

</x s l : otherwise >

</x s l : choose>

</x s l : template>

</x s l : stylesheet >

s e l e c t=”$x”/>

Nombres, op. math. et date / heure

La page Web : http contient quelques curiosités mathématiques écrites en XSLT.

XSLT 1.0 ne sait pas quelle heure il est

Nombres, op. math. et date / heure

La page Web : http contient quelques curiosités mathématiques écrites en XSLT.

XSLT 1.0 ne sait pas quelle heure il est

l’obtention de la date et de l’heure courants ne peut être implémentée.

Nombres, op. math. et date / heure

La page Web : http contient quelques curiosités mathématiques écrites en XSLT.

XSLT 1.0 ne sait pas quelle heure il est

Ou alors en passant par : http sachant que est une communauté qui propose des extensions de XSLT 1.0 dans différents domaines et notamment : dans les fonctions math. y compris des opérateurs ensemblistes, les dates et les heures, les expressions régulières

Nombres, op. math. et date / heure

La page Web : http contient quelques curiosités mathématiques écrites en XSLT.

XSLT 1.0 ne sait pas quelle heure il est

Ou alors en passant par : http sachant que est une communauté qui propose des extensions de XSLT 1.0 dans différents domaines et notamment : dans les fonctions math. y compris des opérateurs ensemblistes, les dates et les heures, les expressions régulières

nombreuses de ces extensions sont reprises dans XSLT 2.0 à confirmer

Sélection et Parcours

Un traitement en XSLT implique 2 opérations :

1  déterminer les élements à consulter (sélection)

2  connaˆıtre l’ordre dans lequel le faire (parcours)

Sélection et Parcours

Un traitement en XSLT implique 2 opérations :

1  déterminer les élements à consulter (sélection)

2  connaˆıtre l’ordre dans lequel le faire (parcours)

 La sélection est du ressort de XPath, une spéc. distincte mais fortement liées à XSLT

Sélection et Parcours

Un traitement en XSLT implique 2 opérations :

1  déterminer les élements à consulter (sélection)

2  connaˆıtre l’ordre dans lequel le faire (parcours)

 Le parcours dépend des structures de contrôles intégrées dans XSLT et la fa¸con dont les règles sont organnisées à partir de ces structures

Le langage XPath

Le langage XPath

Dans XPath le référencement de nœuds s’effectue en décrivant des parcours dans l’arbre par exemple dans les instructions XSLT suivantes :

sélection de tous les nœuds de type ”salle” fils d’un nœud de type ”cinema” lui-même fils d’un nœud contexte.

désignation des nœuds auxquels s’applique une règle

Le langage XPath

Dans XPath le référencement de nœuds s’effectue en décrivant des parcours dans l’arbre par exemple dans les instructions XSLT suivantes :

sélection de tous les nœuds de type ”salle” fils d’un nœud de type ”cinema” lui-même fils d’un nœud contexte.

désignation des nœuds auxquels s’applique une règle

extraction de valeurs

Le langage XPath

En synthèse :

Une expression XPath désigne un ou ++ nœuds en exprimant des chemins dans un arbre XML. Leur évaluation selon le contexte donne :

soit une valeur numérique ou alphanumérique soit un sous-ensemble des nœuds de l’arbre.

Le langage XPath

Une expression XPath est constituée d’une suite d’étapes, matérialisées par des ”/”

Chaque étape est elle-même divisible en trois composants :

l’axe sens de parcours des nœuds à partir du nœud contexte;

le filtre indiquant le type de nœud à retenir dans l’évaluation le(s) prédicat(s) exprimant les propriétés que doivent satisfaire les nœuds retenus après filtrage pour être retenus dans le résultat.

Les axes

/A/B/@att1

Les axes

/A/B/@att1 = /child : :A/child : :B/attribute : :att1

Les axes

child, attribute, parent, descendant, ancestor

Les filtres

Deux types de filtrage pour selectionner des nœuds : par nom et par type

Les filtres

Deux types de filtrage pour selectionner des nœuds : par nom et par type

nom d’attrib. dernière étape car attrib. toujours nœud feuille

Les filtres

Deux types de filtrage pour selectionner des nœuds : par nom et par type

Désigne tous les commentaires fils de la racine



Les filtres

Deux types de filtrage pour selectionner des nœuds : par nom et par type

Les filtres

Exemple d’une expression avec text()

/A/B//text() = /child : :A/child : :B/descendant-or-self : :node()/text()

Les Prédicats

La 3ième partie d’une étape est un prédicat :

autrement dit, une exp. booléenne constituées d’un ou ++ tests, composés avec les connecteurs logiques and, or et la négation fournie sous la forme d’une fonction not()

La forme générale d’une étape est donc axe : :filtre[prédicat1][prédicat2]

Les Prédicats

La 3ième partie d’une étape est un prédicat :

autrement dit, une exp. booléenne constituées d’un ou ++ tests, composés avec les connecteurs logiques and, or et la négation fournie sous la forme d’une fonction not()

La forme générale d’une étape est donc axe : :filtre[prédicat1][prédicat2]

à peu près n’importe quelle expression XPath peut être convertie en un booléen

Les Prédicats

La 3ième partie d’une étape est un prédicat :

autrement dit, une exp. booléenne constituées d’un ou ++ tests, composés avec les connecteurs logiques and, or et la négation fournie sous la forme d’une fonction not()

La forme générale d’une étape est donc axe : :filtre[prédicat1][prédicat2]

Composition de prédicats  /A/B[@att1=’a1’][position()=last()] tous les éléments B ayant comme attribut att1 valant a1 (premier prédicat) et on ne conserve que le dernier (second prédicat)

Les Prédicats

La 3ième partie d’une étape est un prédicat :

autrement dit, une exp. booléenne constituées d’un ou ++ tests, composés avec les connecteurs logiques and, or et la négation fournie sous la forme d’une fonction not()

La forme générale d’une étape est donc axe : :filtre[prédicat1][prédicat2]

Composition de prédicats  /A/B[@att1=’a1’][position()=last()] tous les éléments B ayant comme attribut att1 valant a1 (premier prédicat) et on ne conserve que le dernier (second prédicat)

L’utilisation d’une succession de [ ] dénote une composition 6= avec l’utilisation de connecteurs logiques : l’ens. des nœuds du 1er prédicat est pris comme contexte du suivant.

Génération de code

La plupart des derniers progrès dans le développement logiciel sont liés à la notion de génération automatique de code à partir de spécifications de plus haut niveau.

Génération de code

La plupart des derniers progrès dans le développement logiciel sont liés à la notion de génération automatique de code à partir de spécifications de plus haut niveau.

 Le langage cible n’est pas du code machine executable

Génération de code

La plupart des derniers progrès dans le développement logiciel sont liés à la notion de génération automatique de code à partir de spécifications de plus haut niveau.

Le langage cible n’est pas du code machine executable

L’écriture d’un programme ⇒ codage de 6= types de connaissances

Génération de code

La plupart des derniers progrès dans le développement logiciel sont liés à la notion de génération automatique de code à partir de spécifications de plus haut niveau.

Le langage cible n’est pas du code machine executable

L’écriture d’un programme ⇒ codage de 6= types de connaissances Mais qu’est-ce que XML et XSLT ont à voir avec cela?

Génération de code

La plupart des derniers progrès dans le développement logiciel sont liés à la notion de génération automatique de code à partir de spécifications de plus haut niveau.

Le langage cible n’est pas du code machine executable

L’écriture d’un programme ⇒ codage de 6= types de connaissances

 Spécifier les connaissances de l’appli. en XML, ce qui permet : de générer le code de l’appli. dans différents langages cibles, de générer la documentation, et éventuellement de produire des données de test.

Génération de code

La plupart des derniers progrès dans le développement logiciel sont liés à la notion de génération automatique de code à partir de spécifications de plus haut niveau.

Le langage cible n’est pas du code machine executable

L’écriture d’un programme ⇒ codage de 6= types de connaissances

⇒ Spécifier les connaissances de l’appli. en XML, ce qui permet : de générer le code de l’appli. dans différents langages cibles, de générer la documentation, et éventuellement de produire des données de test.


65