XML
eXtensible Markup Language
XML
Introduction
Introduction
• XML est une notation
• Méta-langage
• une manière d'écrire les informations
• Langage descriptif: décrit de...
Méta langage
Utilisation
• XHTML, HTML5
• OpenOffice, Microsoft Office Open XML (docx, xlsx, pptx = dossier
zip avec xml + img)
• Forma...
Exemple
<BIBLIOTHEQUE>
<ROMAN>
<TITRE>Imajica</TITRE>
<AUTEUR>Clive Barker</AUTEUR>
<PRIX>6</PRIX>
</ROMAN>
<ROMAN>
<TITRE...
Exemple
de: Julia Royer
à: Jean Valjean
Sylvie Picard
cc: Luc Royer
Jonas Dupras
Sujet: Invitation
SVP, nous aviser si vou...
Arbre
Structure XML
• Ensemble de règles qui définissent la grammaire d'un
dialecte XML :
– DTD : Définition du type de document...
Style XML
• Permet de préciser le rendu, la disposition, le formatage
du contenu;
– CSS - Cascading Style Sheets
– XSL - e...
Requêtes sur XML
• Parcourir les fichiers xml
• Xpath : XML Path Language (chemins fichiers)
• Xquery : langage de requête...
Parsing
• SAX : Simple API for XML, parseur
événementiel
(java, c++, perl, php …)
• DOM : Document Object Model, parseur
o...
XML
Structure du document XML
Structure du document XML
• Débute par un prologue (facultatif et non répétable)
• Contient un et un seul élément racine; ...
Le prologue
• Une déclaration XML
• Des instructions de traitement (<?nom-du-traitement arg1 arg2 argn ?>)
• Une déclarati...
Les éléments
• L'élément racine est obligatoire et ne peut être répété dans un
document XML. Il forme le contenu propremen...
Les attributs
Un attribut (attribute) se compose d'un nom d'attribut, d'un indicateur
de valeur, et d'une valeur précédée ...
Sections littérales (section CDATA)
• Les sections littérales constituent un mécanisme qui permet
d'insérer dans un docume...
Commentaires
<!-- Voici le contenu du commentaire -->
XML
Les Chemins XPath
XPath
• Permet d’indiquer un ou plusieurs éléments dans un
document xml à l’aide de chemins
• Le chemin s’évalue en foncti...
XPath
• Une suite d’étape :
– [/]étape /étapex/.../étapen
• Chemin absolue (nœud context est la racine) :
– /A/B/@att1
• C...
Xpath : fonctionnement
• à partir du nœud contexte, on évalue l’étape1; on obtient
un ensemble de nœuds;
• on prend alors,...
Xpath : les axes
Axe résultat
ancestor tout les ancêtres (parent, grandparent ..) du nœud contexte
ancestor-or-self Tout l...
Xpath : les axes
Xpath : les axes
Xpath : filtrer par type de noeud
• text() : nœud de type texte
• comment() : nœud de type commentaire
• processing-instru...
Xpath : les operateurs
+ - * div mod
= != < > <= >=
or and
Xpath : Fonctions
• string-length( ... ) : longueur d’une chaîne
• starts-with( chaîne1, chaîne2 ) : tester si chaîne1 com...
Xpath : Fonctions
• count( NodeSet? ) : nombre de noeuds (avg , min , max, sum )
• position() : position courante commença...
Xpath : prédicat
Expression Description
/bookstore/book[1] Selectionne le premier element enfant book
/bookstore/book[last...
Xpath : abréviations
Expression Description
nodename Sélectionne tout les nœud nommés "nodename"
/ Sélectionne depuis le n...
Exemple
• child::B[child::C]
– B[C]
• /descendant::B[attribute::att1and attribute::att2]
– //B[@att1 and @att2]
• child::B...
XML
Les Styles CSS / XSLT
Lier un fichier XML avec CSS
Après la déclaration xml dans le prologue du fichier xml :
<?xml-stylesheet href= " style.css...
Exemple CSS
<contact>
<nom>Logan Lee</nom>
<tel type="mobile">03 28 41 26 20</tel>
<tel type="bureau">04 01 49 94 42</tel>...
Exemple CSS
contact{
display:block;
width:50%;
border: 4px inset #06F;
}
nom{
font-weight:bold;
color:#006;
display:block;...
XSLT
• Fichier XML
– <?xml version="1.0" encoding="utf-8"?>
– un namespace "http://www.w3.org/1999/XSL/Transform"
– Un élé...
XSLT
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
...
</xsl:stylesheet>
XSLT fonctionnement
• Un processeur XSLT traite un document XML en parcourant
les éléments de l’arbre XML correspondant, e...
XSLT : modèle
<xsl:template match="...pattern...">
<!-- modèle de transformation -->
...
<!-- fin du modèle de transformat...
XSLT : les instructions
• on peut mettre des instructions xslt dans le modèle
<xsl:instruction> ... </xsl:instruction>
• L...
XSLT : les instructions
• Exemple d’instructions :
– <xsl:value-of select="... chemin de localisation ..." /> est
remplacé...
XSLT : les instructions
• Exemple d’instructions :
– <xsl:apply-templates/> est remplacée par le fragment de
document qui ...
XSLT : les instructions
<xsl:choose>
<!-- autant de xsl:when que l'on veut, mais au moins 1 en tout -->
<xsl:when test=" ....
XSLT : les instructions
• <xsl:text> : insérer un texte non balisé (espaces blancs)
– Si les espaces proviennent du fichie...
Apply-templates
• L'élément <xsl:apply-templates> sélectionne d'abord une collection de
nœuds à l'aide de l'expression spé...
Les modèles par défaut
<xsl:template match="text()|@*“>
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="te...
Identity transform
<xsl:template match="/ | @* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:co...
Les modes
• traiter un même élément du document XML source plusieurs fois de
plusieurs façons différentes dans une même tr...
Transformation sous PHP
<?php
$doc = new DOMDocument();
$doc->load( "carnet.xml" );
$xsl = new XSLTProcessor();
$xslt = ne...
Transformation sous JAVA
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import jav...
Comprendre XML : les notions fondamentales
Comprendre XML : les notions fondamentales
Prochain SlideShare
Chargement dans…5
×

Comprendre XML : les notions fondamentales

1 345 vues

Publié le

Comment fonctionne XML? validation, mise en forme et transformation, XPath, Parsing

Publié dans : Technologie
1 commentaire
7 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
1 345
Sur SlideShare
0
Issues des intégrations
0
Intégrations
6
Actions
Partages
0
Téléchargements
19
Commentaires
1
J’aime
7
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Comprendre XML : les notions fondamentales

  1. 1. XML eXtensible Markup Language
  2. 2. XML Introduction
  3. 3. Introduction • XML est une notation • Méta-langage • une manière d'écrire les informations • Langage descriptif: décrit des propriétés plutôt que des traitements • utilise des balises pour délimiter les informations • Données Hiérarchiques • Compréhensible par un humain et par un ordinateur • Un fichier XML est un fichier texte. • Utilisé pour Echanger les données • Supporte tous les alphabets du monde (UTF8)
  4. 4. Méta langage
  5. 5. Utilisation • XHTML, HTML5 • OpenOffice, Microsoft Office Open XML (docx, xlsx, pptx = dossier zip avec xml + img) • Format graphique : SVG • Les Flux de news : RSS • Les WebServices : XML-RPC et SOAP • JAVA (persistance, hibernate ..), .Net (xaml, dataset …), C++ … • MAthML (échange formule), SMIL(présentation multimédia), UBL Rosetta.Net (Universal Business Language : commandes, factures, devis ..) … • Et bien d’autres …
  6. 6. Exemple <BIBLIOTHEQUE> <ROMAN> <TITRE>Imajica</TITRE> <AUTEUR>Clive Barker</AUTEUR> <PRIX>6</PRIX> </ROMAN> <ROMAN> <TITRE>Dune</TITRE> <AUTEUR>Frank Herbert</AUTEUR> <PRIX>7</PRIX> </ROMAN> <MAGAZINE> <TITRE>Science et Vie</TITRE> <DATEPARUTION>2005-02-01</DATEPARUTION> </MAGAZINE> <ROMAN> <TITRE>Christine</TITRE> <AUTEUR>Stephen King</AUTEUR> <PRIX>5</PRIX> </ROMAN> </BIBLIOTHEQUE>
  7. 7. Exemple de: Julia Royer à: Jean Valjean Sylvie Picard cc: Luc Royer Jonas Dupras Sujet: Invitation SVP, nous aviser si vous ne pouvez pas y assister. <?xml version="1.0" encoding=« utf9" ?> <MEMO> <AUTEUR>Julia Royer</AUTEUR> <DESTINATAIRES> <NOM>Jean Valjean</NOM> <NOM>Sylvie Picard</NOM> </DESTINATAIRES> <SUJET>Invitation</SUJET> <CC> <NOM>Luc Royer</NOM> <NOM>Jonas Dupras</NOM> </CC> <CORPS> <PAR>SVP, nous aviser si vous ne pouvez pas y assister.</PAR> </CORPS> </MEMO>
  8. 8. Arbre
  9. 9. Structure XML • Ensemble de règles qui définissent la grammaire d'un dialecte XML : – DTD : Définition du type de document !doctype (.dtd) – Schémas XML (.xsd) • Permet de vérifier la validité d'un document ; • Permet d'exercer des contraintes sur les contenus; • Permet une prévisibilité des contenus pour un type de document donné. Valider
  10. 10. Style XML • Permet de préciser le rendu, la disposition, le formatage du contenu; – CSS - Cascading Style Sheets – XSL - eXtensible Style Sheets : • XSL Formating Objects (XSL-FO) • XSL Transformations (XSLT) Formater / Transformer
  11. 11. Requêtes sur XML • Parcourir les fichiers xml • Xpath : XML Path Language (chemins fichiers) • Xquery : langage de requête (SQL) • Xpointer : un fragment de document XML en ligne (URL) Trouver / Extraire
  12. 12. Parsing • SAX : Simple API for XML, parseur événementiel (java, c++, perl, php …) • DOM : Document Object Model, parseur orientés hiérarchie (JavaScript, java, c++ …) Traiter / programmer
  13. 13. XML Structure du document XML
  14. 14. Structure du document XML • Débute par un prologue (facultatif et non répétable) • Contient un et un seul élément racine; (obligatoire et non répétable) • Peut, par la suite, contenir des commentaires, des instructions de traitement ou des espaces (facultatifs et répétables)
  15. 15. Le prologue • Une déclaration XML • Des instructions de traitement (<?nom-du-traitement arg1 arg2 argn ?>) • Une déclaration de type de document. <?xml version="1.0" encoding="iso-8859-1" standalone="no"?> <?xml-stylesheet type="text/css" href="maFeuille.css"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  16. 16. Les éléments • L'élément racine est obligatoire et ne peut être répété dans un document XML. Il forme le contenu proprement dit du document. L'élément racine peut être vide. • Un élément (element) se compose d'une balise d'ouverture, d'un contenu et d'une balise de fermeture : <para>Bonjour le monde!</para> • Lorsque le contenu de l'élément est vide, on peut utiliser la forme abrégée suivante : <para />
  17. 17. Les attributs Un attribut (attribute) se compose d'un nom d'attribut, d'un indicateur de valeur, et d'une valeur précédée et suivie par des délimiteurs de littéral " ou ‘ : nom-attribut="valeur-attribut" <personne nom="John" prenom="Smith"/> Ou <personne> <nom>John</nom> <prenom>Smith</prenom> </personne> – Les attributs sont toujours situés à l'intérieur de la balise d'ouverture d'un élément. – Les attributs n'ont pas d'ordre; – Chaque attribut doit être précédé d'un espace;
  18. 18. Sections littérales (section CDATA) • Les sections littérales constituent un mécanisme qui permet d'insérer dans un document XML une chaîne de caractères qui doit être traitée par le processeur comme étant une chaîne littérale. • Tout caractère servant de délimiteur sera alors traité comme simple caractère. <![CDATA[ Voici le <contenu> de la section littérale ]]>
  19. 19. Commentaires <!-- Voici le contenu du commentaire -->
  20. 20. XML Les Chemins XPath
  21. 21. XPath • Permet d’indiquer un ou plusieurs éléments dans un document xml à l’aide de chemins • Le chemin s’évalue en fonction d’un nœud contexte • A pour résultat : – un ensemble de nœuds (nodeset) – Une valeur numérique, booléenne ou alphanumérique • Existe sous une forme abrégé et non abrégé, la forme non abrégé couvre plus de possibilités
  22. 22. XPath • Une suite d’étape : – [/]étape /étapex/.../étapen • Chemin absolue (nœud context est la racine) : – /A/B/@att1 • Chemin relatif (à un nœud contexte) – A/B/@att1 • Une étape comprend trois composants : – axe::filtre[prédicat1][prédicat2] … – l’axe: relation entre le nœud contexte et ceux sélectionnés – le filtre: type des nœuds qui seront retenus – le(s) prédicat(s): propriétés que doivent satisfaire les nœuds retenus • On peut faire une union de chemins: //A | B/@att1
  23. 23. Xpath : fonctionnement • à partir du nœud contexte, on évalue l’étape1; on obtient un ensemble de nœuds; • on prend alors, un par un, les nœuds de cet ensemble, et on les considère chacun à leur tour comme nœud contexte pour l’évaluation de l’étape 2; • à chaque étape, on prend successivement comme nœud contexte chacun des nœuds faisant partie du résultat de l’étape précédente.
  24. 24. Xpath : les axes Axe résultat ancestor tout les ancêtres (parent, grandparent ..) du nœud contexte ancestor-or-self Tout les ancêtres du nœud contexte et le nœud contexte lui-même attribute Tout les attribut du nœud contexte child Tout les fils du nœud courant. (axe par défaut, peut être omis) descendant Tout les descendants (fils, petit fils ..) descendant-or-self Les descendants et le nœud contexte following Tout ce qui se trouve dans le document apres la balise de fermeture du nœud courant following-sibling Les nœuds frères qui suivent le nœud contexte namespace Tout les nœuds espace de nom du nœud contexte parent Le nœud parent du nœud courant preceding Les nœuds qui précédent le nœud courant sauf les parents, ancêtres, attributs et namespace preceding-sibling Les nœuds frères avant le nœud courant Self Le nœud contexte lui même
  25. 25. Xpath : les axes
  26. 26. Xpath : les axes
  27. 27. Xpath : filtrer par type de noeud • text() : nœud de type texte • comment() : nœud de type commentaire • processing-instruction() : nœud de type instruction de traitement • node() : tout type de nœud
  28. 28. Xpath : les operateurs + - * div mod = != < > <= >= or and
  29. 29. Xpath : Fonctions • string-length( ... ) : longueur d’une chaîne • starts-with( chaîne1, chaîne2 ) : tester si chaîne1 commence par chaîne2 • substring( chaîne1, position1, longueur) : extraction d’une sous-chaîne • normalize-space( chaîne ) : normalisation des occurrences de blancs à 1 blanc ;suppression des blancs d’en-tête et de fin • translate( chaîne, caractères source, caractères destination ) : convertit dans la chaîne tous les caractères source par leur correspondance (en fonction de la position) dans le dernier argument • number( chaîne ) : conversion en nombre • string( expression ) : conversion en chaîne • concat( chaîne1, chaîne2 ) : concaténation • contains( chaîne1, chaîne2 ) : tester si chaîne1 contient chaîne2 • floor( nombre décimal ) : arrondi inférieur (10.9 devient 10, par exemple) • ceil( nombre décimal ) : arrondi supérieur (10.1 devient 11, par exemple) • round( nombre décimal ) : arrondi au plus juste (10.4 devient 10 et 10.6 devient 11, par exemple)
  30. 30. Xpath : Fonctions • count( NodeSet? ) : nombre de noeuds (avg , min , max, sum ) • position() : position courante commençant par 1 • last( NodeSet? ) : dernière position • name( NodeSet? ) : nom du noeud (tag s’il s’agit d’un élément) avec préfixe éventuel • local-name( NodeSet? ) : nom du noeud sans préfixe • namespace-uri( NodeSet? ) : espace de noms • generate-id( NodeSet? ) : génération d’un identifiant unique • not() : la négation booléenne • …
  31. 31. Xpath : prédicat Expression Description /bookstore/book[1] Selectionne le premier element enfant book /bookstore/book[last()] Selectionne le dernier element enfant book /bookstore/book[last()-1] L’avant dernier element enfant book /bookstore/book[position()<3] Les deux premiers elements enfant book //title[@lang] Selectionne tout les titres qui ont un attribut lang //title[@lang='eng'] Selectionne tout les titre qui ont un attribut lang qui vaut eng /bookstore/book[price>35.00] Tout les éléments book enfant de l’element racine bookstore qui ont un élément price avec une valeur supérieur à 35 /bookstore/book[price>35.00]/title Selects all the title elements of the book elements of the bookstore element that have a price element with a value greater than 35.00
  32. 32. Xpath : abréviations Expression Description nodename Sélectionne tout les nœud nommés "nodename" / Sélectionne depuis le nœud racine // Sélectionne depuis le nœud contexte tout les nœuds correspondant au critères quelque soit leur niveau dans le document . Sélectionne le nœud courant .. Sélectionne le nœud parent @ Sélectionne l’attribut * N’importe quel élément @* N’importe quel attribut node() N’importe quel noeud
  33. 33. Exemple • child::B[child::C] – B[C] • /descendant::B[attribute::att1and attribute::att2] – //B[@att1 and @att2] • child::B[position()=last() - 1] – B[last()-1] • Following-sibling::B[position()=1] – Following-sibling::B[1]
  34. 34. XML Les Styles CSS / XSLT
  35. 35. Lier un fichier XML avec CSS Après la déclaration xml dans le prologue du fichier xml : <?xml-stylesheet href= " style.css" type="text/css"?>
  36. 36. Exemple CSS <contact> <nom>Logan Lee</nom> <tel type="mobile">03 28 41 26 20</tel> <tel type="bureau">04 01 49 94 42</tel> <tel type="domicile">04 29 79 52 15</tel> <email>hendrerit@Crasdolordolor.com</email> <adresse>546 Rutrum Street</adresse> <ville>Gentbrugge</ville> </contact> <contact> <nom>Alisa Brady</nom> <tel type="mobile">08 56 96 88 56</tel> <tel type="bureau">02 20 31 78 32</tel> <tel type="domicile">01 76 46 92 49</tel> <email>mus@nuncsed.net</email> <adresse>P.O. Box 557, 1452 Orci Ave</adresse> <ville>Gap</ville> </contact>
  37. 37. Exemple CSS contact{ display:block; width:50%; border: 4px inset #06F; } nom{ font-weight:bold; color:#006; display:block; text-align:center; } tel{ display:block; margin-left:20px; } tel:before{ content:attr(type) " : "; }
  38. 38. XSLT • Fichier XML – <?xml version="1.0" encoding="utf-8"?> – un namespace "http://www.w3.org/1999/XSL/Transform" – Un élément racine xsl:stylesheet • Appliqué à un fichier XML (comme CSS) – <?xml-stylesheet href= " style.xsl" type="text/xsl"?> • Ensemble de règles / modèles de transformation : les templates – xsl:template • Les transformations XSL seront appliqué au fichier xml par un processeur (java : Saxon et Xalan, php5 : XSLTProcessor .NetFramework : XslCompiledTransform, les navigateurs ..) – Pour googleChrome la transformation requiert un serveur web • Transforme un document XML (arbre source) en un autre document (arbre résultat, output ) • Le résultat est un fichier html, svg, fichier texte, pdf, un autre fichier xml …
  39. 39. XSLT <?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> ... </xsl:stylesheet>
  40. 40. XSLT fonctionnement • Un processeur XSLT traite un document XML en parcourant les éléments de l’arbre XML correspondant, et en appliquant à certains d’entre eux une règle de transformation choisie parmi l’ensemble des règles constituant le programme XSLT • Un fichier XSLT contient un ensemble de règles (modèles) : – <xsl:template match="..."> • Une règle se compose de : – un motif (pattern) en xpath indique si l’élément courant est à traiter ou non – Un modèle de transformation (template) : qui dit par quoi remplacer l’élément courant (sil correspond au motif)
  41. 41. XSLT : modèle <xsl:template match="...pattern..."> <!-- modèle de transformation --> ... <!-- fin du modèle de transformation --> </xsl:template> • Le modèle le plus spécifique est le premier à être appliqué – on peut préciser la priorité avec l’attribut priority • Un modèle contient du texte et/ou des instructions xsl
  42. 42. XSLT : les instructions • on peut mettre des instructions xslt dans le modèle <xsl:instruction> ... </xsl:instruction> • Le résultat d’une instruction est un texte – En exception les deux expression <xsl:apply-templates> et <xsl:for-each> qui produisent une liste de nœuds sources à traiter • Instructions de premier niveau : – <xsl:output method=‘ …type...‘ encoding=‘…' /> – <xsl:template match="...">
  43. 43. XSLT : les instructions • Exemple d’instructions : – <xsl:value-of select="... chemin de localisation ..." /> est remplacée par la valeur (textuelle) de la sélection – <xsl:copy-of select="..."/> est instanciée sous la forme d’une copie conforme des éléments sélectionnés. (xsl:copy : Copie le noeud courant ) – <xsl:if test=" ... expression XPath ... "> Si la valeur de l’attribut test est égale à true, le modèle de transformation associé est instancié ; sinon, il ne l’est pas
  44. 44. XSLT : les instructions • Exemple d’instructions : – <xsl:apply-templates/> est remplacée par le fragment de document qui résulte du traitement de la liste des enfants du noeud courant – <xsl:for-each select="... chemin de localisation ..."> est remplacée par le fragment de document qui résulte du traitement de la liste des noeuds sélectionnés par son attribut select="…" – <xsl:sort select=“…" data-type=“…"/> est une instruction de tri qui ne s’emploie que comme complément à xsl:apply-templates ou xsl:for-each : elle sert à trier le node-set sélectionné par l’une de ces deux instructions.
  45. 45. XSLT : les instructions <xsl:choose> <!-- autant de xsl:when que l'on veut, mais au moins 1 en tout --> <xsl:when test=" ... expression XPath ... "> <!-- modèle de transformation --> <!-- fin du modèle de transformation --> </xsl:when> <xsl:when test=" ... expression XPath ... "> <!-- modèle de transformation --> <!-- fin du modèle de transformation --> </xsl:when> ... <!-- l'élément xsl:otherwise est facultatif --> <xsl:otherwise> <!-- modèle de transformation --> <!-- fin du modèle de transformation --> </xsl:otherwise> </xsl:choose>
  46. 46. XSLT : les instructions • <xsl:text> : insérer un texte non balisé (espaces blancs) – Si les espaces proviennent du fichier xml utiliser la fonction XPath normalize-space() ou l’instruction xslt <xsl:strip-space> • <xsl:element name="xxx"> : produit dans le document résultat un élément XML de la forme <xxx> ... </xxx>, dont le nom est fourni par l’attribut name, et dont le contenu est le résultat de l’instanciation du modèle de transformation associé • <xsl:attribute> : permet de créer un nouvel attribut, dont le nom est fourni par l’attribut name, et la valeur par le modèle de transformation associé. Il est mis dans un xsl:element ou dans un élément literal • <xsl:attribute-set> : permet de définir un ensemble d’attributs qui pourront être attachés en une seule fois à un élément en utilisant l’instruction <xs:element name="..." use-attribute-sets="...">, ou bien en utilisant un élément source littéral avec un attribut <xsl:use-attribute-sets="..."
  47. 47. Apply-templates • L'élément <xsl:apply-templates> sélectionne d'abord une collection de nœuds à l'aide de l'expression spécifiée dans l'attribut select. Si cet attribut n'est pas spécifié, tous les enfants du nœud actuel sont sélectionnés. • Pour chacun des nœuds sélectionnés, <xsl:apply-templates> demande au processeur XSLT de trouver un <xsl:template> approprié à appliquer. Pour vérifier si les modèles sont applicables, le processeur compare le nœud à l'expression XPath spécifiée dans l'attribut match du modèle. • Si plusieurs modèles sont applicables, celui qui possède la plus haute priorité est choisi. Si plusieurs modèles ont la même priorité, celui qui apparaît en dernier dans la feuille de style est sélectionné. • Si aucun modèle n’est trouvé le processeur appliquera un modèle par défaut
  48. 48. Les modèles par défaut <xsl:template match="text()|@*“> <xsl:value-of select="."/> </xsl:template> <xsl:template match="text()|@*"> <xsl:value-of select="."/> </xsl:template> <xsl:template match="processing-instruction() | comment()"/>
  49. 49. Identity transform <xsl:template match="/ | @* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()" /> </xsl:copy> </xsl:template>
  50. 50. Les modes • traiter un même élément du document XML source plusieurs fois de plusieurs façons différentes dans une même transformation <xsl:template match="/"> <h2>Table des Matières</h2> <xsl:apply-templates select="titre" mode="tdm"/> <h2>Contenu</h2> <xsl:apply-templates select="titre" mode="contenu"/> </xsl:template> <xsl:template match="titre" mode="tdm"> ... </xsl:template> <xsl:template match="titre" mode="contenu"> ... </xsl:template>
  51. 51. Transformation sous PHP <?php $doc = new DOMDocument(); $doc->load( "carnet.xml" ); $xsl = new XSLTProcessor(); $xslt = new DOMDocument(); $xslt->load( "carnet.xslt" ); $xsl->importStyleSheet( $xslt ); echo $xsl->transformToXML($doc); ?> NB: dans le fichier php.ini activer l’extension XSLT en enlevant le point-virgule avant la ligne : extension=php_xsl.dll
  52. 52. Transformation sous JAVA import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; … TransformerFactory factory = TransformerFactory.newInstance(); Transformer t = factory.newTransformer( new StreamSource("carnet.xslt" ) ); t.transform(new StreamSource("carnet.xml" ), new StreamResult("c:/carnet.html" ) );

×