Manipulation d’XML avec XSL Formation XML SANDRE
La manipulation de fichiers XML Directement avec un éditeur de texte Via la programmation deux librairies standards : DOM et SAX pour tous les langages de développement Nécessite de développer Avec un fichier XML ! Utilisation des technologies XSL … Formation XML/SANDRE
Principe de XSL XSL : eXtensible Stylesheet Language. HTML CSS XSL Un standard du W3C Un langage de feuille de style XML HTML CSS XSL Trois composantes de XSL : XSLT le langage pour transformer un XML XPath pour retrouver une information dans un XML XSL-FO est un langage pour formater un document XML Formation XML/SANDRE
XPATH le langage pour trouver l’information Une syntaxe pour définir une fraction d’un document XML Utilise des expressions pour naviguer dans des documents XML Contient une librairie standard de fonctions Un standard W3C. Formation XML/SANDRE
La terminologie XPath Les nœuds (nodes) Valeurs atomiques (Atomic values) Relations entre nœuds : Parent Enfant Siblings : nœuds qui ont le même parent Ancestors : le parent d’un nœud, le parent du parent,… Descendants : le fils d’un nœud, le fils du fils du noeud,… Formation XML/SANDRE
Sélection d’un noeud / Le nœud racine . Le nœud courant .. Le nœud // Principe : une sélection par répertoire ou « pas » Path expressions Exemples : /ReseauSurveillance/CdReseau /ReseauSurveillance/StationMesure/Analyse/DateAnalyse //@schemeAgencyID / Le nœud racine . Le nœud courant .. Le nœud // Tous les nœuds du nœud courant @ Les attributs * Tous les éléments @* Tous les attributs Formation XML/SANDRE
Prédicat ou comment sélectionner un noeud Permet de sélectionner un ou plusieurs nœuds répondant à un ou plusieurs critères Ajout du critère entre crochet dans l’expression path Utilisation des opérateurs « classiques » Exemples : /ReseauSurveillance/StationMesure[1] //Analyse[DateAnalyse="2005-03-23"] //Analyse[DateAnalyse="2005-03-23" and CdParametre="1340"]/Resultat Formation XML/SANDRE
Raffinements en XPath Un ensemble de fonctions intégrés floor(3.2) 3 substring(string,start,len) Last … Manipulation au sein de l’arbre Following-siblings::* ancestor-or-self::* Formation XML/SANDRE
XSLT, le langage de transformation Le principe : Définit un ensemble de nœuds (parts) du document source qu’il fusionne avec une template Parcourt le document source. Dès qu’il trouve le nœud, il appelle la template et produit le document résultat Utilisation de fonctions dédiés à l’affichage des valeurs atomiques d’un document source Formation XML/SANDRE
Exemple de fichier XSL Formation XML/SANDRE Déclaration du XSLT <xsl:stylesheet xmlns="http://www.rnde.tm.fr/francais/sa/xml/scenario/formation" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > <xsl:output method="html" version="1.0" encoding="ISO-8859-1" indent="yes"/> <xsl:template match="/"> <html> <body> <h2>Les stations de mesure</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">Code</th> <th align="left">Nom</th> </tr> <tr> <td><xsl:value-of select="ReseauSurveillance/StationMesure/CdStationMesure"/></td> <td><xsl:value-of select="ReseauSurveillance/StationMesure/NomStationMesure"/></td> </table> </body> </html> </xsl:template> </xsl:stylesheet> Déclaration du XSLT Une Template Formation XML/SANDRE
Exemple de boucle .. <xsl:template match="/"> <html> <body> <h2>les stations de mesure</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">Code</th> <th align="left">Nom</th> </tr> <xsl:for-each select="ReseauSurveillance/StationMesure"> <tr> <td><xsl:value-of select="CdStationMesure"/></td> <td><xsl:value-of select="NomStationMesure"/></td> </xsl:for-each> </table> </body> </html> On boucle sur chaque information Formation XML/SANDRE
Exemple de tri <xsl:sort select="DateAnalyse"/> <body> <h2>les stations de mesure</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">Code</th> <th align="left">Nom</th> <th align="left">Liste des codes paramètres</th> </tr> <xsl:for-each select="ReseauSurveillance/StationMesure"> <tr> <td><xsl:value-of select="CdStationMesure"/></td> <td><xsl:value-of select="NomStationMesure"/></td> <td> <xsl:for-each select="Analyse"> <xsl:sort select="DateAnalyse"/> <br><xsl:value-of select="CdParametre"/> le <xsl:value-of select="DateAnalyse"/></br> </xsl:for-each> </td> Formation XML/SANDRE
Exemple de condition <xsl:if test="Insitu=1">X</xsl:if> <xsl:for-each select="ReseauSurveillance/StationMesure"> <tr> <td><xsl:value-of select="CdStationMesure"/></td> <td><xsl:value-of select="NomStationMesure"/></td> <td> <table border="1"> <th>paramètre</th> <th>Date</th> <th>Résultat</th> <th>Insitu</th> </tr> <xsl:for-each select="Analyse"> <xsl:sort select="DateAnalyse"/> <td><xsl:value-of select="CdParametre"/> </td> <td><xsl:value-of select="DateAnalyse"/></td> <td><xsl:value-of select="Resultat"/></td> <xsl:if test="Insitu=1">X</xsl:if> </td> … Formation XML/SANDRE
Comment appliquer XSL sur un fichier XML Ajout d’une feuille de style au fichier XML Ajout en début du fichier XML : <?xml-stylesheet type="text/xsl" href="XSLT_4.xslt"?> Utilisation d’un simple navigateur WEB compatible Via un développement informatique Appel de la feuille de transformation sur le fichier XML Formation XML/SANDRE
XML sous autre structure L’utilisation de XSL XML sous autre structure XML HTML, PDF Fichier XSL TEXTE Formation XML/SANDRE