Publication et Traitement avec XSL

Slides:



Advertisements
Présentations similaires
Introduction aux Web Services Partie 1. Technologies XML
Advertisements

1 3.Langage XSL = XSLT + XSL-FO transformationFormatage.
Transformation de documents XML
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
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
Xpath XPath is a language for finding information in an XML document.
le langage les éléments
Les fonctions de XPath et XSLT
Domaines nominaux XSLT
version Beta Marie Calberg Ninni Louhelainen SLFN7
Programmation et projet encadré
Tutoriel XSLT F. Sajous ERSS – 01/04/2005.
TP 3-4 BD21.
Manipulation d’XML avec XSL
CREATION DE FEUILLE DE STYLE pour structuré le document XML
XSL-FO THEORIE PRATIQUE.
Enregistrement d’un document
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.
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.
Une chaîne éditoriale développée dans le cadre du CIRM François Dagorn Journées pédagogiques de lIFSIC.
Xpath XML Path language par Yves Bekkers
XSLT Langage de transformation darbre par Yves Bekkers.
XML : concours d’acronymes ou futur standard ?
HTML / CSS Gestion des systèmes d’information Classe terminale
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
XSLT : trier et mettre en valeur le contenu d’un document XML
Support des connaissances TP2 XSL-T
31 octobre 2012 Grégory Petit
XML Plan du cours Introduction au fichier XML
Les feuilles de style CSS
Données sous XML Stéphane Marchand-Maillet Groupe Viper Vision par Ordinateur et Multimédia CUI – Université de Genève
8 - XML Cours XML.
Le Langage XML Belkhir Abdelkader Laboratoire LSI USTHB
PHP & My SQL.
Le langage XHTML 420-S4W-GG Programmation Web Client
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.
Produire, traiter et exploiter des documents numériques Documents
LE HTML ISN Terminale S Un peu d’histoire …
XML Stylesheet Language
Lancement de Microsoft Word
Programmation Web : Introduction à XML
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
Bien présenter des documents longs…
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.
IUT SRC Année 2004/2005Antonio Capobianco 1 HTML>Formater du texte>Les titres Définir les titres HTML distingue 6 niveaux de titre : Titre N°1 Titre N°2.
 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)
Introduction à CSS Généralités. Introduction Beaucoup de documents XML sont destinés à être présentés. Les information du fichier seul (avec ou sans DTD)
Page 1 © Expert-IT s.a. - Développer des projets en XML Pratique.
Introduction à SVG Scalable Vector Graphic. Informations ● Plus d'informations ici (draft, tutoriaux, outils... ): –
Contribution CMS.Eolas
Deug 11 Systèmes d ’Information, cours 3b Michel de Rougemont Université Paris II Styles et édition.
Dreamweaver Séance 1.
1 Présentation de DREAMWEAVER (1) Gaël TREMEAU GI05 Printemps 2006.
Présentation de Dreamveawer
Bloc 1 - UE 5 - Technologies de l’information et de la communication TIC Bachelier en immobilier T. SOUMAGNE.
Guillaume MICHAUD – Yvan LECOMTE
SI28 Malépart Céline Jérémy Palmier
DREAMWEAVER SEANCE 1 Axel JACQUET GM05 – Julien VAN MOORLEGHEM GM05 A2008 Écriture interactive & multimédia Présentation Dreamweaver 8.
On va découvrir la magie de ....
Introduction au HTML Qu’est ce que le HTML ?
XSLT. Les documents XML peuvent avoir dans leur prologue une instruction de traitement xml-stylesheet. Cette instruction de traitement indique au navigateur.
1 er séance SI28 A2004 YIN Lei Emmanuel Eugene. Plan de l’exposé  Introduction au HTML  Le HTML dans le bloc-notes (notepad)  Présentation de Dreamweaver.
Transcription de la présentation:

Publication et Traitement avec XSL 1. XPATH 2. XSLT 3. XSLFO 4. Traitement de documents 5. Conclusion Essai

