101
ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : 1ère partie : Technologies XML Technologies XML CHAPITRE 1 : XML et DTD CHAPITRE 1 : XML et DTD CHAPITRE 2 : Schémas XML CHAPITRE 2 : Schémas XML CHAPITRE 3 : XPath et CHAPITRE 3 : XPath et XSLT XSLT CHAPITRE 4 : CHAPITRE 4 : Applications XML Applications XML

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML CHAPITRE 1 : XML et DTD CHAPITRE 2 : Schémas XML CHAPITRE 3 : XPath

Embed Size (px)

Citation preview

Page 1: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1

1ère partie :1ère partie : Technologies XML Technologies XML

1ère partie :1ère partie : Technologies XML Technologies XML

CHAPITRE 1 : XML et DTDCHAPITRE 1 : XML et DTD

CHAPITRE 2 : Schémas XMLCHAPITRE 2 : Schémas XML

CHAPITRE 3 : XPath et XSLTCHAPITRE 3 : XPath et XSLT

CHAPITRE 4 : Applications XMLCHAPITRE 4 : Applications XML

Page 2: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 2

Chapitre 3 : XPath et XSLTChapitre 3 : XPath et XSLT

1. Visualisation des documents XML

2. XPath 2.1. Principes

2.2. Les axes 2.3. Les filtres 2.4. Les prédicats

2.5. Fonctions de base 2.5. Exemples

3. XSLT 3.1. Transformation de documents 3.2. Modèle de traitement XSLT 3.3. Eléments constituants un document XSLT 3.4. Conclusion

En savoir plus…

Page 3: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 3

Document sans feuille de styleDocument sans feuille de style

<?xml version="1.0"?>

<bibliotheque><livre> <titre>N ou M</titre> <auteur>Agatha Christie</auteur> <ref>Policier-C-15</ref>

</livre><livre><titre>Le chien des Baskerville</titre><auteur>Sir Arthur Conan Doyle</auteur> <ref>Policier-D-3</ref>

</livre><livre><titre>Dune</titre> <auteur>Franck Heckbert</auteur> <ref>Fiction-H-1</ref>

</livre>

</bibliotheque>

Page 4: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 4

VisualisationVisualisation

Avec Internet Explorer

Page 5: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 5

Document avec feuille de style CSS ou XSLDocument avec feuille de style CSS ou XSL

<?xml version="1.0"?>

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

<bibliotheque><livre>

<titre>N ou M</titre> <auteur>Agatha Christie</auteur> <ref>Policier-C-15</ref>

</livre><livre>

<titre>Le chien des Baskerville</titre><auteur>Sir Arthur Conan Doyle</auteur> <ref>Policier-D-3</ref>

</livre><livre>

<titre>Dune</titre> <auteur>Franck Heckbert</auteur> <ref>Fiction-H-1</ref>

</livre>

</bibliotheque>

OU

Page 6: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 6

Feuille de style CSSFeuille de style CSS

livre{

display:block;

margin-left:10pt;

margin-bottom:5pt;

font-size:12pt

}

titre{

margin-right:10pt;

color:blue;

}

auteur{

margin-right:10pt;

}

ref{

color:red;

}

Page 7: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 7

Feuille de style XSLFeuille de style XSL

<?xml version="1.0"?>

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

<xsl:output method="html"/>

<xsl:template match="/">

<html>

<head><title>Ma bibliotheque</title></head>

<body>

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

<SPAN style="font-style:italic; padding-right:3pt">

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

<SPAN style="color:red; padding-right:3pt">

<xsl:value-of select="auteur"/> </SPAN>

<SPAN style="color:blue">

<xsl:value-of select="ref"/> </SPAN>

</xsl:for-each>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

Page 8: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 8

VisualisationVisualisation

CSS sous Internet Explorer

XSL sous Mozilla

Page 9: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 9

Chapitre 3 : XPath et XSLTChapitre 3 : XPath et XSLT

1. Visualisation des documents XML

2. XPath2.1. Principes

2.2. Les axes 2.3. Les filtres 2.4. Les prédicats

2.5. Fonctions de base 2.5. Exemples

3. XSLT 3.1. Transformation de documents 3.2. Modèle de traitement XSLT 3.3. Eléments constituants un document XSLT 3.4. Conclusion

En savoir plus…

Page 10: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 10

A quoi sert XPath ?A quoi sert XPath ?

Décrire un modèle de chemin dans l'arbre d'un document à l'aide d'une expression de chemin

Sélectionner l'ensemble des nœuds atteints en suivant tous les chemins conforme à ce modèle, à partir d'un nœud donné

Exploiter les relations généalogiques existant entre les nœuds qui composent le document

Page 11: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 11

ObjectifsObjectifs

Localiser – atteindre des fragments du document

Par adressage absolu Connaissance exacte de la structure manipulée Chemin complet conduisant aux fragments à atteindre

Par filtrage Connaissance partielle de la structure manipulée Atteindre des composants dont on ne connaît pas à priori la

position Informations sur la forme du chemin y conduisant et/ou le

contenu des nœuds traversés.

Page 12: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 12

ObjectifsObjectifs

Traitement homogène de tous les composants d'un document

Éléments – attributs – texte

Atteindre et contraindre : Un composant même

L'élément Titre ou l'attribut Num Son modèle de contenu

Un Titre contenant le mot introduction, une Section contenant un Titre

Le chemin pour atteindre un composant (en tenant (éventuellement) compte de son environnement) Un Titre contenu dans une Section ou un Titre que

précède un Paragraphe

Page 13: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 13

Utilisations de XPathUtilisations de XPath

