Utilisation de variable pour attributs et éléments
Bonjour,
Cette discussion fait suite à la demande thelvin d'ouvrir un fil suite à une remarque que j'ai fait dans cette discussion:
http://www.developpez.net/forums/d13...s/#post7378375
Je disais que les attributs dans certaines opérations étaient mal supportés dans XSLT1.0 et 1.1.
A ce titre je vous recommande la lecture de ce très bon article d'IBM qui avance des arguments solides pour le choix entre elements et attributs:
http://www.ibm.com/developerworks/li...att/index.html
Voici l'exemple en question sur le quel je suis tombé lors d'un projet:
source XML
Code:
1 2 3 4
| <?xml version="1.0" encoding="UTF-8"?>
<test>
<elt cat="A">A</elt>
</test> |
feuille de style 1 (plante en beauté)
Code:
1 2 3 4 5 6 7 8
| <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/test">
<xsl:variable name="Categorie">A</xsl:variable>
<xsl:for-each select="./elt/[@cat=$Categorie]">
<xsl:text>Attribut A détecté</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet> |
feuille de style 2 (fonctionne)
Code:
1 2 3 4 5 6 7 8
| <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/test">
<xsl:variable name="Categorie">A</xsl:variable>
<xsl:for-each select="./elt[.=$Categorie]">
<xsl:text>Element A détecté</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet> |
je viens de faire le test avec MSXSL. Cet exemple sur lequel je suis tombé au cours d'un projet m'a laissé penser que les attributs et les éléments n'étaient pas vraient équivalents en XML vis à vis de XSLT1 et autres. Par contre dans mon souvenir ceci est corrigé en XSLT2.
On me pardonnera la pauvre qualité du code pour produire cet exemple, je fais au plus vite.