1. XPath : l'adressage XML XPath Expressions de chemins dans un arbre XML Permet de sélectionner des nœuds par navigation Document XML ? XPath Essai

XPath XML Path Language Expressions de chemins communes à : recommandation W3C pour expressions de chemins acceptée le 16 novembre 1999 version 2 en cours d'élaboration Expressions de chemins communes à : XSL Xpointer (liens) XQuery (queries) Xpath permet de rechercher un élément dans un document d'adresser toute sous partie d'un document XPath Essai

XPath - Parcours d'arbre XPath opère sur l'arbre d'un document racine <livre auteur = "Hugo"> <titre>Les chatiments</titre> <chapitre> <section>Buonaparte </section> <section>Neige</section> </chapitre> … </livre> livre @auteur chapitre chapitre "Hugo" titre section section Les chatiments Bonaparte Neige XPath Essai

XPath - 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 XPath Essai

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 Essai

XPath - Exemples Sections d'un chapitre Texte du chapitre 1 section 2 /child::livre/child::chapitre/child::section /livre/chapitre/section Texte du chapitre 1 section 2 /descendant::chapitre[position() = 1] /child::section[position() = 2]/child::text() //chapitre[1]/section[2]/text() XPath Essai

XPath - Synthèse XPath Essai

2. XSLT : la présentation Permet de transformer un document régulier ou irrégulier de XML à XML, XHTML est un cas particulier 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 Essai

Format (XML) pour Word, Excel Publications avec XSL Plusieurs formats de publication pour un contenu XSL permet la présentation sur des terminaux variés Format ( Postcript) XML Document Browser (XHTML, DHTML, HTML) XSL Processor Format (XML) pour Word, Excel XSL Stylesheet Format (XML) application e.Commerce format (WML) XSLT Essai

Architectures HTML XML Affichage S E R V E U R Programme XML HTML ASP ou JSP S E R V E U R Programme XML HTML Processeur XSL Affichage Fichier XML XML Affichage Traitement Processeur XSL Base de données XSLT Essai

Les feuilles de style 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: XSLT Essai

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> <Ville>Roanne</Ville>   <Dept>Loire</Dept>   </Adresse> </Guide>   XSLT Essai

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 match="Restaurant"> <P> <I>Restaurant :</I>   <xsl:value-of select="Nom"/></P>  </xsl:template>  </xsl:stylesheet> XSLT Essai

Les règles de production Définition des règles par <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 Essai

La génération du résultat Le contenu de l'élément <xsl:template> est la production de la règle: Les éléments du namespace xsl sont des instructions qui copient des données du document source dans le résultat Les autres éléments sont inclus tels quels dans le résultat Instructions pour: Parcourir l'arbre du document source Copier le contenu du document source dans le résultat Parcours de l'arbre: <xsl:apply-templates>, <xsl:for-each> Copie du contenu du nœud sélectionné: <xsl:value-of select= … > XSLT Essai

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 Essai

Processeurs XSLT Processeurs XSLT conformes à la spécification: Apache Group (www.apache.org): Xalan Oracle XDK (www.oracle.com): XML Parser/ XSL Proc. MSXML .NET James Clark (www.jclark.com): XT Saxon libXML, libXSLT (Unix C) Browser Microsoft MSXML et IE 5 ou plus Netscape supporte XSLT depuis la V6 Firefox Mozilla Editeur et debugger Style Vision de Altova Oxygen de Synchro Stylus Studio de Data Direct CookTop et Tidy (gratuit) XSLT Essai

Quelques éditeurs XSLT Essai

IBM XSL Editor XML XSLT Rendu XSLT Essai

Bilan XSLT XSLT est un langage très puissant de transformation d'un arbre XML en un autre XSLT permet en particulier de publier des données XML sur le Web par transformation en un document HTML standard XSLT est très utilisé : Pour publier des contenus XML Pour transformer des formats (EAI, B2B) XSLT Essai