XPath est notamment utilisé : Dans XSL et XSLT pour localiser un nœud précis ou un

ensemble de nœuds afin de leur associer une présentation / une transformation

Dans XPointer pour identifier des fragments de documents

Dans XLink pour pointer une cible précise dans un document.

Dans XQuery, pour localiser un nœud précis ou un ensemble de nœuds afin de le(s) post-traiter

Dans XML Schéma pour exprimer les noms de domaines

Page 14: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 14

Modèle de documentModèle de document

Pour XPath, un document XML est un arbre formé de nœuds de différents types Document : Nœud racine,

Unique et obligatoire Distinct de l'élément racine du document

Element : nœud élément, Attribut : nœud attribut Text : nœud texte, ProcessingInstruction : nœud instruction de

traitement Comment : nœud commentaire

nœuds ordonnés selon l'ordre de lecture des constituants du document XML

Page 15: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 15

Nœuds élément Nœuds élément

Un nœud élément est associé à chaque élément Il est étiqueté avec le nom de l'élément Il peut contenir des nœuds éléments et/ou des nœuds

texte Il est impossible d'avoir deux nœuds texte consécutifs Le contenu de l'élément est ordonné

Remarques : On peut associer à un nœud élément un ou plusieurs

nœuds attributs Un nœud élément est parent de son nœud attribut mais

le nœud attribut n'est pas enfant de son parent…

Page 16: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 16

Nœuds attribut et nœuds texteNœuds attribut et nœuds texte

Un nœud attribut Il est étiqueté avec le nom de l'attribut Il contient sa valeur Il n'existe pas d'ordre entre les nœuds attributs d'un

même élément

Un nœud texte est étiqueté avec sa valeur

Remarques : Les enfants et les descendants d'un nœud ne sont

jamais de type attribut

Page 17: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 17

Exemple de référence : Structure et balisesExemple de référence : Structure et balises

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><?xml-stylesheet type="text/xsl" href="biblio.xsl"?>

<bibliothèque>

<livre lang="fr" ref="ASI2002"><achat date="10/11/2003" lieu="FNAC" /><titre type="roman" genre="SF"> Prélude à fondation </titre><auteurs>

<auteur><nom> Asimov </nom><prénom> Isaac </prénom>

</auteur></auteurs><éditeur> Pocket </éditeur>

</livre>

<livre>

[…]

</livre>

</bibliothèque>

<!-- blabla -->

Page 18: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 18

Exemple de référence : arbre XPATHExemple de référence : arbre XPATH

Élément

bibliothèque

Instructionxslins1

Comment-blabla

Document

Élément

livre

Élément

livre

Élément

titre

Élément

auteurs

Élément

éditeur

Élément

achat

Élément

auteur

Élément

prénom

Élément

nom

Attrlang

fr

Attrref

ASI2002

Textprélude à fondation

Text

Asimov

Text

Isaac

Text

Pocket

Attrdate

10/11/2003

AttrlieuFNAC

Attrtyperoma

n

Attrgenre

SF

[…]

Page 19: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 19

Expressions de chemins XPathExpressions de chemins XPath Une expression XPath :

S'évalue en fonction d'un nœud contexte Désigne un ou plusieurs chemins dans l'arbre à partir

de ce nœud A pour résultat un ensemble de nœud ou une valeur

numérique, booléenne ou alphanumérique

Parcours dans l'arbre d'un document : suite d'étapes

Un chemin peut être : Absolu : /livre/achat/@lieu

(contexte = racine du doc) Relatif : livre/achat/@lieu

étape

/

/

Absolu

Relatif

Page 20: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 20

Étapes XPathÉtapes XPath

Une étape : trois composants

Un axe : sens de parcours des nœuds Un filtre : type des nœuds qui seront retenus Un ensemble de prédicats –facultatifs-: propriétés que

doivent satisfaire les nœuds retenus

On peut faire une union de chemins

//livre | achat/@lieu

