Exemple: Document XML. XPath et XSLT. Exemple: Transformation en HTML. Sélectionner des fragments XML. Document XML:

Documents pareils
XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Production de documents avec XSLT. Production de documents p.1/??

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

<?xml version="1.0" encoding="iso " standalone="yes"?>

Master d Informatique Corrigé du partiel novembre 2010

PIVOT. Pivot/Querier Documentation technique XML/XSD/XSLT

Document Object Model (DOM)

Programmation Web. Madalina Croitoru IUT Montpellier

Introduction aux concepts d ez Publish

Bernard Lecomte. Débuter avec HTML

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

BASE DE DONNÉES XML NATIVE

Les outils de création de sites web

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

Les services usuels de l Internet

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

HTML. Notions générales

Devenez un véritable développeur web en 3 mois!

Design et implémentation d un logiciel de validation et de génération de configurations réseaux

Formation HTML / CSS. ar dionoea

CREATION d UN SITE WEB (INTRODUCTION)

Chapitre 10 Arithmétique réelle

Server-side XML. PAS FINI... mais ok pour un début. Originaux. Auteurs et version. Prérequis: Java de base, servlets, GUI et XML

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

Annexe C Spécification pour les fichiers importés en format XML

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Évaluation et optimisation de requêtes

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

FTP : File TRansfer Protocol => permets d envoyer des gros fichiers sur un serveur (ou de télécharger depuis le serveur)

Intégrateur Web HTML5 CSS3

JavaServer Pages (JSP)

BASE DE DONNÉES XML NATIVE

SQL Parser XML Xquery : Approche de détection des injections SQL

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

Module : programmation site Web dynamique Naviguer entre les pages via site map

Cours de bases de données. Philippe Rigaux

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

L'API DOM : Document Object Model

Couches 4 à 7 : Traitement des données

COMMUNICATION TECHNIQUE N TCV060 Ed. 01. OmniVista 4760 Nb de pages : 18 Date : URGENTE NON URGENTE TEMPORAIRE DEFINITIVE

Accès à l'information XML par des requêtes XQuery au travers de son XSchema

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Rappel sur les bases de données

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Projet en nouvelles technologies de l information et de la communication

SECTION 5 BANQUE DE PROJETS

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Programmation Internet Cours 4

données en connaissance et en actions?

Logiciel de Base. I. Représentation des nombres

OpenText StreamServe Cours Customer Communication Management L essentiel

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Introduction à MATLAB R

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

SYSTÈMES D INFORMATIONS

Autour du web. Une introduction technique Première partie : HTML. Georges-André SILBER Centre de recherche en informatique MINES ParisTech

TP 1. Prise en main du langage Python

Le Web de Données Dan VODISLAV Université de Cergy-Pontoise Master Informatique M2 Plan

Crawl intelligent et adaptatif d applications Web pour l archivage du Web. 24 mai 2014

L exclusion mutuelle distribuée

SP1 : Intégration d'une vidéo dans une mardi 21/01/2014. page web, fonction du format vidéo et 3 mercredi 22/01/2014

Hébergement de site web Damien Nouvel

Intelligence Artificielle Planification

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Approche Contract First

Publication dans le Back Office

Gestion Électronique de Documents et XML. Master 2 TSM

Université de Bangui. Modélisons en UML

HTML, CSS, JS et CGI. Elanore Elessar Dimar

4. SERVICES WEB REST 46

Introduction à la Programmation Parallèle: MPI

les techniques d'extraction, les formulaires et intégration dans un site WEB

! Text Encoding Initiative

Nouveautés CRM 2015 & Migration. By Tanguy Touzard MVP CRM

Pack Fifty+ Normes Techniques 2013

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Module BD et sites WEB

Présentation du langage et premières fonctions

Évaluation et implémentation des langages

IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Les Bases. Messaoudi Khaled, Boukelal Hanane (Etudiants Informatique ) 2015.

Ecrire pour le web. Rédiger : simple, concis, structuré. Faire (plus) court. L essentiel d abord. Alléger le style. Varier les types de contenus

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

1 ère Université WEB. Courbevoie Samedi 21 octobre Votre site interactif sur internet.