3. XSL-FO : le formatage Permet les mises en pages sophistiquées Objets de mise en forme applicables aux résultats avec XSLT Distinction Formatage des pages Formatage des objets à l'intérieur des pages Statiques Dynamiques XSL-FO Essai

Principes Peut s'appliquer aux résultats des feuilles XSLT XSL-FO Essai

Organisation du document Un document FO est formé d'un élément fo:root qui comprend deux parties distinctes une description des modèles de pages fo:layout-master-set une description du contenu fo:page-sequence Le contenu comporte : Des flux contenant les données mêmes du document Des éléments statiques dont le contenu se répète sur les pages (en-têtes courants, no de page, etc.) XSL-FO Essai

Objets de formatage Les objets de formatage sont multiples : <fo:block> utilisé pour les blocs de textes, paragraphes, titres… <fo:display-rule> ligne de séparation <fo:external-graphic> zone rectangulaire contenant un graphisme (SVG) Ils possèdent de nombreuses propriétés Pour un block on peut définir la marge gauche et droite l’espace avant et après le paragraphe la couleur du texte ………... XSL-FO Essai

Fonctionnalités Pages portrait ou paysage Pages recto-verso Page de tailles variées Marges multiples Colonnes multiples Entête et pieds de page Caractères unicode Formatage multi-langages Tables des matières générées Multiple directions d'écritures Numérotation des pages Graphiques et SVG Tables, avec entêtes, lignes et colonnes fusionnables Listes Zones flottantes Tris à l'édition Notes de bas de pages XSL-FO Essai

XSL-FO: hello World <?xml version="1.0" encoding="iso-8859-1"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="my-page"> <fo:region-body margin="2 cm"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="my-page"> <fo:flow flow-name="xsl-region-body"> <fo:block>Hello, world!</fo:block> </fo:flow> </fo:page-sequence> </fo:root> Element Root Permet de définir le namespace XSL-FO Layout master set Permet de déclarer une ou plusieurs page masters (masque) et page sequence masters pour définir la structure des pages (ici une de 2 cm de marges) Page sequence Les pages sont groupées en séquences et structurées selon la référence au masque. Flow C'est le container du texte utilisateur dans le document. Le nom du flot lit le texte à une zone de la page définie dans le masque. Block C'est le bloc de formatage qui inclut un paragraphe de texte pouvant être produit pas XSLT. XSL-FO Essai

XSL-FO et XSLT : Exemple Définition de propriétés pour la racine <xsl:template match=‘/’> <fo-display-sequence font-style=‘italic’ start-indent=‘4pt’ end-indent=‘4pt’ font-size=‘18pt’ <xsl:apply-templates/> </fo-display-sequence> </xsl:template La définition d’une propriété locale est prioritaire devant l’héritage XSL-FO Essai

Les processeurs XSL-FO Apache Group : FOP Formating Object Processor Génère du PDF http://www.apache.org JFOR (Open Source) Génère du RTF http://www.jfor.org Antenna House XSL Formatter http://www.antennahouse.com RenderX Génère du PDF http://www.renderx.com Altova StyleVision http://www.altova.com/products_xsl.html XML Mind FO Converter Génère du RTF http://www.xmlmind.com/foconverter Autres Arbortext, Adobe, Scriptura, XMLPDF, APOC, XSL-FO to TeX XSL-FO Essai

Bilan XSL XML = format pour la production de publications échangeables sur le web : production d’une source unique en XML ; XSLT = génération automatique de présentations multiples ; XSL-FO = génération de présentations soignées avec pages maîtres et blocs formatés. XSL peut être vu comme le langage de programmation de XML … Questions ? XSL Essai

