[XSL] Chapitre 1 - Première approche - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [XSL] Chapitre 1 - Première approche (/showthread.php?tid=1718) |
[XSL] Chapitre 1 - Première approche - Roworll - 06-09-2007 Cela fait plusieurs fois que j'interviens sur le forum en parlant de XML et de XSLT. Apparemment, peu de gens connaissent et ou utilisent cette technologie (pourtant validée par le W3C fin 1999). Je vais donc essayer de vous présenter un peu mieux ce langage en m'appuyant sur les quelques connaissances que je possède. XSLT, c'est quoi XSLT veut dire eXtensible Stylesheet Language Transformations. C'est un langage fonctionnel de transformation XML, les documents XSLT étant eux même des documents XML. Basiquement, XSLT permet de mettre en forme des documents XML. En général, le résultat donnera un document XHTML, affichable dans un navigateur. XSLT inclus également un petit language d'interrogation des fichiers XML nommé XPath. Xpath permet d'extraire certaines parties du document XML et de faire des traitements dessus via XSLT. Voila pour les quelques définitions. (Il est conseillé à ceux qui ont déja attrapé mal à la tête de prendre une aspirine avant de continuer) De quoi ai-je besoin pour faire du XSLT A la base, un simple éditeur de texte et un navigateur capable de faire des transformations XSL suffit. Avec ça, vous pourrez commencer à expérimenter le XSL. Les avantages du XSL
Evidemment, il y en a.
Un exemple étant souvent bien plus efficace que de longues explications, entrons directement dans le vif du sujet. Nous allons partir d'un petit fichier XML basique, non optimisé, contenant quelques informations. On compliquera par la suite. Le fichier contient la description d'une troupe d'aventuriers avec l'ID du joueur, son nom, sa classe, sa race et ses compétences. Voici un exemple pour un joueur unique Code PHP :
Le fichier complet est visible ici Maintenant, il faut préparer le fichier de mise en forme XSL. Voici son contenu. Code PHP :
A première vue, cela ressemble fort à un fichier HTML normal excepté les balises qui commencent par <xsl: Ces balises vont être interprétées par votre navigateur pour faire la mise en page. Maintenant, analysons le fichier XSL. Comme expliqué plus haut, une feuille XSL doit respecter le format XML. On commence donc par la déclaration adéquate <?xml version="1.0" encoding="UTF-8" ?> Il faut ensuite prévenir que le document est une feuille de style XSL. <xsltylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> Ensuite, on rentre dans le vif du sujet. <xsl:template match="/page"> L'élément <xsl:template> définit un modèle à appliquer que la partie du fichier XML spécifié par l'attribut match. Ici, on veut travailler sur tout le document donc on part de la racine de celui-ci "/" Les éléments contenus à l'intérieur de la balise <xsl:template> contiennent du HTML qui sera renvoyé à l'écran. On commence a préparer l'entête du tableau avant d'arriver au moment ou on doit afficher le contenu du fichier XML. <xsl:for-each select="/page/joueur"> Cette instruction permet de parcourir tous les élements du fichier XML spécifié dans l'attribut select. Ici, on demande à parcourir tous les noeuds "joueur" placés sous noeud "page". Il faut ensuite afficher les informations contenues dans le XML. Cela se fait au moyen de l'instruction xsl:value-of <xsl:value-of select="id"/> l'attribut select permet de spécifier les valeurs à afficher. On demande ici à XSL de renvoyer le contenu du noeud "id" placé dans le noeud courant. Je vous rappelle que nous sommes actuellement en train de parcourir les noeuds "joueur" qui contiennent tous un noeud fils "id". On fait la même chose pour le nom, la classe et la race. On continue en faisant la liste des compétences et de leur niveau. <xsl:for-each select="competences/competence"> On recommence alors une boucle sur les noeuds "competence" du noeud "joueur" en cours. La première sert à afficher la compétence, la deuxième le niveau. Chaque boucle XSL doit être terminée par une balise </xsl:for-each>. Le document lui même doit être fermé correctement dans le respect des règles XML </xsl:template> </xsltylesheet> Le lien entre le XML et le XSL se fait via PHP par un simple code Code PHP :
Fichiers utilisés pour ce tutorial Fichier XML Fichier XSL Résultat RE: XSL : Chap 1 - Première approche - orditeck - 05-10-2007 L'aide pour ce tutoriel ce trouve à cette adresse : http://www.jeuweb.org/board/showthread.php?tid=2586 |