Attaques de type. Brandon Petty

FileMaker Server 12. publication Web personnalisée avec XML

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Bases de programmation. Cours 5. Structurer les données

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

Transcription:

1 3 Exemple: ocument XML XPath et XSLT Valeur Module onnées et Services sur le Web ernd mann 2003/04 ocument XML: / FILM TITRE UTEUR NNEE RESUME Vertigo Hitchcock 1958 Scotty... 2 4 Sélectionner des fragments XML Exemple: Transformation en HTML Il faut souvent pouvoir sélectionner/extraire des fragments (nœuds) d un document XML XPath. Fragment HTML qu on veut obtenir : p XPath est utilisé par XSLT pour sélectionner des règles de transformation h1 i p h3 XQuery pour l interrogation de documents XML XML Schéma pour définir des clés/références i 1958 Hitchcock Résumé: Scotty... XLink pour créer des liens entre noeuds XML Vertigo

5 7 Exemple : Règle de transformation XSLT Exemple : l arbre OM... / FILM ocument TITRE UTEUR NNEE RESUME Vertigo Hitchcock 1958 Scotty... EXEMPLE * i h1 * i * p Résumé: * h3 Section littérale avec SectionT des &, des des et un text p 6 8 XPath: Le modèle Puis l arbre XPath... ocument Le langage XPath permet de désigner un ou plusieurs nœuds dans un document XML, à l aide d expressions de chemins/d arbres. XPath est fondé sur une représentation arborescente (OM) du document XML EXEMPLE Objectif : référencer nœuds (éléments, attributs, commentaires,...) dans un document XML Un typage simplifié par rapport à celui de OM d entités, pas de sections littérales pas Section littérale avec des &, des des et un texte

/ %& '% /étape. $ # 45 0 $ 1 2 1$ / 3 $ 0 $ 1 0 $ 1 76 5 2 1$ / 3 $ )( 0 $ 1 45 76 5! " $# 9 11 Expressions XPath : Sémantique Une expression XPath : Étapes XPath Une étape a trois types de composants : s évalue en fonction d un nœud contexte... désigne un ou plusieurs chemins dans l arbre à partir du nœud contexte a pour résultat un ensemble de nœuds ou une valeur, numérique, booléenne ou alphanumérique Exemple : :: [ ()+* L axe (optionnel) recouvre les deux notions suivantes : un sousensemble des nœuds de l arbre relatif au nœud contexte ;,] l ordre de parcours de ces nœuds Le filtre (obligatoire) définit le type des nœuds/noms des éléments qui seront retenus Le(s) prédicat(s) (optionnels) doivent être satisfaites par les nœuds retenus. 10 12 Expressions XPath : Syntaxe ocument XML avec un nœud contexte Un chemin XPath est une suite d étapes : ocument [/]étape /.../étape eux variantes : Un chemin peut être omment ommfin absolu : Le nœud contexte est la racine du document. relatif : Le nœud contexte est un nœud dans le document (pas forcément la racine). e1 e2 e3

13 child:: ou parent:: ocument ocument omment ommfin omment ommfin Nœud contexte Nœud contexte e1 e2 e3 e1 e2 e3 14 16 attribute:: ou @ descendant::node() ocument ocument omment ommfin omment ommfin Nœud contexte Nœud contexte e1 e2 e3 e1 e2 e3

17 19 ancestor::node() following::node() ocument ocument omment ommfin omment ommfin Nœud contexte Nœud contexte e1 e2 e3 e1 e2 e3 18 20 precedingsibling::node() utres axes et axe/étape par défaut ocument utres axes: preceding : les précédents (dans l ordre du document) omment ommfin descendantorself : les descendants, plus le nœud contexte Nœud contexte ancestororself : les ancêtres, plus le nœud contexte L axe par défaut est child : / correspond à /child:: L étape par défaut est descendantorself::node() : // exprime child::/descendantorself::node()/child:: e1 e2 e3

