32
XPath et XSLT Transformation de documents XML

XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Embed Size (px)

Citation preview

Page 1: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

XPath et XSLT

Transformation de documents XML

Page 2: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

XPath : XML Path Language

Utilisé par XSLT et XPointer Adressage d’une partie d’un document XML Syntaxe non XML

– Utilisable dans une URI

Possibilité de faire des tests (Pattern) Supporte XML Namespaces W3C Recommandation, November 1999

Page 3: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Expression XPath

Un XPath est composé d’une expression L’expression est évaluée

– Ensemble de Nœuds Element Attribut …

– Boolean– Number– String

Une expression est évaluée dans un context

Page 4: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Location Paths

Exemples de Location Path– child::para – child::*– attribute::name– /descendant::olist/child::item

Les Location Path ne sont qu’une partie de XPath mais la partie la plus utilisée

Page 5: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Location Path : Syntaxe

Contexte– / : racine (Chemin Absolu)– : contexte courant (Chemin Relatif)

Etape– Axe (fils, parent, …)

suivi de ::

– Test (Livre, …)– Prédicat pour affiner la sélection

Possibilité de chaîner les étapes.

Page 6: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Etape : Axe

– ancestor, ancestor-or-self– attribute– child– descendant, descendant-or-self– following, following-sibling– namespace– parent– preceding, preceding-sibling– self

Page 7: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Etape : Test

Nom * Type

– node()– text()– comment()– processing-instruction()– processing-instruction(name)

Page 8: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Etape : Prédicat

‘[‘ Expression ‘]’ Quelques expressions

– position()=3– position()=last()-1– attribute::type=‘warning’

Prédicats peuvent être chaîné [ ][ ]

Page 9: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Exemples Xpath (Location Path)

child::para[position()>1] /descendant::figure[position()=42] child::para[attribute::type=‘warning’][position()=5] /descendant::para ancestor::div self::para child::chapter[child::title]

Page 10: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Abréviations

child peut être implicite– child::div/child::para => div/para

attribute peut être remplacé par @ /descendant-or-self::node()/ peut être remplacé

par // self.node() peut être remplacé par . parent::node() peut être remplacé par ..

Page 11: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Les Expressions XPath

Location Path seulement une partie de XPath XPath : des Expressions

– Fonctions string– Fonctions boolean– Manipulation de Nœud– …

Page 12: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

XSLT : XSL Transformation

Partie de XSL Extensible Stylesheet Language Transformation de document XML Syntaxe XML Fonctionnement par pattern-matching W3C Recommandation November 1999

Page 13: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Principe de Fonctionnement

XML

XML

PDF

html

Page 14: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Traitement XSLT

Effectué sur une liste de nœuds– Initialement cette liste ne contient que le nœud

racine

Recherche des templates correspondant aux nœuds de la liste.

Exécution des templates– Ecriture sur la sortie– Mise à jour de la liste

Page 15: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Une feuille de style XSLT

Un document XML Prologue Spécifique

– <xsl:stylesheet version=“1.0”

xmlns:xsl=“http://www.w3.org/1999/Transform”> Des éléments caractérisant la feuille de style

– xsl:import– xsl:include– xsl:output– …

Des Templates

Page 16: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Les Templates XSLT

Les templates XML définissent la transformation Identification d’une source

– XPath

Traitement (Ex : création d’élément XML)– Contenu du template

Ex:– <xsl:template match=“/”>

<H1> <xsl:apply-templates/> </H1></xsl:template>

Page 17: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Les Templates XSLT

