Xml Dtd Entités XPath Xsl 2

Xsl Stylesheet : éléments de premier niveau

 attribute-set  decimal-format  import  include  key  namespace-alias  output  param  preserve-space  strip-space  stylesheet  template  variable  liens

Balise Attributs Résumé
import
  • href="URI"
Importe la feuille de style spécifiée dans l'URI
include
  • href="URI"
Inclus la feuille de style spécifiée dans l'URI
Note : Importer ou inclure des feuilles de style revient à faire la même chose à l'exception du fait que les règles modèles et les définitions de la feuille de styles qui importe ont une préférence sur celles de la feuille de styles importée.
Les éléments fils de l'élément xsl:import doivent précéder tous les autres éléments fils de l'élément xsl:stylesheet, y compris n'importe quel élément fils de l'élément xsl:include . Lorsque xsl:include est utilisé pour inclure une feuille de styles, tous les éléments xsl:import du document inclus sont déplacés dans le document incluant cette feuille de styles et placés après tous les éléments xsl:import existant dans ce document.
strip-space
  • elements=tokens
Spécifie les nodes pour lesquels les nodes enfants ne contenant que des blancs (#x20, #x9, #xD ou #xA) sont à supprimer.
Cette suppression est faite une fois l'arbre pour le document source ou la feuille de styles construit, mais avant tout autre traitement XSLT.
Voir aussi : fonction normalize-space()
Note : Attribut de type TOKENS : séparation des valeurs par des blancs (elements="ARTICLE TITRE ITEM")
preserve-space
  • elements=tokens
Spécifie les nodes pour lesquels les nodes enfants ne contenant que des blancs sont à conserver.
output
  • method="xml" | "html" | "text"
  • version=nmtoken
  • encoding=string
  • omit-xml-declaration="yes" | "no"
  • standalone="yes" | "no"
  • doctype-public=string
  • doctype-system=string
  • cdata-section-elements=qnames
  • indent="yes" | "no"
  • media-type=string
Définit le format de sortie
key
  • name=qname
  • match=pattern
  • use=expression
Préparation d'un index en mémoire pour optimiser les références croisées.
Exemple d'utilisation :
Document XML
<?xml version="1.0"?>
<trucs>
  <couleurs>
   <couleur idc="c1">bleu</couleur>
   <couleur idc="c2">vert</couleur>
   <couleur idc="c3">gris</couleur>
  </couleurs>
  <truc codeCouleur="c3">Ceci est gris</truc>
  <truc codeCouleur="c2">Ceci est vert</truc>
  <truc codeCouleur="c1">Ceci est bleu</truc>
  <truc codeCouleur="c2">Ceci est vert</truc>
  <truc codeCouleur="c3">Ceci est gris</truc>
</trucs>
				
Feuille de style
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">
 <xsl:output method="html"/>
 <xsl:key name="CC" match="couleur" use="@idc" />
 <xsl:template match="/">
  <html><body><dl>
   <xsl:apply-templates />
  </dl></body></html>
 </xsl:template>
 <xsl:template match="couleurs" />
 <xsl:template match="truc">
  <dt><xsl:value-of select="key('CC',@codeCouleur)" /></dt>
  <dd><xsl:text /></dd>
  <xsl:apply-templates />
 </xsl:template>
</xsl:stylesheet>
				
Résultat HTML
gris
Ceci est gris
vert
Ceci est vert
bleu
Ceci est bleu
vert
Ceci est vert
gris
Ceci est gris
Note : Le nom de la clé (attribut name) est choisi arbitrairement
Voir aussi : fonction key()
decimal-format
  • name=qname
  • decimal-separator=char
  • grouping-separator=char
  • infinity=string
  • minus-sign=char
  • NaN=string
  • percent=char
  • per-mille=char
  • zero-digit=char
  • digit=char
  • pattern-separator=char
Déclare un format d'affichage des nombres. Si aucun nom (attribut name) n'est spécifié, ce format devient le format par défaut.
namespace-alias
  • stylesheet-prefix=prefix | "#default"
  • result-prefix=prefix | "#default"
Déclare un alias d'un URI d'espace de noms sur un autre URI. Permet de contourner le problème du préfixe xsl qui serait à générer dans un document de sortie lui-même feuille de style.
Exemple d'utilisation :
Document XML
<AAA>
<!-- Dans cet exemple, le document source n'est pas interprété -->
</AAA>
				
Feuille de style
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:alias="alias-namespace"
                version="1.0" >
 <xsl:output method="xml" indent="yes" />
 <xsl:namespace-alias stylesheet-prefix="alias" result-prefix="xsl" />
 <xsl:template match="/" >
  <alias:stylesheet version="1.0" >
  <alias:template match="/" >
   <alias:text>
    Hello, world!
   </alias:text>
  </alias:template>
  </alias:stylesheet>
 </xsl:template>
</xsl:stylesheet>
    
Résultat
<?xml version="1.0" encoding="UTF-8"?>
<alias:stylesheet
           xmlns:alias="http://www.w3.org/1999/XSL/Transform"
           version="1.0">
 <alias:template match="/">
  <alias:text>
    Hello, world!
  </alias:text>
 </alias:template>
</alias:stylesheet>
    
Note : L'utilisation de alias plutôt que de xsl est parfaitement conforme dans une feuille de style. L'équivalence est faite dans la balise initiale : xmlns:alias="http://...".
attribute-set
  • name=qname
  • use-attribute-sets=qnames
Définit un jeu d'attributs (spécifiés par le contenu). Ce jeu pourra ensuite être utilisé pour créer une balise sans répéter l'ensemble des attributs.
Cette balise contient une ou plusieurs balise(s) <xsl:attribute>.
Exemple d'utilisation :
Document XML
<AAA>
<!-- Dans cet exemple, le document source n'est pas interprété -->
</AAA>
				
Feuille de style
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0" >
 <xsl:output method="xml" indent="yes" />
 <xsl:attribute-set name="set1" >
  <xsl:attribute name="a" >1</xsl:attribute>
  <xsl:attribute name="b" >2</xsl:attribute>
 </xsl:attribute-set>
 <xsl:attribute-set name="set2" >
  <xsl:attribute name="cc" >33</xsl:attribute>
  <xsl:attribute name="dd" >44</xsl:attribute>
 </xsl:attribute-set>
 <xsl:attribute-set name="set3" >
  <xsl:attribute name="eee" >555</xsl:attribute>
  <xsl:attribute name="fff" >666</xsl:attribute>
 </xsl:attribute-set>
 <xsl:attribute-set name="set4" use-attribute-sets="set3" />
 <xsl:template match="/" >
  <xsl:element name="A" use-attribute-sets="set1 set2 set3" >
   <xsl:attribute name="xxx">valeur</xsl:attribute>
  </xsl:element>
 </xsl:template>
</xsl:stylesheet>
				
Résultat
<?xml version="1.0" encoding="UTF-8"?>
<A a="1" b="2" cc="33" dd="44" eee="555" fff="666" xxx="valeur"/>
				
Note : L'utilisation de l'attribut use-attribute-sets dans la balise attribute-set provoque l'utilisation des balises d'un autre jeu prédéfini (ici, set4 utilise les attributs de set3).
variable
  • name=qname
  • select=expression
Définition d'une variable. Une variable peut contenir tout type de donnée. L'attribut name définit le nom de la variable. La valeur de la variable peut se définir de deux façons :
  • Soit par le contenu de la balise (exemple : <variable name="deux">2</variable>).
  • Soit par l'expression contenue dans l'attribut select.
La référence à une variable se fait avec un dollar précédant son nom (ex: $deux).
Portée : la portée d'une variable est limitée au node où elle est utilisée.
Voir aussi : param
param
  • name=qname
  • select=expression
Définition d'un paramètre d'exécution. Le mécanisme est très proche de celui des variables. La différence se situe au niveau de la valeur, qui, pour le paramètre, est une valeur par défaut. La référence à un paramètre se fait avec un dollar précédant son nom (ex: $deux).
Exemple d'utilisation :
Document XML
<AAA>
<!-- Dans cet exemple, le document source n'est pas interprété -->
</AAA>
				
Feuille de style
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0" >
 <xsl:output method="text" />
 <xsl:template match="/" >
  <html><body>

<!-- appel de fonction -->
  <ul>
  <xsl:call-template name="print" >
   <xsl:with-param name="A" >11</xsl:with-param>
   <xsl:with-param name="B" >33</xsl:with-param>
  </xsl:call-template>

<!-- appel de fonction -->
  <xsl:call-template name="print" >
   <xsl:with-param name="A" >55</xsl:with-param>
  </xsl:call-template>
  </ul>

  </body></html>
 </xsl:template>

<!-- définition de fonction -->
 <xsl:template name="print" >
  <xsl:param name="A" />
  <xsl:param name="B" >111</xsl:param>
  <xsl:element name="li">
  <xsl:value-of select="$A" />
  <xsl:text > + </xsl:text>
  <xsl:value-of select="$B" />
  <xsl:text >=</xsl:text>
  <xsl:value-of select="$A+$B" />
  </xsl:element>
 </xsl:template>
</xsl:stylesheet>
				
Résultat
  • 11 + 33 = 44
  • 55 + 111 = 166
Voir aussi : variable, instruction with-param.
template
  • match=pattern
  • name=qname
  • priority=number
  • mode=qname
Définition d'une règle modèle de contruction du résultat pour la cible donnée (match).
Lorsque l'attribut name est indiqué, le template ne s'applique que sur appel extérieur par la balise call-template. En l'absence de nom, le modèle défini s'applique dès que la cible correspondante est rencontrée dans l'arbre source.
stylesheet
  • extension-element-prefixes=tokens
  • exclude-result-prefixes=tokens
  • version=number
L'élément stylesheet est la racine d'une feuille de style.

Liens internes
Liens externes