21 23 Filtres eux manières de filtrer les nœuds : //@ ocument par leur nom : possible pour les types de nœuds :, Processing et (qui ont un nom) par leur type OM : omment ommfin * : nœuds de type ou ibute text() : nœuds de type comment() : nœuds de type omment processinginstruction() : nœuds de type Processing Exemple : /processinginstruction(), ou /processinginstruction( java ) node() recouvre tous les types de nœud e1 e2 e3 22 24 /// Nom générique : //* ocument ocument omment ommfin omment ommfin e1 e2 e3 e1 e2 e3

25 27 /descendant::text() Notation abrégée de parent::node() ocument omment ommfin La notation abrégée.. désigne le père du nœud contexte, quel que soit son type. L expression.. est équivalent à parent::node() (le filtre node() désigne tous les types de nœuds sauf les attributs). L expression. désigne le nœud contexte luimême (surtout utile dans les prédicats). e1 e2 e3 26 28 /comment() Prédicats ocument omment ommfin Prédicat : expression booléenne constituée d un ou plusieurs tests, composés avec les connecteurs logiques habituels and et or Test : toute expression XPath, dont le résultat est convertie en booléen; une comparaison, un appel de fonction. il faut connaître les règles de conversion e1 e2 e3

29 31 Pour bien comprendre ans l expression //[@] : On s intéresse aux nœuds de type fils de l élément racine. Parmi ces nœuds on ne prend que ceux pour lesquels le prédicat [@] s évalue à true ette expression s évalue avec pour nœud contexte un élément [@] vaut true ssi @ renvoie un ensemble de nœuds non vide ontexte d évaluation Une étape s évalue en tenant compte d un contexte constitué de un nœud contexte, position initiale du chemin ; ce nœud fait luimême partie d un ensemble obtenu par évaluation de l étape précédente on connaît la taille de cet ensemble (fonction last()) on connaît la position du nœud contexte dans cet ensemble (fonction position()) 30 32 Quelques exemples ///descendant::text()[1] ocument //[@] : les nœuds // qui ont un attribut @ //[@= ] : les nœuds // qui ont un attribut @ valant omment ommfin ///descendant::text()[position()=1] : le premier nœud de type descendant d un //. ///descendant::text()[1] : idem e1 e2 e3

33 35 Les types XPath onversions de types On peut effectuer des comparaisons, des opérations. ela implique un typage et des conversions de type. Les types XPath sont : les numériques les chaînes de caractères les booléens (true et false) enfin les ensembles de nœuds eux conversions sont toujours possibles. Vers une chaîne de caractères. utile pour la production de texte en XSLT (balise xsl:valueof) Vers un booléen utile pour les tests effectués dans XSLT (xsl:if, xsl:when) 34 36 Numériques onversions booléennes Notation décimale habituelle omparaisons habituelles (<, >,!=) Opérations : +,, *, div, mod La fonction number() permet de tenter une conversion Si la conversion échoue on obtient NaN (Not a Number). À éviter... Ex : //node()[number(@) mod 2=1] Pour les numériques : 0 ou NaN sont false, tout le reste est true Pour les chaînes : une chaîne vide est false, tout le reste est true Pour les ensembles de nœuds : un ensemble vide est false, tout le reste est true

37 39 Les fonctions XPath et sélection par valeur Quelques fonctions utiles : concat(chaîne1, chaîne2,...) pour concaténer des chaînes contains(chaîne1, chaîne2) teste si chaîne1 contient chaîne2 count (expression) renvoie le nombre de nœuds désignés par expression name() renvoie le nom du nœud contexte not(expression) : négation Test du nombre d occurrences : INEM[count(SENE) > 1]: cinémas avec au moins 2 séances FILM[count(TEUR) = 0]: films sans acteur FILM[not(TEUR)]: films sans acteur Sélection par valeur: FILM[not(TEUR[NOM= Willis ])]: films sans ruce Willis FILM[TEUR/NOM= Willis ]: films avec ruce Willis FILM[TEUR[NOM= Willis ]]: idem 38 40 Prédicats: xes d avancements et inverses La position d un nœud dépend de l axe choisi: xes «d avancement» : child::*[3]: le 3e enfant child::*[position()=3]: idem child::*[last()]: le dernier enfant descendant::*[last()]: le dernier descendant xes «inverses» : ancestor::*[1]: le premier ancêtre du nœud contexte (dernier dans l ordre du document). Prédicats plus complexes Test sur la structure : chemins imbriqués avec connecteurs logiques (qualifiers) TEUR[NOM and TENISSNE] ou TEUR[NOM][TENISSNE]: les acteurs avec un nom et une date de naissance FILM[@TITRE = razil and TEUR/NOM = e Niro ]: le film razil avec l acteur e Niro FILM[@TITRE = razil ][TEUR/NOM = e Niro ]: idem precedingsibling::*[last()]: le dernier frère qui précède le nœud contexte (premier dans l ordre du document).