<xsl:templatematch = pattern (XPath location)name = qname (pour Appeler un

template)priority = number (règles d’ordre)mode = qname (Pls traitements / Elt><!-- Contenu -->

</xsl:template>

Page 18: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Exemples de Template

Une partie de document XML– This is an <emph> important </emph> point

Un template d’une feuille de style– <xsl:template match=“emph”>

<fo:inline-sequence font-weigth=“bold”><xsl:apply-templates/>

</for:inline-sequence><xsl:template>

Le résultat– This is an important point

Page 19: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Contenu d’un template

Si un template contient du texte, ce texte sera écrit sur la sortie.

Ex :

<xsl:template match=“/”>Feuille de style remplacant tout par ce

texte ?!!!

</xsl:template>

Page 20: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Contenu d’un template

Si un template contient des éléments XML ainsi que des attributs XML ceux ci seront écrit sur la sortie. Ex :<xsl:template match=“/”>

<HTML><HEAD>…</HEAD>…

</xsl:template> Il est néanmoins conseillé d’utiliser les fonctions de

création d’élément XML

Page 21: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Fonctions de création

Création d’un élément– <xsl:element name = qname>

Création d’un attribut– <xsl:attribute name = qname> valeur

Création de texte– <xsl:text > texte

Création d’instructions de traitement– <xsl:processing-instruction name=qname>

Création de commentaires– <xsl-comment> text

Page 22: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Fonction xsl:apply-templates

Fonction permettant d’appliquer un template sur les fils du nœud courant (met à jour la liste de nœuds)<xsl:apply-templates

select = exprmode = qname>contenu

</xsl:apply-templates>Ex :

<xsl:template match=“*”><xsl:apply-templates/>

</xsl:template>

Page 23: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Fonction xsl:value-of

La fonction xsl:value-of créer un nœud text correspondant à la valeur du résultat de l’expression

<xsl:value-ofselect = string-expr >

Ex:<xsl:template match=“person”>

<p> <xsl:value-of select=“@given-name”/> </p></xsl:template>

Page 24: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Répétition

Il est possible d’appliquer un template à un ensemble d’éléments.<xsl:for-each

select = node-expr>Contenu

</xsl:for-each>

Ex:<xsl:template match=“/”>

<xsl:for-each select=“eleve”> …

Page 25: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Traitement conditionnel

XSLT propose deux instructions conditionnel– <xsl:if

test = boolean-exp>Contenu

</xsl:if>– <xsl:choose>

<xsl:when test=boolean-expr> … </xsl:when><xsl:when test=boolean-expr> … </xsl:when>…<xsl:otherwise> … </xsl:otherwise>

</xsl:choose>

Page 26: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Et encore

Possibilité de trier les éléments de la liste. Utilisé après un xsl:apply-templates ou un xsl:for-each

– <xsl:sort select=string-expr …> XSLT permet de créer des variables qui pourrons être

utilisées dans la feuille de style. Une variable peut être un objet de n’importe quel type.

– <xsl:varaible name=qname select=expr > Autres fonctions XSLT

– Opération sur les nombres– Opération sur les chaînes de caractères– Envoi de messages– Copy, …

Page 27: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Modes

Les modes permettent à un élément d’être traité plusieurs fois, en produisant un résultat différent à chaque fois.

<xsl:template match=“fils” mode=“m1”>…

<xsl:template match=“fils” mode=“m2”>…

<xsl:apply-templates mode=“m2”>

Page 28: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Template nommé

L’utilisation de l’attribut name de l’élément xsl:template permet de spécifier un nom de modèle.

Un template nommé peut ne pas avoir d’attribut match

Un template nommé peut être appelé par<xsl:call-template name=qname>

Page 29: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Import de template

XSLT founit deux mécanismes pour combiner des feuilles de style– <xsl:include href=uri-reference/>

Copier/Coller de la feuille de style– <xsl:import href=uri-reference/>

Liens vers la feuille de style importé. En cas de conflit de template, les feuilles importées sont moins prioritaire.

Page 30: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Liens document XML et feuille de style XSLT

Le document XML peut inclure la feuille de style ou simplement la référencer.

<?xml version="1.0" ?>

<?xml:stylesheet type="text/xsl" href="test.xsl"?>

Page 31: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Moteurs XSLT

IE 5.0 (Microsoft)– Premier navigateur à proposer un moteur de

transformation XSLT. Cependant, le moteur XSLT de IE5 n’est pas entièrement conforme au standard (développé avant)

Xalang (Apache)– Moteur de transformation proposé par le groupe

Apache. Entièrement compatible avec le standard. Unité autonome.

Page 32: XPath et XSLT Transformation de documents XML. XPath : XML Path Language Utilisé par XSLT et XPointer Adressage dune partie dun document XML Syntaxe non

Conclusion

Langage de transformation de document XML Syntaxe XML (relativement simple) Fonctionnement Pattern/Matching En principe utiliser pour construire un

document XSL Transformation Client ou Serveur Recommandation W3C Novembre 1999