4. XML: le traitement par programme XML Schema (ou DTD) Manipulation de l'arbre XML <ville>Paris</ville> <pays>France</pays> <temp echelle="C">18</temp> <ville>Paris</ville> <pays>France</pays> <temp echelle="C">18</temp> XML DOM Parser Bien formé Valide événements – call back <ville>Paris</ville> SAX XSL Stylesheet Mal formé/Invalide XSLT XSLFO (X)HTML <city>Paris</city> <temp degree="F">65</temp> WML XML PDF RTF, Word Mapping Essai

L'interface DOM Standard W3C fait pour HTML et XML Structure d'objets pour représenter un document Résultat d'un "parser" Arbre d'objets reliés entre eux Interface objet pour naviguer dans un document Orientée objet Peut être utilisée en: Java, C++ C#, VB Python, PHP DOM Essai

Principaux parseurs Xerces Apache (Java, C++) MSXML Microsoft Document XML Xerces Apache (Java, C++) MSXML Microsoft SDK Oracle Oracle JAXP J2EE (Sun JDK) API générique J2EE Parseur DOM Arbre DOM API DOM Application DOM Essai

Exemple d'arbre DOM <Guide> </Guide> Document Racine du document NodeList <Guide> Element NodeList <Restaurant> <Bar> <Guide> <Restaurant id="R1">Le meilleur restaurant</Restaurant> <Bar/> </Guide> Element Element NamedNodeMap Attr Id="R1" NodeList Text Le meilleur restaurant DOM Essai

Le meilleur restaurant L'arbre DOM Navigation via un arbre générique de nœuds Node NodeList (Parent/Child) NamedNodeMap Tout nœud hérite de Node Node Document ProcessingInstruction DocumentType Element .... <?xml:stylesheet ...> <!DOCTYPE ...> <Restaurant ....> Child Text Le meilleur restaurant DOM Essai

Quelques interfaces de base Document createElement (Nom_Element): créer un élément avec le nom spécifié en paramètre. createComment (commentaire): créer une ligne de commentaires dans le document. createAttribute (Nom_Attribut): créer un attribut avec le nom pris en paramètre. getElementsByTagName (nom_Tag): retourne tous les descendants des éléments correspondants au Nom_Tag. Nœud insertBefore (Nouveau_Noeud, Noeud_Reference): insère un nouveau nœud fils avant le " nœud référence" déjà existant. replaceChild (Nouveau_Noeud, Ancien_Noeud): remplace le nœud "Ancien_Noeud" par le nœud "Nouveau_Noeud". removeChild (Nœud): supprime le nœud entré en paramètre de la liste des nœuds. appendChild (Nouveau_Noeud): Ajoute un nouveau nœud a la fin de la liste des nœuds. hasChildNodes(): Retourne vrai si le nœud possède un enfant DOM Essai

Autres interfaces Interfaces fondamentales Interfaces étendues XML DOMImplementation Document Comment DocumentFragment Element Attr(ibute) NamedNodeMap CharacterData Text Interfaces étendues XML ProcessingInstruction DocumentType CDATASection Notation Entity EntityReference DOM Essai