Axe ]PrédicatFiltre [::

Page 21: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 21

Évaluation d'une expression XPathÉvaluation d'une expression XPath

Etape évaluée en tenant compte de son contexte : Nœud, position initiale du chemin

1. Evaluation de l'étape 1 a partir du nœud contexte : On obtient un ensemble de nœuds

Taille de cet ensemble (fonction last() ) Position du nœud contexte dans cet ensemble (fonction

position() )

2. Evaluation étapes suivante : On considère un par un, les nœuds de cet ensemble

comme nœud contexte pour l'évaluation A chaque étape, on prend successivement comme

nœud contexte chacun des nœuds résultat de l'étape précédente.

Page 22: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 22

/A/B/@att1/A/B/@att1 : nœud initial : nœud initial

ÉlémentA

ÉlémentC

ÉlémentB

ÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 23: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 23

/A/A/B/@att1/B/@att1 : première étape : première étape

ÉlémentA

ÉlémentC

ÉlémentB

ÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 24: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 24

/A/B/A/B/@att1/@att1 : seconde étape : seconde étape

ÉlémentA

ÉlémentC

ÉlémentB

ÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 25: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 25

/A/B/@att1/A/B/@att1 : troisième étape : troisième étape

ÉlémentA

ÉlémentC

ÉlémentB

ÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 26: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 26

Chapitre 3 : XPath et XSLTChapitre 3 : XPath et XSLT

1. Visualisation des documents XML

2. XPath2.1. Principes

2.2. Les axes 2.3. Les filtres 2.4. Les prédicats

2.5. Fonctions de base 2.5. Exemples

3. XSLT 3.1. Transformation de documents 3.2. Modèle de traitement XSLT 3.3. Eléments constituants un document XSLT 3.4. Conclusion

En savoir plus…

Page 27: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 27

AxeAxe

Précise la direction à suivre – un sens- pour atteindre les nœuds suivants Hiérarchie directe, indirecte entre les nœuds Position relative des nœuds les uns par rapport aux

autres

Implique un ordre de parcours des nœuds

Un axe a un type Attribut Element Namespace

Page 28: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 28

Les axes XPathLes axes XPath

self:: (Notation abrégée : . ) child::nom (Notation abrégée : nom)

attribut:: (Notation abrégée : @ ) parent:: (Notation abrégée : .. ) descendant:: descendant-or-self:: (Notation abrégée : / ) ancestor:: ancestor-or-self:: following:: following-sibling:: preceding:: preceding-sibling::

Page 29: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 29

L'axe L'axe self::node()self::node()

ÉlémentA

ÉlémentC

nœud contexteÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 30: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 30

L'axe L'axe child::node()child::node()

ÉlémentA

ÉlémentC

nœud contexteÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 31: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 31

L'axe L'axe attribute::att1attribute::att1

ÉlémentA

ÉlémentC

nœud contexteÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 32: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 32

L'axe L'axe parent::Aparent::A

ÉlémentA

ÉlémentC

nœud contexteÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 33: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 33

L'axe L'axe descendant::node()descendant::node()

ÉlémentA

ÉlémentC

nœud contexteÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 34: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 34

L'axe L'axe descendant-or-self::node()descendant-or-self::node()

ÉlémentA

ÉlémentC

nœud contexteÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 35: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 35

L'axe L'axe ancestor::node()ancestor::node()

ÉlémentA

ÉlémentC

nœud contexteÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 36: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 36

L'axe L'axe ancestor-or-self::node()ancestor-or-self::node()

ÉlémentA

ÉlémentC

nœud contexteÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 37: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 37

L'axe L'axe preceding::node()preceding::node()

ÉlémentA

ÉlémentC

nœud contexteÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 38: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 38

L'axe L'axe preceding-sibling::node()preceding-sibling::node()

ÉlémentA

ÉlémentC

nœud contexteÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 39: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 39

L'axe L'axe following::node()following::node()

ÉlémentA

ÉlémentC

nœud contexteÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 40: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 40

L'axe L'axe following-sibling::node()following-sibling::node()

ÉlémentA

ÉlémentC

nœud contexteÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

Page 41: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 41

Chapitre 3 : XPath et XSLTChapitre 3 : XPath et XSLT

1. Visualisation des documents XML

2. XPath2.1. Principes

2.2. Les axes2.3. Les filtres 2.4. Les prédicats

2.5. Fonctions de base 2.5. Exemples

3. XSLT 3.1. Transformation de documents 3.2. Modèle de traitement XSLT 3.3. Eléments constituants un document XSLT 3.4. Conclusion

En savoir plus…

Page 42: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 42

Deux types de filtres : sur le nom ou le typeDeux types de filtres : sur le nom ou le type

Filtrage sur le nom (valable pour les types de nœuds qui ont un nom) :

Element ProcessingInstruction Attributs

• NOM : nœuds de nom NOM exemple : /livre/auteurs/auteur

* : tout nœud de l'axe exemple : /livre/*

Page 43: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 43

/A/B/D/A/B/D

ÉlémentA

ÉlémentC

ÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

ÉlémentB

Page 44: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 44

Nom générique :Nom générique : /A/*/A/*

ÉlémentA

ÉlémentC

ÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

ÉlémentB

Page 45: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 45

Filtrage sur le typeFiltrage sur le type

text() : nœuds de type Text exemple : /livre/titre//text()

comment() : nœuds de type Comment exemple : /comment()

processing-instruction() : nœuds de type ProcessingInstruction exemple : /processing-instruction('java')

node() : tous les types de noeuds

Page 46: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 46

/A/B//text()/A/B//text()

ÉlémentA

ÉlémentC

ÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

ÉlémentB

Page 47: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 47

/descendant::node()/@att2/descendant::node()/@att2

ÉlémentA

ÉlémentC

ÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

Document-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

ÉlémentB

Page 48: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 48

Chapitre 3 : XPath et XSLTChapitre 3 : XPath et XSLT

1. Visualisation des documents XML

2. XPath2.1. Principes

2.2. Les axes 2.3. Les filtres2.4. Les prédicats

2.5. Fonctions de base 2.5. Exemples

3. XSLT 3.1. Transformation de documents 3.2. Modèle de traitement XSLT 3.3. Eléments constituants un document XSLT 3.4. Conclusion

En savoir plus…

Page 49: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 49

Prédicats et cheminsPrédicats et chemins

Expressions booléennes construites à partir D'expressions de chemin De fonctions prédéfinies.

Expression calculée automatiquement convertie en résultat booléen selon son type et sa valeur. Valeur numérique

0 ou NAN : prédicat = false. Autre valeur numérique : prédicat = true.

chaîne de caractères, Vide : prédicat = false Non vide : prédicat = true.

Ensemble de nœuds, Vide : prédicat = false Non vide : prédicat = true.

Page 50: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 50

Pour bien comprendrePour bien comprendre

Exemples de prédicats avec expressions de chemins /child::livre/child::titre[attribute::genre]

F.A. : /livre/titre[@genre] Eléments titre, fils d'éléments livre qui possèdent un attribut

genre /child::livre/child::titre[attribute::type='SF']

F.A. : /livre/titre[@type='SF'] Eléments titre, fils d'éléments livre qui possèdent un attribut

type dont la valeur vaut 'SF'.

Dans l'expression /A/B[@att1] : On s'intéresse aux nœuds de type B fils de l'élément

racine A Parmi ces nœuds on ne prend que ceux pour lesquels

le prédicat [@att1] s'évalue à true [@att1] renverra vrai seulement si l'élément auquel on

l'applique (ici B) possède un attribut att1.

Page 51: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 51

/A/B[@att1]/A/B[@att1]

ÉlémentA

ÉlémentC

ÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

nœud contexte-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

ÉlémentB

Page 52: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 52

/A/B[@att1='a1']/A/B[@att1='a1']

ÉlémentA

ÉlémentC

ÉlémentB

ÉlémentD

ÉlémentD

ÉlémentD

InstructionJavains1

Comment-

blabla

Text-

blabla

Text-

blabla

Text-

blabla

nœud contexte-

Attratt2a3

Attratt1a2

Attratt315

Attratt1a1

ÉlémentB

Page 53: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 53

Prédicats et fonctionsPrédicats et fonctions

Les prédicats peuvent également utiliser des fonctions prédéfinies de XPath pour vérifier des conditions sur les nœuds.

Exemples de prédicats utilisant des fonctions /child::auteurs/descendant::text()[position()=1]

F.A. : /auteurs//text()[1] Premier nœud de type Text descendant d'un élément auteurs Syntaxe abrégée : [position()=1] s'écrit [1].

/child::titre[count(descendant::auteur)≥2] F.A. : /titre[count(//auteur) ≥ 2] Eléments titre qui ont au moins 2 descendants de type auteur

Page 54: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 54

Chapitre 3 : XPath et XSLTChapitre 3 : XPath et XSLT

1. Visualisation des documents XML

2. XPath 2.1. Principes

2.2. Les axes 2.3. Les filtres 2.4. Les prédicats

2.5. Fonctions de base 2.5. Exemples

3. XSLT 3.1. Transformation de documents 3.2. Modèle de traitement XSLT 3.3. Eléments constituants un document XSLT 3.4. Conclusion

En savoir plus…

Page 55: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 55

Fonctions appliquées aux noeudsFonctions appliquées aux noeuds

count(ensemble_de_nœuds) Compte le nombre de nœuds référencés. Il existe également des fonctions permettant de

positionner un nœud par rapport à ses frères.

position(ensemble_de_nœuds) Retourne la position du nœud contextuel.

last(ensemble_de_nœuds) Retourne la position du dernier nœud d'un ensemble de

nœuds.

name(nœuds) Renvoie le nom du nœud contexte.

string(nœud) Retourne le texte du nœud sans balisage

Page 56: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 56

Fonctions sur les chaînes de caractères (1/2)Fonctions sur les chaînes de caractères (1/2)

concat(chaine1, chaine2, chaine, …) concatène toutes les chaînes passées en arguments

Fonctions booléennes pour savoir si une chaîne est incluse dans une autre. starts-with(chaine1, chaine2)

true si chaine1 est débutée par chaine2 contains(chaine1, chaine2)

true si chaine1 contient chaine2.

string-length(chaine)  Renvoie la longueur de chaîne. Utilisée sans argument, la fonction renvoie la longueur

de la valeur textuelle du nœud courant.

Page 57: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 57

Fonctions sur les chaînes de caractères (2/2)Fonctions sur les chaînes de caractères (2/2)

Extraction d'une sous-chaîne à partir d'une chaîne substring(chaine1, m, n)

Sous-chaîne de chaine1 contenant n caractères et commençant au caractère en position m.

substring-after(chaine1, chaine2) Sous-chaîne de chaine1 qui suit la première occurrence de

chaine2. substring-before(chaine1, chaine2)

Sous-chaîne de chaine1 qui précède la première occurrence de chaine2.

translate(chaine1, chaine2, chaine3) Remplace dans chaine1 chaque occurrence des

caractères de chaine2 par ceux de chaine3. Ex : translate(chaine, "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ")

Conversion de chaine en majuscule.

Page 58: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 58

Fonctions booléennes Fonctions booléennes

true(), false() et not().

lang(chaine) true si la valeur de l'attribut xml:lang du nœud

courant = celle reçue en argument.

boolean(objet) Conversion en valeur booléenne selon le type :

Numériques– 0 ou NaN = false– tout le reste est true

Chaînes– chaîne vide = false– tout le reste est true

Ensembles de noeuds– ensemble vide = false– tout le reste est true

Page 59: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 59

Fonctions numériquesFonctions numériques

Opérateurs numériques courants : Comparaisons : <, >, =, != Opérations : +, -, *, div, mod

Fonctions numériques : number()

Tente une conversion (en cas d'echec on obtient NaN) ceiling(nombre)

Retourne le plus petit entier égal ou supérieur à nombre. floor(nombre)

Plus grand entier égal ou inférieur à nombre round(nombre)

Arrondit nombre à l'entier le plus proche sum(nombre1, nombre2, ...)

Somme les nombres/valeurs des nœuds passés en argument.

Page 60: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 60

Chapitre 3 : XPath et XSLTChapitre 3 : XPath et XSLT

1. Visualisation des documents XML

2. XPath 2.1. Principes

2.2. Les axes 2.3. Les filtres 2.4. Les prédicats

2.5. Fonctions de base 2.5. Exemples

3. XSLT 3.1. Transformation de documents 3.2. Modèle de traitement XSLT 3.3. Eléments constituants un document XSLT 3.4. Conclusion

En savoir plus…

Page 61: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 61

BilanBilan

XPath est un mécanisme standard de filtrage puissant et complet

La localisation d'un composant peut être exprimée par Chemin absolu (connaissance exacte de la structure) Modèle de chemin à suivre (connaissance partielle de

la structure)

Mécanisme essentiel pour un langage d'interrogation, de manipulation Moyen de filtrer les composants du document quel que

soit leur type Necessité d'un jeu d'opérateurs pour exploiter ces

données

Page 62: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 62

Exemples d'expressions XPath(1)Exemples d'expressions XPath(1)

child::livre[position()=last()–1] F.A. : livre[last()-1)] avant dernier livre du nœud contexte

following-sibling::livre[position()=1] F.A. : following-sibling::B[1] premier frère de droite de type livre du nœud contexte

descendant::livre[position()=12] F.A. : //livre[12] douzième livre du document

Page 63: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 63

Exemples d'expressions XPath(2)Exemples d'expressions XPath(2)

child::livre[child::éditeur and descendant::titre[attibut::genre='SF']] F.A. : livre[éditeur and titre[@genre='SF']] tout livre avec un éditeur et dont le genre est Science Fiction.

descendant::nom[child::text()='Asimov']/ancestor::titre F.A. : //nom[text()='Asimov']/..titre tous les titres des livres dont le nom d'un auteur est Asimov.

[self::auteur | self::éditeur] tout élément fils du nœud contexte qui est soit un auteur, soit un

éditeur.

Page 64: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 64

Chapitre 3 : XPath et XSLTChapitre 3 : XPath et XSLT

1. Visualisation des documents XML

2. XPath 2.1. Principes

2.2. Les axes 2.3. Les filtres 2.4. Les prédicats

2.5. Fonctions de base 2.5. Exemples

3. XSLT3.1. Transformation de documents 3.2. Modèle de traitement XSLT 3.3. Eléments constituants un document XSLT 3.4. Conclusion

En savoir plus…

Page 65: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 65

Introduction à XSLTIntroduction à XSLT

XSLT est un langage pour transformer des documents XML en d’autres documents XML Développé par le W3C, initialement pour le langage de

formatage XSL Recommandation W3C depuis novembre 1999 XSLT 2.0 en cours de développement Utilise la syntaxe XML, utilise le langage d’expressions

XPath Même type de document ou types différents en entrée

et en sortie XSLT peut être utilisé dans une chaîne de traitement

qui utilise aussi Java, Javascript, ASP, PHP, etc.

Page 66: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 66

Les feuilles de style XSLTLes feuilles de style XSLT

Les feuilles de style XSL (eXtensible Stylesheet Language) contrôlent la mise en page du document

Comme les feuilles de style CSS Indiquent comment un fichier XML doit être transformé

en un autre fichier XML ou HTML

Ce sont des documents bien formés déclaration XML en première ligne déclaration de l'encodage règles de fermeture des balises, etc.

Page 67: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 67

PrincipePrincipe

Un document (arbre) source est transformé en un document (arbre) résultat par un moteur de transformation qui applique une feuille de transformation(ou de style)

Fichier XML (+ DTD éventuellement) = D Feuille de style XSL = F Processeur XSL = programme qui applique la feuille de

style au fichier = P

Le processeur P transforme D en D' grâce à F

D + F

D'P

Page 68: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 68

Intérêt de XSLIntérêt de XSL

Plusieurs feuilles de style pour un même document Caractéristiques d'affichage et de contenu adaptées

aux besoins Contenu adapté pour un type d'utilisateur, d'usage Affichage adapté selon les plateformes

Exemple d'adaptation sur le fond : fiches bibliographiques en HTML Affichage détaillé Affichage résumé Catalogue de toutes les fiches

Exemple d'adaptation sur la forme : météo en ligne Ecran 19 pouces : cartes météorologiques, informations

détaillées Téléphone portable : police reduite, informations importantes

seulement, pas de cartes

Page 69: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 69

Rôle du processeur XSLRôle du processeur XSL

Feuille de style XSL n°1

Feuille de style XSL n°2

Fichier XML initial (bien formé ou

valide)

Fichier XML résultat (transformé) n°1

Fichier XML résultat (transformé) n°2

Processeur XSL

Page 70: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 70

Chapitre 3 : XPath et XSLTChapitre 3 : XPath et XSLT

1. Visualisation des documents XML

2. XPath 2.1. Principes

2.2. Les axes 2.3. Les filtres 2.4. Les prédicats

2.5. Fonctions de base 2.5. Exemples

3. XSLT 3.1. Transformation de documents3.2. Modèle de traitement XSLT 3.3. Eléments constituants un document XSLT 3.4. Conclusion

En savoir plus…

Page 71: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 71

Structure de base : les règlesStructure de base : les règles

Règle = template : élément de base pour produire le résultat Une règle s'applique dans le contexte d'un nœud de

l'arbre L'application de la règle produit un fragment du résultat

Résultat global (arbre) construit par la hiérarchisation des règles. Eléments de l'arbre source XML

Eléments non filtrés organisés dans un ordre différent,

Eléments nouveaux créés par les règles.

Page 72: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 72

Résultats de transformationRésultats de transformation

Règles en deux parties motif (Pattern) a rechercher dans l'arbre source

Dépend du contexte structural dans l’arbre source Exprimé dans le langage XPath

modèle utilisé pour former l'arbre résultat

Exemple de règle<xsl:template match="titre">

Je suis maintenant dans un nœud de nom "titre".</xsl:template>

Motif de sélection : expression match="titre" Modèle de la règle = contenu de l'élément Résultat : affichage dans le document du texte " Je suis maintenant dans un nœud de nom "titre" "

Page 73: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 73

Structure d'une feuille XSLTStructure d'une feuille XSLT

<?xml version="1.0"?>

<xsl:stylesheet

version="1.0"

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

<xsl:template match="NOM-ELEMENT-OU-JOKER">

… INSTRUCTIONS-OU-BALISES-OU-TEXTE …

</xsl:template>

<xsl:template match="NOM-AUTRE-ELEMENT-OU-JOKER">

… INSTRUCTIONS-OU-BALISES-OU-TEXTE …

</xsl:template>

… AUTANT DE BLOCS XSL:TEMPLATE QUE NECESSAIRE …

</xsl:stylesheet>

bloc1

début

bloc2

fin

Page 74: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 74

Processus de transformation XSLTProcessus de transformation XSLT

Analyse (parcours) du document source nœud par nœuds Recherche d'une règle définie dans la feuille de style Application des instructions contenues dans cette règle

Une règle trouvée, elle est appliquée

Plusieurs règles applicables : Règles issues de 2 feuilles de style (importation feuille

externe). Priorité d’importation (élément <xsl:import> ) La feuille qui importe est prioritaire sur la feuille importée

Règles de la même feuille : la + prioritaire est choisie Attribut priority de la règle, Sélectivité du pattern : règle la plus précise = la plus prioritaire

Aucune règle : règle par défaut selon le type du nœud

Page 75: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 75

Règles par défautRègles par défaut

Nœuds de type élément de l'arbre XML, Relance l'application des règles de la feuille au nœud

racine ou aux fils du nœud (traitement récursif).<xsl:template match="*|/"><xsl:apply-templates/>

</xsl:template>

Nœuds de type text() et attribut(), Recopie le texte ou la valeur de l'attribut.<xsl:template match="text()|@*"><xsl:value-of seect="."/>

</xsl:template>

Nœuds de type processing-instruction() et comment() Ne rien faire.<xsl:template match="processing-instruction()|comment()"/>

Page 76: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 76

Modèle général de feuille de style XSLTModèle général de feuille de style XSLT

Appel des règles hiérarchique. Règle initiale qui s’applique à la racine du document

traité (’/’). Production du cadre du document résultat Appel des autres règles qui vont, quant à elles, produire le

contenu du document résultat. Règles secondaires effectuent des traitements

seulement sur les nœuds qu'elles ciblent Modification de la mise en page du résultat.

Page 77: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 77

Exemple : biblio.xslExemple : biblio.xsl

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

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

<xsl:template match="/">

<!-- règle générale appliquée a la racine -> construction du cadre HTML du document résultat à afficher -->

</xsl:template>

<xsl:template match="livre">

<!-- règle appliquée aux éléments livre -->

</xsl:template>

<xsl:template name="liste_auteurs">

<!-- règle nommée "liste_auteur" et appliquée aux éléments auteur -->

</xsl:template>

</xsl:stylesheet>

Page 78: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 78

Exemple : Règle généraleExemple : Règle générale

<xsl:template match="/">

<html>

<head> <title>Ma bibliotheque</title></head>

<body bgColor="white">

<div align="center">

<font color="blue">

<h1>Ma bibliothèque</h1>

</font>

</div>

<xsl:apply-templates /></body>

</html>

</xsl:template>

Page 79: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 79

Exemple : Règle secondaire "livre" (1/2)Exemple : Règle secondaire "livre" (1/2)

<xsl:template match="livre">

<SPAN style="font-style:italic; padding-right:3pt">

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

</SPAN> (type :

<SPAN style="color:blue">

<xsl:value-of select=".//@type" />

</SPAN>

<xsl:if test=".//@genre"> , genre :

<SPAN style="color:blue">

<xsl:value-of select=".//@genre" />

</SPAN>

</xsl:if> ) aux éditions

<xsl:value-of select="éditeur" />

Page 80: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 80

Exemple : Règle secondaire "livre" (2/2)Exemple : Règle secondaire "livre" (2/2)

<SPAN style="font-style:italic;"> (

<xsl:choose>

<xsl:when test="@lang='fr'">

Ce livre est en français

</xsl:when>

<xsl:when test="@lang='en'">

Ce livre est en anglais

</xsl:when>

<xsl:otherwise>

Ce livre est en langue inconnue.

</xsl:otherwise>

</xsl:choose> )

</SPAN>

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

</xsl:template>

Page 81: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 81

Exemple : Règle secondaire "auteur"Exemple : Règle secondaire "auteur"

<xsl:template name="liste_auteurs">

<SPAN style="color:red; padding-right:3pt">

<ul>

<xsl:for-each select=".//auteur">

<xsl:sort select="./nom" order="ascending" />

<li>

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

</li>

</xsl:for-each>

</ul>

</SPAN>

</xsl:template>

Page 82: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 82

RésultatRésultat

Page 83: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 83

Chapitre 3 : XPath et XSLTChapitre 3 : XPath et XSLT

1. Visualisation des documents XML

2. XPath 2.1. Principes

2.2. Les axes 2.3. Les filtres 2.4. Les prédicats

2.5. Fonctions de base 2.5. Exemples

3. XSLT 3.1. Transformation de documents 3.2. Modèle de traitement XSLT3.3. Eléments constituants un document XSLT 3.4. Conclusion

En savoir plus…

Page 84: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 84

Déclaration et élément racineDéclaration et élément racine

Feuille XSLT : document XML (déclaration XML)

Elément document (racine) : xsl:stylesheet Doit être déclaré juste après le prologue du document Contient tous les autres éléments du document. Attribut version : numéro de version de la feuille Attribut xmlns:xsl : espace de nom utilisé pour la feuille

Éléments fils possibles (top-level elements) Ordre quelconque (sauf import et output en tête) : import, include, strip-space, preserve-space, output, key, decimal-format, namespace-alias, attribute-set, variable, param, template

<xsl:stylesheet version="numéro" xmlns:xsl="URI ">

<!-- éléments fils -->

</xsl:stylesheet>

Page 85: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 85

Eléments de base : Eléments de base : xsl:outputxsl:output

<xsl:output> spécifie les options de l'arbre de sortie

Attributs possibles : 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 : prise en compte de la déclaration XML. standalone : arbre de sortie avec ou sans DTD. doctype-public : identifiant public utilisé par la DTD associée. doctype-system : identifiant system utilisé par la DTD associée . cdata-section-elements : éléments dont le contenu doit être

traité via une section CDATA. indent : transformation sous forme d'arbre si valeur = yes. media-type : type MIME des données résultantes.

<xsl:output method="xml"|"html"|"text" version="nmtoken" encoding="chaine" omit-xml-declaration="yes"|"no" standalone="yes"|"no" doctype-public="chaine" doctype-system="chaine" cdata-section-elements=elt indent="yes"|"no" media-type="chaine" />

Page 86: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 86

Eléments de base : Eléments de base : xsl:templatesxsl:templates

<xsl:template> définit un modèle / règle à appliquer à un nœud et à un contexte spécifiques.

Attributs : name (facultatif) : nom donné à la règle en vu d'un appel explicite

par l’instruction <xsl:call-template/> dans un autre élément. match : Nœuds sources auxquels la règle s'applique.

Valeur = ensemble de chemins XPath séparés par des ’|’ (union). Seuls les axes child et attribute et les opérateurs // et / sont permis.

mode (facultatif) : permet d'avoir plusieurs règles en fonction du mode de sortie.

<xsl:template match="livre">{ contenu de la règle }

</xsl:template>

<xsl:template name="nom_regle" priority="number" match="expression" mode="mode_modele" >

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

Page 87: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 87

Eléments de base : Eléments de base : xsl:apply-templatesxsl:apply-templates

<xsl:apply-templates> relance l'application des règles sur les nœuds-fils de l'élément dans le traitement duquel il est appelé. select (facultatif)

Absent : traitement de tous les fils du nœud courant (y compris nœuds texte).

Présent : traitement uniquement des nœuds de l'expression

<xsl:apply-templates> peut être vide. Le traitement des nœuds-fils utilisera,

Les règles définies dans la feuille de style pour ces éléments si elles existent,

Les règles par défaut.

Ex : Dans biblio.xsl, l'appel <xsl:apply-templates/> dans la règle principale permet aux autres règles d'être exécutées.

<xsl:apply-templates select="expression" mode="mode_modele">

<!-- Content -->

</xsl:apply-templates>

Page 88: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 88

Eléments de base : Eléments de base : xsl:value-of xsl:value-of

<xsl:value-of> recopie la valeur d'une expression Expression peut correspondre à un élément, à un

attribut ou à tout autre nœud contenant une valeur. select : chemin du nœud dont on veut copier le

contenu.

<xsl:copie-of> recopie le nœud (balisage compris)

Ex : Dans biblio.xsl, <xsl:value-of select="éditeur"/> permet de recopier la valeur des nœuds "éditeur" parcourus.

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

<xsl:copie-of select="expression " />

Page 89: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 89

Boucles et choix : Boucles et choix : xsl:for-eachxsl:for-each

<xsl:for-each> permet de créer une boucle dans laquelle sont appliquées un certain nombre de transformations. select : définit l'ensemble des nœuds devant être

parcouru par la boucle. prend les nœuds un par un comme nœud contexte

Ex : Dans biblio.xsl, l'exemple suivant permet de recopier à la suite la valeur de tous les nœuds "auteur" parcourus.<xsl:for-each select=".//auteur"><li><xsl:value-of select="."/></li>

</xsl:for-each>

<xsl:for-each select="expression">

Page 90: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 90

Boucles et choix : Boucles et choix : xsl:sortxsl:sort

<xsl:sort/> permet d'effectuer un tri sur un ensemble de nœuds. Utilisé dans <xsl:for-each> et <xsl:apply-templates> Peut être appelé plusieurs fois pour effectuer un tri multicritères.

attributs : select : spécifie un nœud comme clé de tri. data-type (facultatif) : type des données à trier. order : ordre du tri. lang (facultatif) : jeu de caractères à utiliser pour le tri. case-order (facultatif) : tri sur les majuscules ou minuscules

Ex : Dans biblio.xsl, l'exemple suivant permet de recopier à la suite la valeur de tous les nœuds "auteur" parcourus mais en les classant par ordre alphabétique. <xsl:for-each select=".//auteur">

<xsl:sort select="nom" order="ascending"/><li><xsl:value-of select="."/></li>

</xsl:for-each>

<xsl:sort select="noeud" data-type="text"|"number"|elt order="ascending"|"descending" lang=nmtoken case-order="upper-first"|"lower-first" />

Page 91: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 91

Boucles et choix : Boucles et choix : xsl:ifxsl:if

<xsl:if> permet d'effectuer des tests sur les attributs et les éléments du document XML. test : prend la valeur 1 ou 0 selon le résultat de

l'évaluation de la condition (true ou false). En cas de réussite au test, le contenu de l'élément <xsl:if> est appliqué.

Pas de else…

Ex : Dans biblio.xsl, l'exemple suivant permet de tester si l'attribut genre existe et de l'afficher seulement en cas de réussite au test. <xsl:if test=".//@genre">, genre :

<SPAN style="color:blue"> <xsl:value-of select=".//@genre"/>

</SPAN>

</xsl:if>

<xsl:if test="condition"> action </xsl:if>

Page 92: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 92

Boucles et choix : Boucles et choix : xsl:choosexsl:choose

<xsl:choose>, <xsl:when> et <xsl:otherwise> permettent de définir une liste de choix et d'affecter à chaque choix une transformation différente. Chaque choix est défini par un élément <xsl:when> Un traitement par défaut peut être spécifié grâce à l'élément

<xsl:otherwise>.

Ex : Dans biblio.xsl, l'exemple suivant permet de tester la valeur de l'attribut lang et d'afficher des résultats différents en fonction de la réponse au test.

<xsl:choose><xsl:when test="@lang='fr'">Ce livre est en français</xsl:when><xsl:when test="@lang='en'">Ce livre est en anglais</xsl:when><xsl:otherwise>Ce livre est dans une langue non répertoriée.</xsl:otherwise>

</xsl:choose>

Page 93: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 93

Création : Création : xsl:elementxsl:element et et xsl:attribute xsl:attribute

<xsl:element> permet d'insérer un nouvel élément dans l'arbre résultat name : nom donné au nouvel élément. use-attribute-sets : ensemble des attributs à

associer à l'élément créé.

<xsl:attribute> permet de définir un nouvel attribut à ajouter à l'élément de l'arbre résultat. name : nom de l'attribut à ajouter dans le contexte

courant. Valeur de l'attribut créé = celle du contenu de l'élément

<xsl:element name="nom_element" use-attribute-sets="ensemble_attributs">

<xsl:attribute name="nom">valeur</xsl:attribute>

Page 94: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 94

Définition de variables : Définition de variables : xsl:variablexsl:variable

<xsl:variable> sert à créer les variables dans XSLT. name : spécifie le nom de la variable.

Plusieurs possibilités de contenu(valeur de la variable) : select avec une valeur (une constante) select avec une expression XPath Variable définie par son contenu :

<xsl:variable name='var3'>voici le contenu de la variable

</xsl:variable>

Appel à la variable se fait avec $nom_variable <xsl:value-of select="$nom_variable" />

<xsl:variable name="nom_variable" select="valeur|expression"/>

Page 95: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 95

Portée d'une variablePortée d'une variable

Portée d'une variable limitée aux éléments-frères et à leurs descendants. Si une variable est déclarée dans une boucle ou un

choix, on ne pourra pas l'utiliser hors de cet élément.

Deux types de variables : variables globales (élément de premier niveau).

visibles dans tout le programme XSLT avant le template

variables locales (dans les corps de règle). visibles dans les following-sibling et leur descendants après le template

Page 96: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 96

Définition de paramètres : Définition de paramètres : xsl:paramxsl:param

<xsl:param> permet de créer un paramètre qui peut ensuite être passé à une règle grâce à <xsl:withparam> name : spécifie le nom de la variable select : donne la valeur par défaut du paramètre.

Deux niveaux de définition : Dans le corps d'une règle (local)

Fourni par l'appel de règle (call ou apply) Élément de premier niveau (global)

Fils de xsl:stylesheet

Appel au parametre se fait avec $nom_param <xsl:value-of select="$nom_param" />

<xsl:param name="nom_param" select="valeur"/>

<xsl:withparam name="nom_param" select="valeur"/>

Page 97: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 97

Exemple de paramètreExemple de paramètre

La règle Afficher attend une chaîne :

<xsl:template name="Afficher">

<xsl:param name="texte" select="string('inconnu')"/>

<xsl:value-of select="concat(position(),':',$texte)"/>

</xsl:template>

Passage du paramètre :

<xsl:template match="comment()">

<xsl:call-template name="Afficher">

<xsl:with-param name="texte" select="string('Comment')"/>

</xsl:call-template>

</xsl:template>

Page 98: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 98

Chapitre 3 : XPath et XSLTChapitre 3 : XPath et XSLT

1. Visualisation des documents XML

2. XPath 2.1. Principes

2.2. Les axes 2.3. Les filtres 2.4. Les prédicats

2.5. Fonctions de base 2.5. Exemples

3. XSLT 3.1. Transformation de documents 3.2. Modèle de traitement XSLT 3.3. Eléments constituants un document XSLT3.4. Conclusion

En savoir plus…

Page 99: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 99

Conclusion sur XSLTConclusion sur XSLT

Un langage de règles totalement adapté au traitement de documents XML Parcours d’un document, vu comme un arbre Déclenchement de règles sur certains nœuds Association de plusieurs programmes à un même

document

Intégration du langage XPath

Page 100: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 100

Chapitre 3 : XPath et XSLTChapitre 3 : XPath et XSLT

1. Visualisation des documents XML

2. XPath 2.1. Principes

2.2. Les axes 2.3. Les filtres 2.4. Les prédicats

2.5. Fonctions de base 2.5. Exemples

3. XSLT 3.1. Transformation de documents 3.2. Modèle de traitement XSLT 3.3. Eléments constituants un document XSLT 3.4. Conclusion

En savoir plus…

Page 101: ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 1 1ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath

ACCARY-BARBIER / CNAM - Cycle C - 2005-2006 101

En savoir plus…En savoir plus…

Cours et tutoriels en ligne …. http://www.xmltechno.com/tutoriels/02_intro_p1.cfm

http://www.w3.org/

Bernd Amann et Philippe Rigaux, 2002, Comprendre XSLT, O'Reilly