41 43 XPath : Résumé XPath est un langage pour extraire des noeuds dans un arbre XML : On navigue dans l arbre grâce à des axes de navigation. Un chemin de navigation est une séquence d étapes. Sommaire Une introduction à XSLT, destinée à comprendre les mécanismes du langage. Règles XSLT ésignation de fragments XML ans chaque étape on choisi un axe, un filtre et éventuellement des prédicats. Le résultat d une étape (d une séquence d étapes) est un séquence de noeuds. ppels de règles pplication : XML HTML et XML Passage de paramètres WML 42 44 XSLT, où, quand, comment»>logbook error: File FIGURES/rchiXSLT does not exist! Introduction à XSLT

45 47 Exemple : La fiche du film Gladiator Fonctions d un programme XSLT Transformation d arbres XML: La fiche du film peut être publiée en HTML pour Netscape/IE en WML pour le portables WP en SMIL pour Realplayer dans un moteur de recherche SallesEnLigne.com L information? extraction de données génération de texte suppression de contenu (noeuds) déplacer contenu (noeuds) dupliquer contenu (noeuds) trier c est la même, sous des formes différentes elle est échangée entre plusieurs acteurs 46 48 Qu estce qu on peut faire avec XSLT? Transformer un document XML en un ou plusieurs documents XML, HTML, WML, SMIL document papier: PF (XSLFO), LaTeX texte simple nalyse arbre OM ocument XML Processeur XSLT ocument XSLT Sérialisation arbre résultat ocument résultat Exemple: Règle de transformation XSLT utilise XPath pour sélectionner la règle à appliquer et les fragments à afficher ou transformer : <xsl:template match="film"> <p> <h1> <i> <xsl:valueof select="titre"/> </i> </p> <i> <xsl:valueof select="nnee"/> </i> <p> <xsl:valueof select="uteur"/> </p> <h3>résumé: <xsl:valueof select="resume"/> </h3> </p>

49 51 XSLT et XPath Fonctionnalités XSLT / Génération d un arbre XML: TITRE Vertigo UTEUR Hitchcock FILM NNEE 1958 RESUME Scotty... <xsl:template match="film"> <body> <p>un paragraphe</p> </body * i h1 * i p p * Résumé: * h3 Génération d arbre avec extraction : <xsl:template match="film"> <body> <p>titre: <xsl:valueof select="titre"/> </p> </body> 50 52 Extraction de données: Fonctionnalités XSLT <xsl:template match="film"> <xsl:valueof select="titre"/> Génération de texte: <xsl:template match="film"> eci est le texte produit par application de cette règle. Structure 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. Programme XSLT = ensemble de règles pour construire un résultat

