Domaines nominaux XSLT

Slides:



Advertisements
Présentations similaires
Données structurées et XML
Advertisements

XML.
FragmentsManuelle : XML Publication et Fragments La publication de canaux Processus de mise à disposition de nouveaux contenus extérieurs au portail :
1 3.Langage XSL = XSLT + XSL-FO transformationFormatage.
Transformation de documents XML
Xavier Blanc Web Services Xavier Blanc
DTD Sylvain Salvati
Cours MIAGE Henry Boccon-Gibod 1 XML, langage de structuration documentaire Langage de transformation et langage d'interrogation.
Les espaces de nommage XML par Philippe Poulard 1
XML schema Objectifs Valider un doc. XML pour des contraintes syntaxiques Documenter un type de documents XML caractérisé par des contraintes Encadrer.
Données structurées et XML
XHTML EXtensible HyperText Markup Language. HTML et XML HTML (HyperText Markup Language) et XML (eXtensible Markup Language) sont deux spécifications.
Cours 2 : Transformation de documents XML
Extensible Markup Language
le langage les éléments
Les fonctions de XPath et XSLT
Nicolas Singer Maître de conférence, université Champollion
version Beta Marie Calberg Ninni Louhelainen SLFN7
Programmation et projet encadré
Tutoriel XSLT F. Sajous ERSS – 01/04/2005.
Manipulation d’XML avec XSL
CREATION DE FEUILLE DE STYLE pour structuré le document XML
Adamou Mahamane Sidi Maman Bachir
XML eXtensible Markup Language
UNIVERSITE CHOUAIB DOUKKALI Département des mathématiques
Génération automatique du code d'un device UPnP Utilisation de l'utilitaire de Didier Donsez Présentation écrite par Michel DHooge.
Xml/xslt : Extensible Stylesheet Language Transformation réalisé par: saÏd NAÏM.
Bienvenue! Qui suis-je? Webmestre depuis 1994 Café Internet en 1996 Commerce électronique Gestion de contenu web Marketing interactif.
Web Structurel
Introduction à la structuration des documents: les techniques M2: Gestion des connaissances.
Notions sur le XML Réfs : manuel p 149. Introduction Le XML (eXtensible Markup Language) est un standard d'échange de données. Il fait partie comme le.
Xpath XML Path language par Yves Bekkers
XSLT Langage de transformation darbre par Yves Bekkers.
XML : concours d’acronymes ou futur standard ?
Rappel (très) succint d’éléments techniques (XML, DTD, XSL, PHP)
STAF 2X XSL/FO Glaus & Ruckstuhl Mars © Glaus & Ruckstuhl TECFA Programme du 18 et 19 mars Revision XML Introduction à XSL/FO (intérêts et.
M. Larooussi Formatage de documents - CSS École dété INSAT Août 2006.
XSLT : trier et mettre en valeur le contenu d’un document XML
1 Couplage dun langage de contrôle de formatage avec un système de formatage existant DEA ISC : 1 avril 2003 Fateh Boulmaiz
Support des connaissances TP2 XSL-T
XML Plan du cours Introduction au fichier XML
Les feuilles de style CSS
8 - XML Cours XML.
Le Langage XML Belkhir Abdelkader Laboratoire LSI USTHB
1 Programmation Web II 2 ème année Licence Appliquée IAG Faculté des Sciences Economiques et de Gestion de Nableul Université 7 novembre à Carthage Années.
Les outils de base : XPath, XSL, XLink, XForms
XSL eXtensible Stylesheet Language Historique 1999: XSLT 1.0 et XPATH 1.0 : versions supportées par la plupart des outils depuis février 2007 XSLT 2.0.
Le langage XML.
XPath XML Path UP Web Année universitaire
XML Stylesheet Language
Programmation Web : Introduction à XML
Programmation Web : Schémas XSD Jérôme CUTRONA 19:27:07 Programmation Web
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
Publication et Traitement avec XSL
Initiation à XML Antonin Benoît DIOUF eXtensible Markup Language.
SMIL Synchronized Multimedia Integration Language
MJ. Blin et M. CsernelPoleInfo31 XML et ses environnements Documents XML bien formés Prologue Arbre d'éléments Attributs Commentaires Entités internes.
 G. Gardarin Les outils de base: Publication avec XML 1. XPATH 2. XSLT 3. XSLFO 4. XLink, XForms, RSS, … 5. XML et la bureautique.
Soutenance du mémoire de synthèse
Module : Langage XML (21h)
Modélisation des documents: DTD et Schéma
Page 1 © Expert-IT s.a. - Développer des projets en XML Pratique.
eXtensible Markup Language. Généralités sur le XML.
Introduction à MathML Par Katia Larrivée UQO Le 18 mars 2004.
Projet XML Contrôle des véhicules Par R.Khounsamnane &J.Socié.
1 Présentation de DREAMWEAVER (1) Gaël TREMEAU GI05 Printemps 2006.
FORMULAIRES FOMULAIRE Permet à l’utilisateur d’entrer des renseignements le concernant. Utilisation –Inscription sur un site –Mise à jour d’une base.
XML les données réellement portables La nécessité d’un format de données universel et lisible se faisait sentir depuis longtemps, aujourd’hui avec le développement.
XSLT. Les documents XML peuvent avoir dans leur prologue une instruction de traitement xml-stylesheet. Cette instruction de traitement indique au navigateur.
Extensions à la spécification XML Le "plus petit cercle" XML Yves Bekkers Mise à jour : 9 octobre 2003.
Transcription de la présentation:

Domaines nominaux XSLT Nicolas Singer Maître de conférence, université Champollion

Domaines nominaux ? Un document peut contenir des balises issues de plusieurs DTD différentes Un document peut être composé de fragments de plusieurs documents Se pose alors le problème de l’unicité du nom de la balise

Exemple de problème avec les noms <!DOCTYPE article [ <!ENTITY % math SYSTEM ‘math.dtd’> <!ENTITY % texte SYSTEM ‘texte.dtd’> %math; %texte; ]> <article> <!–- Ce fn vient de la DTD math.dtd --> <fn> <nom> f </nom> <arg> x </arg> <res> x * x </res> </fn> <!–- Ce fn vient de la DTD texte.dtd --> <fn> Un commentaire de bas de page </fn> </article> On utilise deux DTD, une pour définir des fonctions mathématique (math.dtd), l’autre pour des éléments de mise en page textuels (texte.dtd) L’élément fn est utilisé par les deux DTD, il y a donc conflit

Exemple de problème avec les noms <article> <!–- Ce fn défini une fonction mathématique --> <fn> <nom> f </nom> <arg> x </arg> <res> x * x </res> </fn> <!–- Ce fn défini une note de bas de page --> <fn> Un commentaire de bas de page </fn> </article> Le problème se pose aussi sans DTD (ici le document a été constitué en copiant-collant la fonction mathématique dans le document initial. Si une feuille de style doit mettre en forme les notes de bas de page, elle agira aussi sur la fonction mathématique.

Principe des domaines nominaux Une ressource est identifiée de façon unique par un URI Ce peut être un URL (http://www.w3.org....) Ce peut être un FPI (identificateur public de la forme fpi:-/INRIA//DTD//FR Une DTD est identifiée par un URI Pour garantir l'unicité d'un nom de balise on préfixe ce nom par l'URI de sa DTD avec un ':' séparateur Ex: <http://www.w3.org/TR/mathML.html:fn>

Résolution du problème version 1 <!DOCTYPE article [ <!ENTITY % math SYSTEM ‘math.dtd’> <!ENTITY % texte SYSTEM ‘texte.dtd’> %math; %texte; ]> <article> <!–- Ce fn vient de la DTD math.dtd --> <http://www.w3c.org/MathML.html:fn> < http://www.w3c.org/MathML.html:nom> f </http://www.w3c.org/MathML.html:nom> < http://www.w3c.org/MathML.html:arg> x </http://www.w3c.org/MathML.html:arg> < http://www.w3c.org/MathML.html:res> x * x </http://www.w3c.org/MathML.html:res> </http://www.w3c.org/MathML.html:fn> <!–- Ce fn vient de la DTD texte.dtd --> <http://www.w3c.org/BasicText.html:fn> Un commentaire de bas de page </http://www.w3c.org/BasicText.html:fn> </article> Plus de conflits grâce au préfixe Inconvénient : Notation très lourde

Associer un URI à un préfixe court Pour alléger la notation on peut associer à un URI un mot qui sera utilisé à sa place dans le reste du document Cet association se fait dans l'élément racine du document en y ajoutant l'attribut xmlns:nomcourt = "URI" Où nom court est l'abbrévation sur l'on souhaite donner à l'URI.

Résolution du problème version 2 <!DOCTYPE article [ <!ENTITY % math SYSTEM ‘math.dtd’> <!ENTITY % texte SYSTEM ‘texte.dtd’> %math; %texte; ]> <article xmlns:math="http://www.w3c.org/MathML.html" xmlns:texte="http://www.w3c.org/BasicText.html" > <!–- Ce fn vient de la DTD math.dtd --> <math:fn> <math:nom> f </math:nom> <math:arg> x </math:arg> <math:res> x * x </math:res> </math:fn> <!–- Ce fn vient de la DTD texte.dtd --> <text:fn> Un commentaire de bas de page </text:fn> </article>

On peut déclarer un domaine par défaut Un domaine par défaut s'applique à tous les éléments descendants de l'élément dans lequel il est déclaré Il se déclare en ne faisant pas figurer de nom après l'attribut xmlns

Résolution du problème version 3 <!DOCTYPE article [ <!ENTITY % math SYSTEM ‘math.dtd’> <!ENTITY % texte SYSTEM ‘texte.dtd’> %math; %texte; ]> <article xmlns="http://www.w3c.org/MathML.html" xmlns:text="http://www.w3c.org/BasicText.html" > <!–- Ce fn vient de la DTD math.dtd (domaine par défaut) --> <fn> <nom> f </nom> <arg> x </arg> <res> x * x </res> </fn> <!–- Ce fn vient de la DTD texte.dtd --> <text:fn> Un commentaire de bas de page </text:fn> </article>

XSLT ? Extensible Stylesheet Language : Pour transformer un document XML en un document dans un autre format Pour formatter un document

XSLT ? Composé de deux langages : XSLT : langage de transformation de documents XSL-FO: langage de formatage de documents avec utilisation de XPath en complément

Principe de XSL Fichiers XSL XML Processeur XSL WML RDF HTML PDF … Navigateur Téléphone WAP Traitement de textes Imprimante

Structure d'un document XSL Un document XSL est un document au format XML dont la racine est xsl:stylesheet XSL est un langage de programmation Référence à un espace de noms pour XSL xmlns:xsl=http://www.w3.org/1999/XSL/Transform Référence à un espace de noms pour le langage cible exemple: XHTML xmlns="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"

Structure d'un document XSL Un programme XSL est composé d'un ensemble de règles Règle : condition  action <xsl:template match="sélecteur"> action </xsl:template> Le sélecteur est un chemin XPath qui sélectionne les nœuds sur lesquels doivent s'appliquer la transformation définie par action La partie action peut comporter du texte (qui sera écrit dans le document de sortie) et aussi des commandes

La commande xsl:value-of <xsl:value-of select="expression XPath" /> Cette commande signifie "insère ici le résultat de l'évaluation de l'expression spécifiée dans le select". <xls:apply-template select="expression XPath" /> Cette commande signifie "appliquer récursivement aux fils du nœud courant sélectionnés par l'expression XPath, toutes les règles possibles"

La commande xsl:value-of Soit le fichier XML suivant : <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet href="test.xsl" type="text/xsl" ?> <biblio> <livre tomes="3"> <titre> Les Misérables </titre> <auteur> Victor Hugo </auteur> </livre> </biblio>

La commande xsl:value-of Et le fichier XSL (test.xsl) suivant : <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/biblio"> <html><head></head><body> <b> <xsl:value-of select="livre/titre" /> </b> par <i> <xsl:value-of select="livre/auteur" /> </i> Ce livre comporte <xsl:value-of select="livre/@tomes" /> tômes. </body></html> </xsl:template> </xsl:stylesheet>

La commande xsl:value-of Le fichier produit est : <html><head></head><body> <b> Les misérables </b> par <i> Victor Hugo </i> Ce livre comporte 3 tômes </body></html>

La commande xsl:apply-template Si le fichier XML est à présent (plusieurs livres au lieu d'un seul) : <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet href="test.xsl" type="text/xsl" ?> <biblio> <livre tomes="3"> <titre> Les Misérables </titre> <auteur> Victor Hugo </auteur> </livre> <livre tomes="1"> <titre> Candide </titre> <auteur> Voltaire </auteur> </biblio>

La commande xsl:apply-template Il n'est pas envisageable d'utiliser un xsl:value-of pour chacun des libres Cela demanderait de connaître le nombre de libre présent dans le document XML On utilise donc une approche récursive On crée une règle qui s'occupe d'un livre et on appelle cette règle pour tous les livres présents au moyen de : <xls:apply-template select="expression XPath" /> Cette commande signifie "appliquer récursivement aux fils du nœud courant sélectionnés par l'expression XPath, toutes les règles possibles"

La commande xsl:apply-template Le fichier XSL devient : <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/biblio"> <html><head></head><body> <xsl:apply-templates select="livre"/> </body></html> </xsl:template> <-- règle s'occupant d'un livre --> <xsl:template match="livre"> <br /> Le livre <xsl:value-of select="titre" /> a été écrit par <xsl:value-of select="auteur" /> et comporte <xsl:value-of select="@tomes" /> tômes. </xsl:stylesheet

Un exemple pour illustrer XSL Le fichier produit est : <html><head></head><body> <br /> Le livre Les misérables a été écrit par Victor Hugo et comporte 3 tomes. <br /> Le livre Candide a été écrit par Voltaire et comporte 1 tomes. </body></html>

Un exemple plus complet Si on modifie le fichier XSL par : <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/biblio"> <html><head></head><body> <h2>Auteurs référencés</h2> <ul> <xsl:apply-templates select="//auteur" /> </ul> <h2>Livres référencés</h2> <ul> <xsl:apply-templates select="//titre" /> </ul> <h2>Description par livre </h2> <xsl:apply-templates select="livre" /> </body></html> </xsl:template> <xsl:template match="livre"> <br /> Le livre <xsl:value-of select="titre" /> a été écrit par <xsl:value-of select="auteur" /> et comporte <xsl:value-of select="@tomes" /> tômes. <-- règle s'occupant d'un auteur --> <xsl:template match="auteur"> <li> <xsl:value-of select="." /> </li> <-- règle s'occupant d'un titre de livre --> <xsl:template match="titre"> </xsl:stylesheet

Un exemple pour illustrer XSL Le fichier produit est : <html><head></head><body> <h2> Auteurs référencés</h2> <ul> <li> Victor Hugo </li> <li> Voltaire </li> </ul> <h2> Livres référencés</h2> <ul> <li> Les misérables </li> <li> Candide </li> </ul> <h2> Description par livre </h2> <br /> Le livre Les misérables a été écrit par Victor Hugo et comporte 3 tomes. <br /> Le livre Candide a été écrit par Voltaire et comporte 1 tomes. </body></html>

Un exemple pour illustrer XSL Ce qui donne graphiquement :