xslt pour les nuls — esquisse d'une initiation aux normes de

Download XSLT pour les nuls — Esquisse d'une initiation aux normes de

Post on 05-Jan-2017

214 views

Category:

Documents

1 download

Embed Size (px)

TRANSCRIPT

  • XSLT pour les nuls Esquisse d'une initiation aux normes de

    transformation XML

    Lou Burnard

    mai 2011

  • Objectifs

    .

    .

    . ...

    .Ceci n'est pas une formation complte! son objectif est de ...

    vous donner un avant-gout des possibilits affords par lesnormes XSLT et XPath

    surtout dans le domaine de traitement des documentsXML-TEI, principalement donc sortis des sciences humaines

    aborder les concepts fondamentaux et les usages les plusrpandus du norme XSLT

    vous prparer pour une formation plus approfondie deSebastian Rahtz (demain)

  • Un mot sur MEET

    MEET c'est une action transversale du TGE ADONIS pour la ...

    Mutualisation d'

    Experiences sur l'

    Encodage

    TEI

    Entre autres activits, il est charge de promouvoir l'change et lamutualisation des comptences et des experiences techniques surle traitement des documents TEI-XML en France.

    D'o cette formation, realise en collaboration avec l'action MUTEC.

  • XSL: un ensemble de normes complmentaires

    XPath: un syntaxe normalis pour dfinir et accder auxsous-parties d'une arborescence XML

    XSLT: un norme informatique pour la transformation desarborescences XML

    XSL FO: un vocabulaire XML pour la description d'affichage despages

    Tous les trois dvelops et maintenus par le W3C, comme le normeXML.

  • A quoi sert le XSL ?

    Un document XML n'est qu'une chane de caractres Unicodeavec des balises: pourquoi pas le trater en tant que tel?

    Parce que les balises representent quelque chose de plussignifiant : l'arborescence.Parce que le syntax XML permet des variations ...

    .

    .

    . ..

    .

    .

    Parce que la structuration d'un document XML fait partie de sasignification

  • C'est quoi une arborescence ?

    un ensemble de noeuds, organis de manire hirarchique

    chaque noeud porte un identifiant gnrique (son "type")

    il y a un seul noeud racine qui contient (ou domine) tous lesautreschaque noeud peut contenir (ou dominer)

    un sous-arborescenceou un morceau de textefacultativement un ensemble d'attributs

    chaque attribut comporte un nom et un valeur

  • Exemple texte XML ....

    .

    . ..

    .

    .

    The SICK ROSE

    O Rose thou art sick.The invisible worm,That flies in the night In the howling storm:

    Has found out thy bed Of crimson joy:And his dark secret love Does thy life destroy.

    Queen Anne's tipple

    Here thou Great Anna whom three realms obeyDoth sometimes council take, and sometimes tea.

  • .. ou, en forme d'arborescence:

  • XPath : une feuille de route

    Pour accder aux composants d'un document XML, on spcifie unchemin, spcifiant les noeuds qu'il faut traverser pour arriver lapartie souhait

    Par exemple, pour arriver aux s dans cet exemple, oncommence au , puis passe un fils, et ensuite onarrive un

    En XPath, on dit : /body/div/head

  • Les tapes

    Chaque tape sur ce chemin n'est pas forcment un lmentXML...

    on peut aussi regarder les attributs

    ou des morceaux de texte

  • Les slections

    On peut slctionner parmi les noeuds resultants, en forme derestriction entre parenthses [ et ]

    Une restriction peut tenir en compte la valeur d'un attribut

    ou la position ordinale du noeud dans l'arbre

    ou l'existence d' un lment du type indiqu

  • Le point de depart

    On peut partir de n'importe quel point dans l'arborescence:

    // signifie n'importe ou

    .. signifie mon parent

    On peut aussi naviguer l'hierarchie, en se servant des axes tels queancestor::, following-sibling::, descendant:: ...

  • Fonctions XPath

    XPath fournit galement une librarie extensive de fonctions utiles.On signale ici seulement quelques-unes :

    count(x) fournit le nombre des noeuds dans l'arbre x

    position() fournit le nombre ordinal du noeud courant parrapport son contexte

    last() fournit fournit le nombre ordinal du dernier noeudcourant par rapport son contexte

    contains(x,y) test l'existence de la chaine y dans le morceaude texte x

  • Premier exercice

    Tester votre comprhension de XPath avec la premire partie del'exercice...

  • Comment se servir d' XSLT ?

    .

    .

    . ...

    .XSLT est un langage de transformation

  • Une transformation typique

    A partir de ceci :.

    .

    . ..

    .

    .

    Pasta pour les debutants

    patesfromage rp

    Faire bouiller les pates, et melanger avec le fromage.

    on veut produire :.

    .

    . ..

    .

    .

    34: Pasta pour les novicesIngrdients: pates fromage rpFaire bouiller les pates, et melanger avec le fromage.

  • Comment exprimer cela en XSL?

    .

    .

    . ..

    .

    .

    :

    Ingrdients:

  • Une feuille de style XSLT

    est un document XML, contenant des lments de l'espace denoms http://www.w3.org/1999/XSL/Transform

    (lment racine de tout stylesheet) permet despcifier tous les noms d'espace utiliss, un nom d'espace pardefaut, et la version du norme XSLT employ (1 ou 2)

    : spcifie quelques options pour l'arbre de sortie,par exemple son format (HTML, XML, TEXT...), encodage(ISO-8859-1, UTF-8 ...) etc.

    .

    .

    . ..

    .

    .

  • Dix lments XSLT essentiels

    spcifie un modle de transformation

    applique des templates

    sort une valeur

    sort un morceau de texte

    , et sortent unlment, attribut, ou commentaire

    et actions conditionnels

    bouclage des actions

    dfinition de variable

    effectue une numerotation

    effectue un tri

  • Cet lment spcifie un modele (des actions) appliquer l'arborescence spcifie par son attribut@matchIl peut contenir d'autres lments XSL, des lments d'autres nomsd'espace (qui seront copis), ou rien de tout..

    .

    . ..

    .

    .

  • Wild cards

    A part des lments et des attributs, l'attribut match sur peut indiquer...

    / la racine du document* tout lment@* tout attributtext() tout morceau de texte

    .

    .

    . ..

    .

    .

    .

    .

    . ... .

  • Les rgles d'or de XSLT

    Par defaut, le document est a traiter lment par lment......1 Si aucun template ne correspond un lment, traiter les

    lments qu'il contient...2 Si aucun lment reste traiter par regle 1, sortir les morceaux

    de texte contenus par l' lment...3 Un lment n'est traite que si un template lui correspond...4 L'ordre des templates dans le stylesheet est sans significance...5 Tout partie du document est traitable part tout template,

    eventuellement plusieurs fois...6 Un stylesheet ne peut contenir que de XML bien-forme

  • Contenu d'un template

    Les lments XML d'un nom d'espaces autre que le XSL se trouvantdans un template sont sortis sans changement.

    Les fragments textuels (plus ou moins) pareils.

    Un template vide requiert la sortie de ... rien, donc (s'il est invoqu)il supprime les noeuds concernes.

  • Plusieures templates peuvent etre spcifies pour unmeme lment en des contextes divers

    Comparer.

    .

    . ..

    .

    .

    ....

    avec.

    .

    . ..

    .

    .

    ...

    ....

    En cas de conflit, c'est le template le plus spcifique qui gagne.

  • Cet lment rend disponible dans le contexte courant les reglescontenus par les templates indiques dans son attribut@select. Siaucun template n'est indiqu, tous les templates sont disponibles..

    .

    . ..

    .

    .

    .

    .

    . ..

    .

    .

    Il est tres utile pour varier l'ordre des sorties:.

    .

    . ..

    .

    .

    Corps du texte

    Pices liminaires

  • Cet lment fait sortir la valeur d'un lment ou d'un attribut :.

    .

    . ..

    .

    .

    Attention aux doublons potentiels!.

    .

    . ..

    .

    .

  • Attention: ne pas confondre...

    fait sortir le contenu des noeudsindiques par le XPath "XX".

    fait traiter les templatesdisponibles pour les noeuds indiques par le XPath "XX"

    n'a aucun effet : il definit uncorrespondence entre un template et un lment

  • Evaluation des valeurs d'attribut

    On a :... ..

    . .site Gallica

    On veut :... ..

    . .

    Ceci ne sera pas efficace :.

    .

    . ..

    .

    .

    parce qu'il donnera l'attribut@href la valeur @target!

  • Une astuce syntaxique...

    On utilise {} pour indiquer qu'une expression doit tre evalue:.

    .

    . ..

    .

    .

    Ceci donnera l'attribut@href la valeur de l' attribut@target quelleque soit la valeur de ce dernier

  • , ,

    Ces lments font apparaitre des lments XML dans l'arbre desortie. Ils sont un peu plus verbose que les abbrviationspresentes jusqu' l, mais peut-tre plus lgant....

    .

    . ..

    .

    .

    est l'equivalent de.

    .

    . ..

    .

    .

  • : faire sortir un morceau de texte

    Cet lment est utile pour englober un morceau de texteexplicitement (au lieu de le donner directement dans le corps dutemplate)..

    .

    . ..

    .

    .

    ITEM

  • : faire une preuve

    Cet lment permet des actions conditionelles :.

    .

    . ..

    .

    .

    cf..

    .

    . ..

    .

    .

  • : faire un choix

    Cet lment permet des actions conditionelles un peu pluscomplexes :.

    .

    . ..

    .

    .

    (mle)

    (femelle)

    (sexe non spcifi)

    (code de sexe inconnu: )

  • : faire une iterationCet lment permet un bouclage des actions :.

    .

    . ..

    .