53 55 hemins complexes Exemple de boucle: Traduction de Salle ans une règle, on peut : accéder aux fils, aux descendants, au parent, aux frères, aux neveux, aux attributs,... du noeud à transformer (XPath). effectuer des tests et des boucles, etc... appeler d autres règles (récursion) <xsl:template match="slle"> <h2>salle No <xsl:valueof select="@no"/></h2> Film: <xsl:valueof select="film/titre"/> de <xsl:valueof select="film/uteur"/> <ol> <xsl:foreach select="senes/sene"> <li><xsl:valueof select="."/></li> </xsl:foreach> </ol> 54 56 Exemple: ocument XML <?xml version="1.0" encoding="iso88591"?> <?xmlstylesheet href="salle.xsl" type="text/xsl"?> <?cocoonprocess type="xslt"?> <SLLE NO= 1 PLES= 320 > <FILM> <TITRE>lien</TITRE> <UTEUR>Ridley Scott</UTEUR> <NNEE>1979</NNEE> <GENRE>Sciencefiction</GENRE> <PYS>Etats Unis</PYS> <RESUME>Près d un vaisseau spatial échoué sur une lointaine planète, des Terriens en mission découvrent de bien étranges "oeufs". Ils en ramènent un à bord, ignorant qu ils viennent d introduire parmi eux un huitième passager particulièrement féroce et meurtrier. </RESUME> </FILM> <REMRQUE>Réservation conseillée</remrque> <SENES> <SENE>:00</SENE> <SENE>18:00</SENE> <SENE>21:00</SENE> </SENES> </SLLE> ppliqué à Salle1.xml : Le résultat <h2>salle No 1 </h2> Film: lien de Ridley Scott <ol> <li> :00</li> <li> 18:00</li> <li> 21:00</li> </ol> N : c est un fragment HTML, à intégrer dans un document complet.

57 59 Salles et séances Exemple : L Épée de bois chemin "@NO" chemin "FILM/TITRE" TITRE FILM NO=2 SLLE PLES=320 UTEUR NNEE GENRE PYS RESUME lien Scott Science Fiction 1979 US Près d un vaisseau spatial... ontexte d application de la règle chemin "REMRQUE" REMRQUE Réservation conseillée chemin SENES/SENE SENES boucle for each SENE SENE SENE :00 18:00 21:00 «adre» HTML, puis appel de la règle INEM <xsl:template match="/"> <html> <head><title>programme de <xsl:valueof select="inem/nom"/> </title> </head> <body bgcolor="white"> <xsl:applytemplates select="inem"/> </body> </html> 58 60 ppels de règles En général on produit un résultat en combinant plusieurs règles : La règle initiale s applique à la racine du document traité ( / ) On produit alors le cadre du document HTML On appelle d autres règles pour compléter la création du résultat Règle INEM Exploitation de l élément INEM, puis appel à la règle SLLE <xsl:template match="inem"> <h1><i> <xsl:valueof select="nom"/> </i></h1><hr/> <xsl:valueof select="resse"/>, <i>métro: </i> <xsl:valueof select="metro"/> <hr/> <xsl:applytemplates select="slle"/>

61 63 Vue d ensemble Le document XML head title Règle "/" html h1 i Epée de bois Règle "INEM" body hr adresse p p h2 h3 h2 h3 Salle No 1 Film: lien Salle No 2 Film : Vertigo Règle "SLLE" <?xml version="1.0" encoding="iso88591"?> <!OTYPE MOTEUR [ <!ENTITY Epeeeois SYSTEM "http://epeedebois.fr/e.xml"> <!ENTITY inemarseille SYSTEM "http://cinemarseille.fr/m.xml"> ]> <MOTEUR> <INEM> &Epeeeois; </INEM> <INEM> &inemarseille; </INEM> </MOTEUR> 62 64 XSLT avec paramètres Traitement des paramètres 1 <html> 2 <head> 3 <title>formulaire de Recherche</title> 4 </head> 5 <body bgcolor="white"> 6 <h1>formulaire de Recherche</h1> 7 <form method= get action= Moteur.xml 8 name= Form > 9 Film: <input type= text name= titre > <br> 10 Séance: <input type= text NME= seance > 11 (hh:mm)<br> 12 Ville: <input type= text name= ville ><br> 13 <input type= submit name= chercher 14 value="hercher"/> </form> 16 </body> 17 </html> <xsl:param name="titre"/> <xsl:param name="seance"/> <xsl:param name="ville"/> <xsl:template match="moteur"> <xsl:foreach select="inem"> <xsl:if test=" INEM//TITRE = $titre) and INEM//HEURE >= $seance) and INEM/VILLE = $ville)"> <xsl:applytemplates select="." /><p/> </xsl:if> </xsl:foreach> émo : SallesEnLigne.com

65 67 Principaux éléments de premier niveau Programmation XSLT Type d élément xsl:import xsl:include xsl:output xsl:param xsl:template xsl:variable escription Import d un programme XSLT Inclusion d un programme XSLT Indique le format de sortie éfinit un paramètre éfinit une règle XSLT éfinit une variable XSLT Table 1: 66 68 Éléments XSLT (espace de noms XSLT) Règles : définition et déclenchement Une règle est définie par l élément xsl:template. On distingue : L élement racine d un programme : <xsl:stylesheet>. Les éléments de premier niveau, fils de <xsl:stylesheet>. Il s agit essentiellement des règles (template) Les instructions : on les trouve dans le corps des règles. eux possibilités de définition (et de déclenchement) : L attribut match est un pattern XPath définissant les «cibles» de la règle Ex : xsl:template match= FILM déclenchement par xsl:applytemplates select=... L attribut name donne un nom à la règle Ex : xsl:template name= TM déclenchement par xsl:calltemplate name=...

4 69 71 Sélection des règles par leur pattern Problème : étant donné un nœud, comment trouver la règle qui s applique? Patterns : xes autorisés Seulement les axes suivants sont autorisés comme pattern de sélection : Les fils d un élément : child Soit le nœud Les attributs d un élément : attribute Soit le pattern de la règle S il existe quelque part un nœud tel que l évaluation de à partir de contient : la règle s applique L abréviation // de /descendantorself::node()/ ette restriction garantit qu on peut savoir si une règle doit être déclenchée pour un noeud uniquement en regardant les ancêtres de, ce qui diminue considérablement la compléxité du l algorithme de séléction. 70 72 Exemple : la règle pour la racine Exemples de patterns u départ du processus de transformation : Le nœudcontexte est la racine du document Il existe une règle 4dont le pattern est «/» en prenant n importe quel nœud, l évaluation de «/» est donc la règle s applique. Il est donc bon (mais pas indispensable) d avoir une règle avec pattern «/»., /OURS/ENSEIGNNTS : la règle s applique à tous les nœuds ENSEIGNNTS fils d un élément racine OURS //SENE[@I=2] ;... à tous les nœuds de type SENE ayant un attribut I valant 2 /descendant::film[1] :... au premier élément de type FILM dans le document FILM[1] :... aux premiers fils de type FILM (il peut y en avoir plusieurs!) /OURS[@OE="T234"] :... aux cours avec le code T234

73 75 Règles par défaut Règle par défaut pour les autres types de nœuds Quand aucune règle n est sélectionnée, XSLT applique des règles par défaut Première règle pour les éléments et la racine du document. <xsl:template match="* /"> <xsl:applytemplates/> Pour les instructions de traitement et les commentaires, on ne produit rien. <xsl:template match="processinginstruction() comment()"/> on demande l application de règles pour les fils du nœud courant. 74 76 Règle par défaut pour les noeuds texte et les attributs Par défaut, on insère dans le document résultat la valeur du nœud, ou de l attribut. <xsl:template match="text() @*"> <xsl:valueof select="."/> ela suppose (surtout pour les attributs) d avoir utilisé un xsl:applytemplates sélectionnant ces nœuds. onséquence Si on se contente des règles par défaut, on obtient la concaténation de nœuds de type. Programme minimal : 1 <?xml version="1.0" encoding="iso88591"?> 2 3 <xsl:stylesheet version="1.0" 4 xmlns:xsl="http://www.w3.org/1999/xsl/transform"> 5 </xsl:stylesheet> N : le programme n affiche pas les attributs (pourquoi?)

77 79 L instruction xsl:applytemplates Exemple : filtre de certains nœuds ibuts : select, mode et priority. select doit sélectionner un ensemble de nœuds. Ils constituent le contexte d évaluation pour chaque nœud on va chercher la règle à instancier. mode permet de choisir explicitement une des règles parmi celles qui sont candidates priority permet de définir une priorité pour que le processeur choisisse. 1 <?xml version="1.0" encoding="iso88591"?> 2 <FILM> 3 <TITRE>Vertigo</TITRE> 4 <NNEE>1958</NNEE><GENRE>rame</GENRE> 5 <MES>lfred Hitchcock</MES> 6 <RESUME>Scottie Ferguson, ancien inspecteur de 7 police, est sujet au vertige depuis qu il a vu 8 </RESUME> 9 </FILM> 10 <FILM> 11 <TITRE>lien</TITRE> 12 <NNEE>1979</NNEE><GENRE>Sciencefiction</GENRE> 13 <MES>Ridley Scott</MES> 14 <RESUME>Près d un vaisseau spatial échoué sur une lointaine planète, des Terriens en mission 16 </RESUME> 17 </FILM> 78 80 Sélection d une règle Le programme XSLT Que faire quand plusieurs règles sont candidates pour un même nœud? il existe des priorités implicites qui permettent au processeur de choisir on peut aussi donner explicitement une priorité si le choix est impossible : le processeur s arrête. Effacer les noeuds de type RESUME : <xsl:template match="resume"/> <xsl:template match="@* node()" priority="1"> <xsl:copy> <xsl:applytemplates select="@* node()"/> </xsl:copy>