Exemple d'utilisation Document: <nom ville ="Paris"> Public class ExempleDOM public static main (String argc[]) throws IOException, DOMExcetion {XMLDocument xmlDoc = new XmlDocument(); // creation des nœuds ElementNode nom = (ElementNode) xmlDoc.createElement("nom"); ElementNode prenom = (ElementNode) xmlDoc.createElement("prenom"); ElementNode nomfam = (ElementNode) xmlDoc.createElement("nomfam"); // creation de l'arbre xmlDoc.appendChild(nom); nom.appenChild(prenom); prenom.appendChild(xmlDoc.createTextNode("Jean"); nom.appenChild(nomfam); nomfam.appendChild(xmlDoc.createTextNode("Dupont"); // positionnement d'un attribut nom.setAttribute("ville", "Paris"); // sortie System.exit(0); } } Document: <nom ville ="Paris"> <prenom> Jean </prenom> <nomfa> Dupont </nomfa> </nom> DOM Essai

Bilan DOM Une interface objet standard Performance limitée DOM 2.0 Navigation dans l'arbre XML Traitements spécifiques Performance limitée Place mémoire importante Traitement à la fin de l'analyse DOM 2.0 API indépendante de la structure mémoire DOM Level 3 : XPath Support direct de XPath Définition d'un XPath Evaluator Events Modèle d'événements Associés à un nœud Propagés dans l'arbre Style Accès aux styles Mapping complet Load and Save Stockage de l’arbre DOM Essai

L'interface SAX SAX (Simple API for XML) Types d'événement : modèle simplifié d'événements développé par un groupe indépendant. Types d'événement : début et fin de document ; début et fin d'éléments ; attributs, texte, … . Nombreux parseurs publics XP de James Clark, Aelfred, Saxon MSXML3 de Microsoft Xerces de Apache JAXP de SUN SAX Essai

Principe de fonctionnement Méthodes utilisateur Evénement startDocument Parser Document XML Stream XML Evénement startElement …. Evénement endDocument Content Handler SAX Essai

Les méthodes essentielles XMLReader setContentHandler setErrrorHandler parse ContentHandler startDocument endDocument startElement endElement characters ErrorHandler fatalError error warning SAX Essai

Exemple SAX et DOM startDocument () startElement (personne) startElement (nom) characters (Cover) endElement (nom) startElement (prenom) characters (Harry) endElement (prenom) startElement (adresse) startElement (rue) characters (Stendhal) endElement (rue) startElement (ville) characters (Paris) endElement (ville) endElement (adresse) endElement (personne) endDocument () <personne> <nom> Cover </nom> <prenom> Harry </prenom> <adresse> <rue> Stendhal </rue> <ville> Paris </ville> </adresse> </personne> personne nom prenom adresse rue ville #text: Cover #text: Paris #text: Stendhal #text: Harry SAX Essai

DOM versus SAX DOM utilise SAX pour la construction de l’arbre d’un document XML SAX est plus léger que DOM Au-dessus de DOM, il est possible d  ’implémenter un « method caller » ... SAX Essai

Integration : API JAXP Java API for XML Parsing Objectif JAXP est une d'API standard J2EE permettant d'effectuer des traitements XML qui englobe : SAX (SAX 2.0) DOM (DOM Level 2) la manipulation de transformations XSLT Objectif Fournir une couche d’abstraction permettant d’utiliser n’importe quel analyseur SAX/DOM ou processeur XSL JAXP 1.3 est inclus dans le JDK de Sun Java WSDP 2.0, Java SE 5.0, disponible sur Java.Net Essai

Le mapping objet (Data Binding- JAXB) Définition Mapping entre un document XML et un graphe d’objets métier C++ ou Java Développements manuels Interface générée à l’aide d’outils de Data Binding Objets C++ Objets Java Objets Java Parsing Xerces C++ Parsing XDK Java Binding Java XML XML XML Mapping Essai

Principes Compilation du schéma en classes Java Traduction des documents en objets Possibilité de publier les objets en XML compile Schema Classes instance of conforms unmarshal Objects Documents marshal Essai

Avantages L’activité de développement "parsing" est réduite Gain en coût de développement des interfaces Les applications peuvent se concentrer sur le fonctionnel Les développeurs n'ont pas à se soucier du mapping XML Les Systèmes Techniques sont simplifiés Capitalisation sur l’interface (utilisation, évolution, …) Gain en terme de fiabilité (fin de l’utilisation de parseurs variés, parfois écrits à la main) Les performances de l’interface sont optimisées Les outils de mapping sont intégrés aux serveurs J2EE = JAXB .NET = mapper Mapping Essai

5. Conclusion Un ensemble d’outils pour traiter du XML: Questions ? Analyseurs validants Processeurs XSLT/XSLFO Intégrés aux serveurs d’applications J2EE = JAXP .NET = MSXML En évolution permanente Questions ? Essai