XPath 1 Xpath 1.0 XML Path Language recommandation W3C pour expressions de ch

XPath 1 Xpath 1.0 XML Path Language recommandation W3C pour expressions de chemins acceptée le 16 novembre 1999 version 1.0 et tout récemment la version 2.0 XPath permet de rechercher un élément dans un document d'adresser toute sous partie d'un document XPath 2 Xpath 1.0 - Parcours d'arbre XPath opère sur l'arbre d'un document <livre auteur = "Hugo"> <titre>Les chatiments</titre> <chapitre> <section>Buonaparte </section> <section>Neige</section> </chapitre> … </livre> racine section livre Bonaparte chapitre Neige chapitre section Les chatiments titre @auteur "Hugo" 3 XPath1.0 - Expression de chemins Une expression de chemins spécifie une traversée de l'arbre du document : depuis un nœud de départ vers un ensemble de nœuds cibles les cibles constituent la valeur du cheminement Un chemin peut être : absolu commence à la racine /étape1/…/étapeN relatif commence à un nœud courant étape1/…/étapeN 4 Syntaxe et sémantique Cheminement élémentaire direction::sélecteur [predicat] Directions parent, ancestor, ancestor-or-self child, descendant, descendant-or-self preceding, preceding-sibling, following, following- sibling self, attribute, namespace Sélecteur nom de nœud sélectionné (élément ou @attribut) Prédicat [Fonction(nœud) = valeur] XPath 5 Exemples de direction  Dans la figure, la direction (child, descendant, ancestor , …) est désignée en anglais. Le rectangle blanc correspond au point de départ. Les numéros correspondent à l’ordre de la réponse (le premier noeud…). Si nous prenons la direction child, on constate que le parcours correspond à la recherche des descendants d’un noeud de premier niveau (les fils). 6 XPath1.0 - Exemples Sections d'un chapitre /child::livre/child::chapitre/child::section (la forme non abrégée) /livre/chapitre/section (la forme abrégée) T exte du chapitre 1 section 2 /descendant::chapitre[position() = 1] /child::section[position() = 2]/child::text() //chapitre[1]/section[2]/text() XPath 7 Xpath1.0 - Synthèse Pattern Exemple Signification Nom section Sélectionne les éléments de nom donné Nom[0] section[0] Sélectionne le premier élément ayant le nom donné Nom[end()] section[end()] Sélectionne le dernier élément ayant un nom donné | Droite|Gauche Indique une alternative (un nœud OU bien l'autre (ou les deux)) / / Sélectionne le nœud racine d'une arborescence /arbre/Nom /livre/chapitre Sélectionne les nœuds descendants par la balise de nom donné de l'arbre * * Motif "joker" désignant n'importe quel élément // //personne Indique tous les descendants d'un nœud . . Caractérise le nœud courant .. .. Désigne le nœud parent. Permet de remonter d'un niveau dans l'arborescence @ @nom Indique un attribut caractéristique (@nom désigne la valeur de l'attribut). La notation @* désigne tous les attributs d'un élément text() text() Désigne le contenu d'un élément (le texte contenu entre ses balises) ID() ID('a2546') Sélectionne l'élément dont l'identifiant (la valeur de l'attribut ID) est celui spécifié en paramètre Comment() Comment() Désigne tous les nœuds commentaires Node() Node() Désigne tous les noeuds 8 Xpath 1.0 – Synthèse(fonctions applicables aux nœuds) fonction Rôle Exemple count(sélection) Donne le nombre d’élément correspondant à la sélection //cd [count(morceau)=10] name() Retourne le nom d’un élément //*[name()=‘titre’] id(identificateur) Retourne les elts dont l’identificateur est donné en argument //*[id(‘mach001’)] namespace-uri() Retourne l’adresse URI de l’espace de noms du noeud contextuel 9 XPath – Synthèse(fonctions applicables aux chaines de caractères) fonction role Exemple d’utilisation starts-with(string1, string2) Renvoie vrai si la première chaîne commence par la deuxième //*[starts- with(name(), ‘t’)] contains(string1, string2) Renvoie vrai si la première chaîne contient la deuxième //*[contains(name(), ‘t’)] string-length(string) Retourne la taille de la chaîne de caractère donnée en argument //*[stringlength( name()) > 5] 10 XSL eXtensible Style language 11 XSLT : Introduction Permet de transformer un document de XML à XML, De XML à présentation (HTML, texte, rtf, pdf, etc.) Un document est un arbre Le processeur XSL parcourt l'arbre et applique les règles de transformations vérifiées (à condition vraie) aux nœuds sélectionnés Un document est produit en sortie XSLT 12 XSLT: Introduction Les multiples cas de transformation – Formatage – Réutilisation de document – Adaptation aux appareils de présentation – Conversion de format, par exemple XML vers HTML,text,pdf,… La transformation est une étape inévitable pour l’utilisation du document 13 Publications avec XSL Plusieurs formats de publication pour un contenu XSL permet la présentation sur des terminaux variés XSL Processor XML Document Format ( Postcript) Format (XML) application e.Commerce format (WML) Browser (XHTML, DHTML, HTML) Format (XML) pour Word, Excel XSL Stylesheet 14 XSLT 1.0 XSL Transformation – XSLT 1.0 Novembre 1999 – Permet de transformer un document XML “générique” en un document XML “spécifique” – S’adapte au profil de l’utilisateur S’adapte à l’environnement: – T ype du navigateur, document multimédia, … Utilise XPath pour repérer et manipuler des portions de documents XML. 15 Principe de fonctionnement de XSLT 1.0 Convertir un arbre en un autre arbre; Une transformation XSLT consiste en une série de règles; La transformation se fait en associant des motifs (patterns) à des modèles (templates); Pattern: Contexte structural dans l'arbre source (Expression Xpath); Template: Un fragment du résultat à produire pour le pattern correspondant; Quand le pattern est reconnu dans le document source, le template correspondant est engendré dans le document résultat. 16 Les feuilles de style XSLT Une feuille de style XSL est un document XML de racine <xsl:stylesheet> contient une liste de règles de transformation <xsl:template> Chaque règle (<xsl:template>) précise: Une condition spécifiant le sous-arbre du document d’entrée auquel elle s’applique (match=) Une production spécifiant le résultat de l’application de la règle (contenu) Il s'agit de règles de production classiques If <condtition> then <production> Codées en XML avec espace de nom xsl: 17 Exemple de document <?xml version="1.0" ?> <Guide> <Restaurant Categorie="**"> <Nom>Le Romantique</Nom> <Adresse> <Ville>Cabourg</Ville> <Dept>Calvados</Dept> </Adresse> </Restaurant> <Restaurant Categorie="***"> <Nom>Les TroisGros</Nom> <Adresse> <Ville>Roanne</Ville> <Dept>Loire</Dept> </Adresse> </Restaurant> </Guide> XSLT 18 Exemple de feuille de style XSLT <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/xsl"> <xsl:template match="/"> <html><head><B>ESSAI XSL</B></head> <body> <xsl:apply-templates/></body></html> </xsl:template> <xsl:template match="Guide"> <H1>BONJOUR LE GROUPE XML</H1> <H2>SUIVEZ LE GUIDE</H2> <xsl:apply-templates /> </xsl:template> <xsl:template match="Restaurant"> <P> <I>Restaurant :</I> <xsl:value-of select="Nom"/></P> </xsl:template> </xsl:stylesheet> XSLT 19 Résumé des commandes <xsl:template>, définir une règle et son contexte <xsl:apply-templates />, appliquer les transformations aux enfants du nœud courant <xsl:value-of select … />, extrait la valeur d'un élément sélectionné à partir du nœud courant <xsl:for-each>, définir un traitement itératif <xsl:pi>, générer une processing instruction <xsl:element>, générer un élément <xsl:attribute>, générer un attribut <xsl:if>, définir un traitement conditionnel XSLT 20 Structure de XSLT T outes les instructions XSL appartiennent à l’espace de noms xsl: URI=http://www.w3.org/1999/XSL/Transform L’élément racine= xsl:stylesheet Un document XSLT a la forme suivante: <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform version="1.0"> ……… </xsl:stylesheet> N.B: Attribut version est obligatoire. Association entre XML et une feuille de style XSL <?xml-stylesheet type=“text/xsl” href=“URIxsl.xsl”?> 21 Instruction xsl:template Les composants les plus importants d’une XSLT sont les règles du modèle définies par des éléments xsl:template Chaque élément de ce type possède un attribut match qui permet de spécifier à quel noeud du document d’entrée le modèle doit être appliqué <xsl:template match=“expression XPath”>  Le contenu de l’élément xsl:template est le modèle qui doit être instancié. Le modèle peut contenir du texte qui apparaîtra, tel quel en sortie et/ou des instructions XSL qui permettront de transférer en sortie des données, depuis le document en entrée. 22 Instruction xsl:template Attributs match: condition de sélection des nœuds sur lesquels la règle s'applique (XPath) name: nom de la règle, pour invocation explicite (en conjonction avec <call-template>) mode: permet d'appliquer à un même élément des règles différentes en fonction du contexte priority: priorité, utilisé en cas de conflit entre deux règles ayant la même condition Exemples <xsl: template match="/"> <xsl: template match="auteur" name="R1" priority="1"> XSLT 23 Modèles XSLT Exemple <xsl:template match= "Titre"> <h1> XML pour les débutants </h1> </xsl:template> Source : <Titre>Introduction</Titre> Résultat : <h1> XML pour les débutants </h1> 24 Instruction xsl:apply templates Applique à l'intérieur d'un modèle défini avec xsl:template d'autres modèles qui sont le cas échéant définis avec xsl:template. De cette manière, les dépendances et l'ordre lors de l'emploi de modèles peuvent être contrôlés. xsl:apply-templates possède les attributs suivants : select=(facultatif) choisit un modèle qui doit être appliqué. Le jeu de nœuds désiré est mentionné ou bien un chemin d'après la syntaxe Xpath. Si l'attribut select manque, toutes les définitions xsl:template de l'échelon immédiatement inférieur sont appliquées. mode=(facultatif) Ne choisit le modèle mentionné avec select= que lorsqu'il a le mode mentionné. Pour cela il faut que lors de la définition de xsl:template un nom qui concorde ait été attribué pour le mode avec mode=. 25 Exemple de feuille de style XSL <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/xsl"> <xsl:template match="/"> <html><head><B>ESSAI XSL</B></head> <body> <xsl:apply-templates/></body></html> </xsl:template> <xsl:template match="Guide"> <H1>BONJOUR LE GROUPE XML</H1> <H2>SUIVEZ LE GUIDE</H2> <xsl:apply-templates /> </xsl:template> <xsl:template match="Restaurant"> <P> <I>Restaurant :</I> <xsl:value-of select="Nom"/></P> </xsl:template> </xsl:stylesheet> XSLT 26 Instruction xsl:value-of L’élément vide xsl:value-of permet de récupérer la valeur d’un nœud en entrée et de la renvoyer en sortie. <xsl:value-of select=“expression XPath”/>  L’attribut select permet de spécifier le nœud dont il faut récupérer la valeur. L’attribut select peut prendre comme valeur une expression XPath de sélection de noeuds 27 Exemple de feuille de style XSL <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/xsl"> <xsl:template match="/"> <html><head><B>ESSAI XSL</B></head> <body> <xsl:apply-templates/></body></html> </xsl:template> <xsl:template match="Guide"> <H1>BONJOUR LE GROUPE XML</H1> <H2>SUIVEZ LE GUIDE</H2> <xsl:apply-templates /> </xsl:template> <xsl:template match="Restaurant"> <P> <I>Restaurant :</I> <xsl:value-of select="Nom"/></P> </xsl:template> </xsl:stylesheet> XSLT 28 Instruction xsl:for-each Elle permet de traiter, tour à tour, chacun des éléments sélectionnés par son uploads/Litterature/ xslt.pdf

  • 27
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager