Numérotons :
| feuille16.xsl | appliquée sur atomes.xml --> résultat |
<xsl:template match="classification_atomique">
<html><body>
<xsl:apply-templates/>
</body></html>
</xsl:template>
<xsl:template match="atome">
<xsl:number format="a"/>
<xsl:text>. </xsl:text>
<xsl:value-of select="nom"/>
<xsl:text> </xsl:text>
<xsl:value-of select="symbole"/>
<xsl:text> </xsl:text>
<xsl:value-of select="type"/>
<xsl:text disable-output-escaping="yes">
<br></xsl:text>
</xsl:template>
|
<html>
<body>
a. hydrogène H<br>
b. hélium He gaz rare<br>
c. lithium Li métal alcalin<br>
d. bérillium Be
métal alcalino-terreux<br>
e. bore B non métal<br>
f. carbone
....
|
Le template "atome" sera numérotée à partir de la valeur "a". A chaque application du template, le numéro est incrémenté.
| feuille17.xsl | appliquée sur famille_atome.xml --> résultat |
<xsl:template match="famille|atome">
<xsl:number count="famille|atome"
level="multiple" format="A.1"/>
<xsl:text>. </xsl:text>
<xsl:choose>
<xsl:when test="local-name(.)='famille'">
<xsl:value-of select="@type"/>
<xsl:text disable-output-escaping="yes">
<br></xsl:text>
<xsl:apply-templates/>
</xsl:when>
<xsl:when test="local-name(.)='atome'">
<xsl:value-of select="name"/>
<xsl:text> </xsl:text>
<xsl:value-of select="symbole"/>
</xsl:when>
</xsl:choose>
<xsl:text disable-output-escaping="yes">
<br></xsl:text>
</xsl:template>
|
<html>
<body>
A. gaz rare<br>
A.1. He<br>
A.2. Ne<br>
A.3. Ar<br>
<br>
B. métal alcalin<br>
B.1. Li<br>
B.2. Na<br>
<br>
C. métal
....
|
Içi, "on numérote" les noeuds atome
et famille en préçisant sur plusieurs (multiple)
niveaux. Les niveaux coïncident avec la structure arborescente.
Les formats et valeurs initiales de numérotation sont données
par "A.1".
Remarquons que local-name(.) du langage XPath
permet de distinguer entre les éléments famille
et atome.
<xsl:number [count="pattern"]
[level="single|multiple|any"] [format="chaine"]/>
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ées
par la chaine.
Reprendre l'exercice 10, pour obtenir la numérotation ci-dessous :
$ java Transform feuille17exo.xsl famille_atome.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<classification_atomique>
<famille><nom numero="A">gaz rare</nom>
<atome numero="A.a" masse="4">hélium</atome>
<atome numero="A.b" masse="20">néon</atome>
<atome numero="A.c" masse="40">argon</atome>
</famille>
<famille><nom numero="B">métal alcalin</nom>
<atome numero="B.a" masse="7">lithium</atome>
<atome numero="B.b" masse="23">sodium</atome>
</famille>
<famille><nom numero="C">métal alcalino-terreux</nom>
...