81 83 Priorités implicites Exemple : création de liens HTML Intuition : plus c est «spécifique», plus c est prioritaire Priorité 0 : les patterns constitués d une seule étape XPath, avec un nom d élément ou d attribut et sans prédicat Priorité 0.5 les filtres autres qu un nom d élément ou d attribut ont une priorité égale à 0,5 ( node(), *) Tous les autres ont une priorité de 0.5 (prédicats, plusieurs étapes) On peut créer des ancres «internes» à un document. <a name= lien /> On peut ensuite créer un lien vers cette ancre <a href= #lien >Lien vers le film lien</> Objectif : une règles pour créer les liens, une autre pour créer les ancres. 82 84 Les modes Les deux règles Raison d être : un même nœud peut être traité plusieurs fois. Exemple : On parcourt tous les chapitres et sections pour produire une table des matières. On les parcourt à nouveau pour publier le contenu. onc il faut des règles différentes s appliquant aux même nœuds : on les distingue par le mode. 1 <xsl:template match="film" mode="ncres"> 2 <a href="#{titre}"> 3 <xsl:valueof select="titre"/> 4 </a> 5 6 7 <xsl:template match="film"> 8 <a name="{titre}"/> 9 <h1><xsl:valueof select="titre"/></h1> 10 <b><xsl:valueof select="titre"/>,</b> 11 <xsl:valueof select="genre"/> 12 <br/> 13 <b>réalisateur</b> : 14 <xsl:valueof select="mes"/>

85 87 L appel des règles Jointures intradocument eux types d éléments : Résultat 1 <xsl:template match="films"> 2 <html> 3 <head><title>liste des films</title></head> 4 <body bgcolor="white"> 5 6 <xsl:applytemplates select="film" 7 mode ="ncres"/> 8 9 <xsl:applytemplates select="film"/> 10 </body> 11 </html> 12 86 FILM avec un attribut @MES (référence vers le metteur en scène) RTISTE avec un attribut @RTI (identificateur) <xsl:template match="film"> Titre: <xsl:valueof select="titre"/> Metteur en scène: <xsl:valueof select="//rtiste [@RTI=current()/@MES]/NOM"/> </li> Pourquoi on a besoin de la fonction current()? 88 Résumé : sélection d une règle Jointures interdocument eux documents : Soit un xsl:applytemplates, et un des nœud sélectionnés. On ne prend que les règles avec le même mode que xsl:applytemplates On teste le pattern pour savoir si le nœud satisfait la règle. On prend celle qui a la plus grande priorité. Films.xml : FILM avec un attribut @MES (référence vers le metteur en scène) rtistes.xml : RTISTE avec un attribut @RTI (identificateur) <xsl:template match="film"> Titre: <xsl:valueof select="titre"/> Metteur en scène: <xsl:valueof select="document( rtistes.xml )//RTISTE [@RTI=current()/@MES]/NOM"/> </li>

89 onclusion sur XSLT Un langage totalement adapté au traitement de documents XML Parcours d un document, vu comme un arbre éclenchement de règles sur certains nœuds ssociation de plusieurs programmes à un même document 90 ibliographie sur XSLT 1. Recommendation XSLT sur le site du W3 2.. mann et P. Rigaux, omprendre XSLT, O Reilly http://cortes.cnam.fr:8080/xslt 3. P. Wadler, formal semantics of patterns in XSLT