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

TRANSCRIPT

<ul><li><p>XSLT pour les nuls Esquisse d'une initiation aux normes de</p><p>transformation XML</p><p>Lou Burnard</p><p>mai 2011</p></li><li><p>Objectifs</p><p>.</p><p>.</p><p>. ...</p><p>.Ceci n'est pas une formation complte! son objectif est de ...</p><p>vous donner un avant-gout des possibilits affords par lesnormes XSLT et XPath</p><p>surtout dans le domaine de traitement des documentsXML-TEI, principalement donc sortis des sciences humaines</p><p>aborder les concepts fondamentaux et les usages les plusrpandus du norme XSLT</p><p>vous prparer pour une formation plus approfondie deSebastian Rahtz (demain)</p></li><li><p>Un mot sur MEET</p><p>MEET c'est une action transversale du TGE ADONIS pour la ...</p><p>Mutualisation d'</p><p>Experiences sur l'</p><p>Encodage</p><p>TEI</p><p>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.</p><p>D'o cette formation, realise en collaboration avec l'action MUTEC.</p></li><li><p>XSL: un ensemble de normes complmentaires</p><p>XPath: un syntaxe normalis pour dfinir et accder auxsous-parties d'une arborescence XML</p><p>XSLT: un norme informatique pour la transformation desarborescences XML</p><p>XSL FO: un vocabulaire XML pour la description d'affichage despages</p><p>Tous les trois dvelops et maintenus par le W3C, comme le normeXML.</p></li><li><p>A quoi sert le XSL ?</p><p>Un document XML n'est qu'une chane de caractres Unicodeavec des balises: pourquoi pas le trater en tant que tel?</p><p>Parce que les balises representent quelque chose de plussignifiant : l'arborescence.Parce que le syntax XML permet des variations ...</p><p>.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>Parce que la structuration d'un document XML fait partie de sasignification</p></li><li><p>C'est quoi une arborescence ?</p><p>un ensemble de noeuds, organis de manire hirarchique</p><p>chaque noeud porte un identifiant gnrique (son "type")</p><p>il y a un seul noeud racine qui contient (ou domine) tous lesautreschaque noeud peut contenir (ou dominer)</p><p>un sous-arborescenceou un morceau de textefacultativement un ensemble d'attributs</p><p>chaque attribut comporte un nom et un valeur</p></li><li><p>Exemple texte XML ....</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>The SICK ROSE </p><p>O Rose thou art sick.The invisible worm,That flies in the night In the howling storm:</p><p>Has found out thy bed Of crimson joy:And his dark secret love Does thy life destroy.</p><p>Queen Anne's tipple</p><p>Here thou Great Anna whom three realms obeyDoth sometimes council take, and sometimes tea.</p></li><li><p>.. ou, en forme d'arborescence:</p></li><li><p>XPath : une feuille de route</p><p>Pour accder aux composants d'un document XML, on spcifie unchemin, spcifiant les noeuds qu'il faut traverser pour arriver lapartie souhait</p><p>Par exemple, pour arriver aux s dans cet exemple, oncommence au , puis passe un fils, et ensuite onarrive un </p><p>En XPath, on dit : /body/div/head</p></li><li><p>Les tapes</p><p>Chaque tape sur ce chemin n'est pas forcment un lmentXML...</p><p>on peut aussi regarder les attributs</p><p>ou des morceaux de texte</p></li><li><p>Les slections</p><p>On peut slctionner parmi les noeuds resultants, en forme derestriction entre parenthses [ et ]</p><p>Une restriction peut tenir en compte la valeur d'un attribut</p><p>ou la position ordinale du noeud dans l'arbre</p><p>ou l'existence d' un lment du type indiqu</p></li><li><p>Le point de depart</p><p>On peut partir de n'importe quel point dans l'arborescence:</p><p>// signifie n'importe ou</p><p>.. signifie mon parent</p><p>On peut aussi naviguer l'hierarchie, en se servant des axes tels queancestor::, following-sibling::, descendant:: ...</p></li><li><p>Fonctions XPath</p><p>XPath fournit galement une librarie extensive de fonctions utiles.On signale ici seulement quelques-unes :</p><p>count(x) fournit le nombre des noeuds dans l'arbre x</p><p>position() fournit le nombre ordinal du noeud courant parrapport son contexte</p><p>last() fournit fournit le nombre ordinal du dernier noeudcourant par rapport son contexte</p><p>contains(x,y) test l'existence de la chaine y dans le morceaude texte x</p></li><li><p>Premier exercice</p><p>Tester votre comprhension de XPath avec la premire partie del'exercice...</p></li><li><p>Comment se servir d' XSLT ?</p><p>.</p><p>.</p><p>. ...</p><p>.XSLT est un langage de transformation</p></li><li><p>Une transformation typique</p><p>A partir de ceci :.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>Pasta pour les debutants</p><p>patesfromage rp</p><p>Faire bouiller les pates, et melanger avec le fromage.</p><p>on veut produire :.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>34: Pasta pour les novicesIngrdients: pates fromage rpFaire bouiller les pates, et melanger avec le fromage.</p></li><li><p>Comment exprimer cela en XSL?</p><p>.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>:</p><p>Ingrdients:</p></li><li><p>Une feuille de style XSLT</p><p>est un document XML, contenant des lments de l'espace denoms http://www.w3.org/1999/XSL/Transform</p><p> (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)</p><p> : spcifie quelques options pour l'arbre de sortie,par exemple son format (HTML, XML, TEXT...), encodage(ISO-8859-1, UTF-8 ...) etc.</p><p>.</p><p>.</p><p>. ..</p><p>.</p><p>.</p></li><li><p>Dix lments XSLT essentiels</p><p> spcifie un modle de transformation</p><p> applique des templates</p><p> sort une valeur</p><p> sort un morceau de texte</p><p>, et sortent unlment, attribut, ou commentaire</p><p> et actions conditionnels</p><p> bouclage des actions</p><p> dfinition de variable</p><p> effectue une numerotation</p><p> effectue un tri</p></li><li><p>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..</p><p>.</p><p>. ..</p><p>.</p><p>.</p></li><li><p>Wild cards</p><p>A part des lments et des attributs, l'attribut match sur peut indiquer...</p><p>/ la racine du document* tout lment@* tout attributtext() tout morceau de texte</p><p>.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>.</p><p>.</p><p>. ... .</p></li><li><p>Les rgles d'or de XSLT</p><p>Par defaut, le document est a traiter lment par lment......1 Si aucun template ne correspond un lment, traiter les</p><p>lments qu'il contient...2 Si aucun lment reste traiter par regle 1, sortir les morceaux</p><p>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,</p><p>eventuellement plusieurs fois...6 Un stylesheet ne peut contenir que de XML bien-forme</p></li><li><p>Contenu d'un template</p><p>Les lments XML d'un nom d'espaces autre que le XSL se trouvantdans un template sont sortis sans changement.</p><p>Les fragments textuels (plus ou moins) pareils.</p><p>Un template vide requiert la sortie de ... rien, donc (s'il est invoqu)il supprime les noeuds concernes.</p></li><li><p>Plusieures templates peuvent etre spcifies pour unmeme lment en des contextes divers</p><p>Comparer.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p> ....</p><p>avec.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p> ...</p><p> ....</p><p>En cas de conflit, c'est le template le plus spcifique qui gagne.</p></li><li><p>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..</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>Il est tres utile pour varier l'ordre des sorties:.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>Corps du texte</p><p>Pices liminaires</p></li><li><p>Cet lment fait sortir la valeur d'un lment ou d'un attribut :.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>Attention aux doublons potentiels!.</p><p>.</p><p>. ..</p><p>.</p><p>.</p></li><li><p>Attention: ne pas confondre...</p><p> fait sortir le contenu des noeudsindiques par le XPath "XX".</p><p> fait traiter les templatesdisponibles pour les noeuds indiques par le XPath "XX"</p><p> n'a aucun effet : il definit uncorrespondence entre un template et un lment</p></li><li><p>Evaluation des valeurs d'attribut</p><p>On a :... ..</p><p>. .site Gallica</p><p>On veut :... ..</p><p>. .</p><p>Ceci ne sera pas efficace :.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>parce qu'il donnera l'attribut@href la valeur @target!</p></li><li><p>Une astuce syntaxique...</p><p>On utilise {} pour indiquer qu'une expression doit tre evalue:.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>Ceci donnera l'attribut@href la valeur de l' attribut@target quelleque soit la valeur de ce dernier</p></li><li><p>, , </p><p>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....</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>est l'equivalent de.</p><p>.</p><p>. ..</p><p>.</p><p>.</p></li><li><p> : faire sortir un morceau de texte</p><p>Cet lment est utile pour englober un morceau de texteexplicitement (au lieu de le donner directement dans le corps dutemplate)..</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p> ITEM </p></li><li><p> : faire une preuve</p><p>Cet lment permet des actions conditionelles :.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>cf..</p><p>.</p><p>. ..</p><p>.</p><p>.</p></li><li><p>: faire un choix</p><p>Cet lment permet des actions conditionelles un peu pluscomplexes :.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>(mle)</p><p>(femelle)</p><p>(sexe non spcifi)</p><p>(code de sexe inconnu: )</p></li><li><p> : faire une iterationCet lment permet un bouclage des actions :.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>cf..</p><p>.</p><p>. ..</p><p>.</p><p>.</p></li><li><p> : creation de variable</p><p>Cet lment permet d'associer un nom avec un ensemble denoeuds, ou avec une chaine de caracteres, par exemple pourfaciliter sa r-utilisation plusieurs fois dans un mme stylesheet..</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>oui</p><p> ....</p></li><li><p> : numerotation</p><p>On peut generer une numrotation derive de la squence deslments dans l'arborescence XML...</p><p>...1 par rapport a l'lment parent:.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>...2 par rapport au document entier :.</p><p>.</p><p>. ..</p><p>.</p><p>.</p><p>...3 par rapport a un lment anctre spcifique:.</p><p>.</p><p>. ..</p><p>.</p><p>.</p></li><li><p> : faire un tri</p><p>Cet lment permet de trier un ensemble de noeuds resultant d'unlment ou ..</p><p>.</p><p>. ..</p><p>.</p><p>.</p></li><li><p>Sommaire</p><p>Maintenant vous savez comment...1 crer des templates...2 slctionner des morceaux de texte...3 ajouter des lments...4 dfinir des actions conditionnelles...5 numroter et trier les objets de sortie</p><p>On va exprimenter cela dans la deuxieme partie de l'exercice....</p></li><li><p>Pour en savoir plus</p><p>La formation de SPQR demain!</p><p>A http://www.gchagnon.fr/cours/xml/ vous trouverez deuxcours complets et trs clairs</p><p>Un texte classique: Philippe Rigaux et Bernd AmannComprendre XSLT. O'Reilly, 2002.</p><p>Beaucoup, beaucoup, d'autres ressources anglophones...</p><p>http://www.gchagnon.fr/cours/xml/</p></li></ul>