Title: XML
1XML
- Feuilles de style avec XSL extended Stylesheet
Language
2Introduction
- Un document XML ne contient que des informations
sur la structure, aucune information relative Ã
la mise en page n'apparaît dans le document - gt Utilisation d'une feuille de style
obligatoire en XML pour contrôler la mise en page
du document. - Possibilité d'utiliser CSS ou XSL
- Différence
- CSS utilise des règles pour établir ce qui doit
être formaté et le formatage appliqué (headings,
paragraphes, tables) - XSL utilise des modèles qui sont associés avec
vos propres éléments XML. - XSL permet d'autres choses que l'affichage
(sélection, tri, )
3Les trois parties de la norme XSL
- XSL est divisé en deux parties
- XSLT, un langage de transformation de documents
(ex. génération d'une page HTML à partir d'un
fichier XML et de la feuille de style) - XSL-FO, un ensemble d'instructions de formatage
XML dédié à la présentation (Formatting Objects)
de documents en vue d'une impression. Il comporte
un modèle de format et des propriétés de style
basées sur CSS2. - XSL utilise la syntaxe XPath pour identifier les
éléments ou les parties du document qu'on
souhaite transformer, formater - XPath modélise le document XML comme un arbre et
permet de désigner (par des chemins) des parties
du document XML.
4Processus de transformation XSLT
- Etapes
- Un parseur XML interprète le document XML et
forme un arbre - L'arbre est passé à un processeur XSLT
- Le processeur XSLT compare les nuds dans l'arbre
avec les instructions contenus dans la feuille de
style référencée (XSL) - Quand le processeur trouve une correspondance, il
sort un fragment d'arbre (résultat) - L'arbre est sorti vers un agent utilisateur, par
exemple au format HTML (ou xml, texte, ).
5Processus de transformation XSLT
XSL
HTML ou autre format de sortie
XML
processeur XSLT
6Syntaxe d'une feuille de style XSL
- Fichier xsl simple
- lt?xml version"1.0"?gt
- ltxslstylesheet version"1.0" xmlnsxsl"http//ww
w.w3.org/1999/XSL/Transform"gt - ltxsltemplate match"/"gt
- lthtmlgt
- ltbodygt
- ltxslapply-templates/gt
- lt/bodygt
- lt/htmlgt
- lt/xsltemplategt
- lt/xslstylesheetgt
- L'application de cette feuille de style Ã
n'importe quel document XML reproduit le contenu
sans le balisage.
applique tous les modèles (ici par défaut) sur
les fils de la racine
7Exemple le fichier xml
- ltlivresgt
- Â Â ltlivregt
- Â Â Â Â Â lttitregtFondationlt/titregt
- Â Â Â Â Â ltauteurgt
- Â Â Â Â Â Â Â Â ltnomgtAsimovlt/nomgt
- Â Â Â Â Â Â Â Â ltprenomgtIsaaclt/prenomgt
- Â Â Â Â Â lt/auteurgt
- Â Â Â Â Â ltgenregtScience-Fictionlt/genregt
- Â Â lt/livregt
- Â Â ltlivregt
- Â Â Â Â Â lttitregtLes Robotslt/titregt
- Â Â Â Â Â ltauteur naissance"1920" mort"1992"gt
- Â Â Â Â Â Â Â Â ltnomgtAsimovlt/nomgt
- Â Â Â Â Â Â Â Â ltprenomgtIsaaclt/prenomgt
- Â Â Â Â Â lt/auteurgt
- Â Â Â ltgenregtScience-Fictionlt/genregt
- Â Â lt/livregt
- lt/livresgt
8Modèles (template)
- Dans l'exemple précédent, tous les template par
défaut sont lancés à partir de la racine. Ils
permettent d'afficher le contenu de chaque
élément. - Pour changer cela, il faut ajouter des template
(règles modèles) à la feuille de style indiquant
au processeur XSLT comment traiter les éléments
spécifiques du document d'entrée. - A l'intérieur des balises xslstylesheet, on
insère donc des template qui vont être appliqués
quand ils correspondent au noeud XML spécifié par
l'attribut match. - ltxsltemplate match"NAME"gt lt/xsltemplategt
- ltxslapply-templates select"pattern" /gt
applique les template de la feuille de style - sur les fils du noeud courant si aucun "pattern"
n'est sélectionné - sur les noeuds spécifiés dans le "pattern" dans
le langage XPath sinon
9Exemple la feuille xsl
- lt?xml version"1.0"?gt
- ltxslstylesheet version"1.0" xmlnsxsl"http//ww
w.w3.org/1999/XSL/Transform"gt - ltxsltemplate match"/"gt
- lthtmlgtltbodygt
- ltxslapply-templates/gt
- lt/bodygtlt/htmlgt
- lt/xsltemplategt
- ltxsltemplate match"livre"gt
- Un livre
- lt/xsltemplategt
- lt/xslstylesheetgt
- En appliquant cette feuille de style au
document précédent, on obtient - Un livre Un livre
applique tous les modèles (ici un template défini
pour l'élement livre) sur les fils de la racine
10Exemple la feuille xsl
- lt?xml version"1.0"?gt
- ltxslstylesheet version"1.0" xmlnsxsl"http//ww
w.w3.org/1999/XSL/Transform"gt - ltxsltemplate match"/"gt
- lthtmlgtltbodygt
- ltxslapply-templates/gt
- lt/bodygtlt/htmlgt
- lt/xsltemplategt
- ltxsltemplate match"livre"gt
- ltpgtUn livrelt/pgt
- lt/xsltemplategt
- lt/xslstylesheetgt
- En appliquant cette feuille de style au
document précédent, on obtient - Un livre
- Un livre
Attention si on inclut du balisage, la feuille
de style doit être du XML bien formé
11Valeur d'un élément value-of
- Mais on n'a pas le contenu des éléments
- ltxslvalue-of select"pattern"
disable-output-escaping"yes"/gt - Permet d'insérer le contenu de la balise
sélectionnée ou de l'attribut sélectionné par le
pattern. - Le pattern peut définir
- une chaîne,
- un élément (la valeur générée sera le texte
contenu dans l'élément), - un attribut (la valeur sera celle de l'attribut).
- Eventuellement, remplace les séquences
d'échappement ... par leurs caractères
équivalents.
12Exemple la feuille xsl
- lt?xml version"1.0"?gt
- ltxslstylesheet version"1.0" xmlnsxsl"http//ww
w.w3.org/1999/XSL/Transform"gt - ltxsltemplate match"/"gt
- lthtmlgtltbodygt
- ltxslapply-templates/gt
- lt/bodygtlt/htmlgt
- lt/xsltemplategt
- ltxsltemplate match"livre"gt
- Un livre
- ltxslvalue-of select"titre"/gt
- lt/xsltemplategt
- lt/xslstylesheetgt
- En appliquant cette feuille de style au
document précédent, on obtient - Un livre Fondation
- Un livre Les Robots
xslvalue-of permet de récupérer la valeur
contenue entre les balises XML de l'arbre de
données
13Appliquer des modèles apply-templates
- Jusqu'ici on a utilisé apply-templates sans
sélectionner de pattern, les template ont donc
été appliqués à partir de la racine. - Par défaut, le processeur XSLT lit le document
XML d'entrée de haut en bas séquentiellement, une
règle pour un élément est donc activée avant les
règles correspondant à ses sous-éléments. - On peut changer cet ordre de parcours et
spécifier quels éléments devront être traités
après, ou au milieu du traitement d'un autre
élément, ainsi que les nuds sur lesquels on veut
appliquer ces traitements, grâce à l'attribut
select de apply-templates.
14Exemple la feuille xsl
- On veut lister les auteurs du document, en
affichant d'abord leur nom de famille puis leur
prénom. - lt?xml version"1.0"?gt
- ltxslstylesheet version"1.0" xmlnsxsl"http//ww
w.w3.org/1999/XSL/Transform"gt - ltxsltemplate match"/"gt
- lthtmlgtltbodygtltxslapply-templates/gtlt/bodygtlt/htmlgt
- lt/xsltemplategt
- ltxsltemplate match"auteur"gt
- ltxslvalue-of select"nom"/gtltbr/gt
- ltxslvalue-of select"prenom"/gtltbr/gt
- lt/xsltemplategt
- lt/xslstylesheetgt
- Ce n'est pas suffisant le résultat contiendra
les noms, prénoms des auteurs mais aussi les
titres et genres des livres !!!
1er essai
15Exemple la feuille xsl
- Il faut rajouter une règle pour livre indiquant
d'appliquer les template seulement aux - sous-éléments auteur et pas aux
sous-éléments titre et genre. - lt?xml version"1.0"?gt
- ltxslstylesheet version"1.0" xmlnsxsl"http//ww
w.w3.org/1999/XSL/Transform"gt - ltxsltemplate match"/"gt
- lthtmlgtltbodygtltxslapply-templates/gtlt/bodygtlt/htmlgt
- lt/xsltemplategt
- ltxsltemplate match"livre"gt
- ltxslapply-templates select"auteur"/gt
- lt/xsltemplategt
- ltxsltemplate match"auteur"gt
- ltxslvalue-of select"nom"/gtltbr/gt
- ltxslvalue-of select"prenom"/gtltbr/gt
- lt/xsltemplategt
- lt/xslstylesheetgt
OK !
16Exemple la feuille xsl
- Si on ne veut rien afficher pour les genre et
auteur, on peut également spécifier dans le
premier apply-templates exécuté qu'on ne veut
lancer que le template des nuds auteur. - lt?xml version"1.0"?gt
- ltxslstylesheet version"1.0" xmlnsxsl"http//ww
w.w3.org/1999/XSL/Transform"gt - ltxsltemplate match"/"gt
- lthtmlgtltbodygt
- ltxslapply-templates select"auteur"/gt
- lt/bodygtlt/htmlgt
- lt/xsltemplategt
- ltxsltemplate match"auteur"gt
- ltxslvalue-of select"nom"/gtltbr/gt
- ltxslvalue-of select"prenom"/gtltbr/gt
- lt/xsltemplategt
- lt/xslstylesheetgt
Ça ne marche pas ! Pourquoi ???
Parce que auteur n'est pas accessible directement
à partir de la racine !
17Exemple la feuille xsl
- Si on ne veut rien afficher pour les titres et
genre, on peut également spécifier dans le
premier apply-templates exécuté qu'on ne veut
lancer que le template des nuds auteur. - lt?xml version"1.0"?gt
- ltxslstylesheet version"1.0" xmlnsxsl"http//ww
w.w3.org/1999/XSL/Transform"gt - ltxsltemplate match"/"gt
- lthtmlgtltbodygt
- ltxslapply-templates select"auteur" /gt
- lt/bodygtlt/htmlgt
- lt/xsltemplategt
- ltxsltemplate match"auteur"gt
- ltxslvalue-of select"nom"/gtltbr/gt
- ltxslvalue-of select"prenom"/gtltbr/gt
- lt/xsltemplategt
- lt/xslstylesheetgt
Ça ne marche pas ! Pourquoi ???
Parce que auteur n'est pas accessible directement
à partir de la racine !
On peut remplacer par select "livres/livre/auteu
r" par exemple
18Exemple la feuille xsl
- lt?xml version"1.0"?gtÂ
- ltxslstylesheet version"1.0" xmlnsxsl"http//ww
w.w3.org/1999/XSL/Transform"gt - Â Â ltxsl template match"/"gtÂ
- lthtmlgtltbodygt
- Â Â Â Â Â ltxslapply-templates select"livres"/gtÂ
- lt/bodygtlt/htmlgt
- Â Â lt/xsltemplategtÂ
- Â Â ltxsltemplate match"livres"gtÂ
- Â Â Â Â Â Â Â Â Â Â Â ltxslapply-templates
select"livre"/gt -     lt/xsltemplategtÂ
- Â Â ltxsltemplate match"livre"gtÂ
- Â Â Â Â Â Titre ltbgtltxslvalue-of select"titre"/gtlt/bgt
ltbr/gt -      Auteur ltbgtltxslvalue-of select"auteur/nom"
/gtlt/bgt - ltxsltextgt lt/xsltextgt
- ltbgtltxslvalue-of select"auteur/prenom"/gtlt/b
gtltbr/gt -      Genre ltbgtltxslvalue-of select"genre"/gtlt/bgt
ltbr/gtltbr/gt -   lt/xsltemplategtÂ
- lt/xslstylesheetgt
19xsltext
- xsltext génère le texte spécifié sans enlever
des "blancs" et sur option, remplace les
séquences d'échappement ... par leurs
caractères. - ltxsltext disable-output-escaping"yes"gt texte
lt/xsltextgt génère intégralement le texte
spécifié en sortie, en particulier les "blancs"
éventuellement, remplace les séquences
d'échappement ... par leurs caractères
équivalents.
20Attributs
- Si un élément dans le document XML possède des
attributs - Â Â Â Â Â _at_nom_attribut indique la valeur de
l'attribut. - Par exemple,
- ltxslvalue-of select"_at_naissance"/gt
- affiche la valeur de l'attribut naissance pour
l'auteur sélectionné - (à condition que l'élément courant possède un
attribut naissance).
21Règles par défaut
- lt?xml version"1.0"?gt
- ltxslstylesheet version"1.0" xmlnsxsl"http//ww
w.w3.org/1999/XSL/Transform"gt - ltxsltemplate match"/"gt
- ltxslapply-templates/gt
- lt/xsltemplategt
- ltxsltemplate match"text()_at_"gt
- ltxslvalue-of select"."/gt
- lt/xsltemplategt
- ltxsltemplate match"processing-instruction()
comment()"/gt - lt/xslstylesheetgt
Récursivité sur les éléments applique les
template pour les nuds fils de la racine et de
chaque élément.
Affichage du texte des éléments et des valeurs
d'attributs
ignore les commentaires et les processing-instruct
ions
22Exercice
- Ecrire un fichier XML et un fichier XSL
permettant de décrire et d'afficher des
informations sur des groupes musicaux (style de
musique, nom du groupe, instrumentistes
principaux) sous forme de tableau. - Exemple en affichant nom du groupe et guitariste
23Exercice
- groupes.xml
- lt?xml version"1.0" encoding"ISO-8859-1" ?gt
- lt?xml-stylesheet type"application/xml"
href"groupes.xsl"?gt - ltgroupesgt lt!--association pour le
navigateur--gt - ltgroupe type"punk"gt
- ltnomgtThe Clashlt/nomgt
- ltchantgtJoe Strummerlt/chantgt
- ltbassegtPaul Simononlt/bassegt
- ltguitaregtMick Joneslt/guitaregt
- ltbatteriegtTerry Chimeslt/batteriegt
- lt/groupegt
- ltgroupe type"rock"gt
- ltnomgtThe Policelt/nomgt
- ltguitaregtAndy Summerslt/guitaregt
- ltchantgtStinglt/chantgt
- ltbatteriegtStewart Copelandlt/batteriegt
- lt/groupegt
- lt/groupesgt
24Autres fonctions XSLT ltxslfor-eachgt
- ltxslfor-each select"pattern"gttransformationslt/xs
lfor-eachgt - Sélectionne tous les éléments fils à l'aide de
l'attribut select, puis pour chacun, en fait le
noeud courant auquel sont appliquées les
transformations spécifiées. - Permet de faire une boucle quand il n'est pas
pratique de lancer les template récursivement
(bien pour un traitement localisé)
25Autres fonctions XSLT ltxslfor-eachgt
- lt?xml version"1.0"?gt
- ltxslstylesheet xmlnsxsl"http//www.w3.org/1999/
XSL/Transform" version"1.0"gt - ltxsltemplate match"/"gt
- lthtmlgt
- ltheadgtlttitlegtGroupeslt/titlegtlt/headgt
- ltbodygt
- lttable border"1" bgcolor"white"gt
- lttrgt
- lttdgtNomlt/tdgt
- lttdgtGuitarelt/tdgt
- lt/trgt
- ltxslfor-each select"groupes/groupe"gt
- lttrgt
- lttdgtltxslvalue-of select"nom"/gtlt/tdgt
- lttdgtltxslvalue-of select"guitare"/gtlt/tdgt
- lt/trgt
- lt/xslfor-eachgt
- lt/tablegt
- lt/bodygt
26Autres fonctions XSLT ltxslifgt
- ltxslif test"pattern"gt transformations lt/xslifgt
- les transformations ne sont appliquées au noeud
courant que si l'évaluation du pattern (prédicat
XPath) donne la valeur "vrai". - ltxsltemplate match"groupe"gt
- ltxslif test"nom 'The Police' "gt
- ltxsltextgtActu le groupe lt/xsltextgt
- ltxslvalue-of select"./nom"/gt
- ltxsltextgt se reforme !!!lt/xsltextgt
- lt/xslifgt
- lt/xsltemplategt
Attention pas de else !!! Il faut utiliser le
choose
27Autres fonctions XSLT ltxslchoosegt, ltxslwhengt,
ltxslotherwisegt
- ltxslchoosegt plusieurs transformations xslwhen
transformation xslotherwise lt/xslchoosegt - Les transformations xslwhen ou xslotherwise
s'appliquent au même noeud courant. Dès qu'une
transformation xslwhen ou une transformation
xslotherwise s'applique, la transformation
xslchoose se termine. - ltxslwhen test"pattern"gt transformations
lt/xslwhengt - les transformations ne sont appliquées au noeud
courant que si l'évaluation du pattern (prédicat
XPath) donne la valeur vrai. - ltxslotherwisegt transformations lt/xslotherwisegt
- les transformations ne sont appliquées au noeud
courant que si aucune transformation xslwhen ne
s'applique.
28Autres fonctions XSLT ltxslchoosegt, ltxslwhengt,
ltxslotherwisegt
- ltxsltemplate match"groupe"gt
- ltxslchoosegt
- ltxslwhen test"nom 'The Police' "gt
- ltxsltextgtActu le groupe lt/xsltextgt
- ltxslvalue-of select"./nom"/gt
- ltxsltextgt se reforme
!!!lt/xsltextgtltbr/gt - lt/xslwhengt
- ltxslotherwisegt
- ltxsltextgtHélas le groupe lt/xsltextgt
- ltxslvalue-of select"nom"/gt
- ltxsltextgt n'est plus.lt/xsltextgtltbr/gt
- lt/xslotherwisegt
- lt/xslchoosegt
29Autres fonctions XSLT ltxslnumbergt
- ltxslnumber count"pattern" level"singlemulti
pleany" format"chaine"/gt - Insère en "output" un numéro incrémenté.
- Par défaut, sur les noeuds courants, sinon ceux
sélectionnés par le pattern. - Avec une numérotation sur un seul (single) niveau
de l'arborescence du document initial, ou sur
plusieurs (multiple) niveaux, ou sans tenir
compte (any) des niveaux. - Les formats et valeurs initiales de numérotation
sont donnés par la chaîne. - ltxsltemplate match"groupe"gt
- ltxslnumber level"multiple" format"1."/gt
- ltxslvalue-of select"nom"/gtltbr/gt
- lt/xsltemplategt
30Autres fonctions XSLT ltxslsortgt
- ltxslsort select"pattern" lang"langue"
data-type"textnumber" order"ascendingdescen
ding"/gt - xslsort doit figurer juste après
xslapply-templates ou xslfor-each ou xslsort.
Le tri s'effectue sur les valeurs du pattern
spécifié. - Peuvent être précisés la langue, ordre
lexicographique (par défaut) ou numérique, ordre
ascendant (par défaut) ou descendant. - ltxslapply-templates select"groupe"gt
- ltxslsort select"nom" order"descending"/gt
- lt/xslapply-templatesgt
Attention dans ce cas on ne ferme pas le
xslapply-templates avant le xslsort !!
31Fonction sans paramètre (xsltemplate et
xslcall-template)
- Pour déclarer une fonction, on utilise la
fonction ltxsltemplategt - ltxsltemplate name"hello_world"gt
- ltxsltextgtHello World !lt/xsltextgt
- lt/xsltemplategt
- On appelle la fonction avec ltxslcall-templategt
- ltxslcall-template name"hello_world" /gt
32Fonction avec paramètres (xslparam et
xslwith-param)
- Déclaration d'un paramètre
- ltxslparam name"nom"gtvaleurlt/xslparamgt
- Si l'attribut select est employé, alors l'élément
devra être vide - ltxslparam name"nom" select"expression" /gt
- On accède à la valeur d'un paramètre par
l'intermédiaire de son nom précédé du signe
dollar . - A l'appel de la fonction, les paramètres sont
passés avec ltxslwith-paramgt - ltxslcall-template name"nom_fonction"gt
- ltxslwith-param name"a" select"valeur_de_a"
/gt - ltxslwith-param name"b"gtvaleur_de_blt/xslwith
-paramgt - lt/xslcall-templategt
33Exercice
- Ecrire une fonction permettant d'afficher deux
nombres (paramètres) et leur somme, ainsi que
l'appel de cette fonction sur des paramètres a et
b dont on fixera les valeurs.
34Solution
- ltxsltemplate name"affiche_somme"gt
- ltxslparam name"a" select"0"/gt
- ltxslparam name"b" select"0"/gt
- ltxsltextgta lt/xsltextgt
- ltxslvalue-of select"a"/gt
- ltxsltextgtb lt/xsltextgt
- ltxslvalue-of select"b"/gt
- ltxsltextgt, et ab lt/xsltextgt
- ltxslvalue-of select"ab"/gt
- ltxsltextgt.lt/xsltextgt
- lt/xsltemplategt
- A l'appel
- ltxslcall-template name"affiche_somme"gt
- ltxslwith-param name"a" select"173"/gt
- ltxslwith-param name"b"gt9001lt/xslwith-paramgt
- lt/xslcall-templategt
35xslcopy, xslelement, xslattribute
- Si on crée un document xml en sortie, on peut
avoir besoin de copier ou de créer des éléments
et attributs. - ltxslcopygt transformations lt/xslcopygt
- copie le noeud courant dans le document final,
mais pas ses attributs, ni ses descendants ces
dernières sont à charge des transformations. - ltxslelement name"nom"gt transformations
lt/xslelementgt - crée un élément du nom spécifié dans le document
final. - ltxslattribute name"nom"gt valeur
lt/xslattributegt - crée et ajoute un attribut du nom et de la valeur
spécifiés à l'élément courant.
36 pour remplacer ltxslvalue-ofgt
- pattern
- fonctionne comme ltxslvalue-of select"pattern"/gt
- Utile dans certains cas pour éviter d'avoir un
document mal formé à cause de mauvaise
imbrications - ltxsltemplate match"groupe"gtlta
href"ltxslvalue-of select"nom"/gt.html"gt - n'est pas bien formé
XML ! - On le remplace par ltxsltemplate match"groupe"gt
lta href"nom.html"gt - nom est équivalent à ltxslvalue-of
select"nom"/gt - Ca marche aussi pour les attributs _at_ligne
37Gestion des blancs
- On peut spécifier comment gérer les blancs
apparaissant dans le document xml source. - ltxslstrip-space elements"liste_d_éléments" /gt
- ltxslpreserve-space elements"liste_d_éléments"
/gt - xslstrip-space (inversement à xslpreserve-space)
indique dans le document xml source quel sont
les sous-arbres de racine figurant dans la
liste_d_éléments, où sont éliminés (resp.
préservés) les éléments "text" à blanc. - Ces instructions peuvent permettre de faire des
copies d'éléments "propres" (par exemple quand on
veut récupérer des balises html dans un document
xml).
38Visualiser les résultats d'une feuille xsl
- On peut référencer la feuille xsl dans le
document xml - lt?xml-stylesheet type"application/xml"
href"feuille.xsl"?gt - pour que le navigateur web associe la
feuille de style directement à l'affichage du
document xml (ne pas oublier lthtmlgt et ltbodygt
dans la feuille de style). - On peut utiliser un processeur XSLT indépendant
et récupérer un document de sortie. Alors le
format de sortie est indiqué par ltxsloutputgt - ltxsloutput method"xmlhtmltext..."
encoding"codage" indent"yesno" /gt - définit le format du document produit, avec
éventuellement l'indentation adéquate. - Processeurs XSLT Saxon (en java, installé en
D13), XT,
39Remarque espaces/domaines de nom
- Les éléments XSL sont des balises XML préfixées
par le namespace xsl. - exemple ltxsltemplategt
- Dans ltxsltemplategt le préfixe xsl indique que
l'élément template fait partie de xsl, le préfixe
et le nom de l'élement sont toujours séparés par
- Espaces/domaines de noms (namespaces)
- Un nom d'élément peut être divisé en deux parties
- domaine_de_nomnom_element
- L'utilisation des espaces/domaines de noms n'est
pas obligatoire, mais elle permet d'éviter les
collisions lorsque l'on fusionne plusieurs
éléments de mêmes domaines d'activité provenant
de plusieurs sources.
40Déclaration des espaces de noms
- Où les espaces de noms peuvent déclarés dans
les éléments contenant les préfixes d'espace de
noms, ou pour plus de clarté dans l'élément
racine - Comment par l'intermédiaire de l'attribut
xmlns. - ltespace_de_nomelement xmlnsespace_de_nom"URI"gt
-
- lt/espace_de_nomelementgt
- l'URI (Uniform Resource Identifier) permet
d'associer une adresse internet à l'espace de
noms - ltxslstylesheet xmlnsxsl"http//www.w3.org.XSL/T
ransform/1.0"gt