si tu veux utiliser position, remplaces ton XSL :
Code :
- <?xml version="1.0" encoding="iso-8859-1"?>
- <xsl:stylesheet
- version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <xsl:template match="/table">
- <html>
- <body>
- <table>
- <xsl:apply-templates select="line" />
- </table>
- </body>
- </html>
- </xsl:template>
-
- <xsl:template match="line">
- <tr>
- <xsl:apply-templates select="col" />
- </tr>
- </xsl:template>
-
- <xsl:template match="col">
- <xsl:variable name="pos">
- <xsl:value-of select="position()" />
- </xsl:variable>
- <td>
- <xsl:attribute name="align">
- <xsl:value-of select="/table/col_info[position()=$pos]/@align" />
- </xsl:attribute>
- <para>
- <xsl:value-of select="para" />
- </para>
- </td>
- </xsl:template>
-
- </xsl:stylesheet>
|
c'est équivalent à l'autre code...
ton code à toi ne marche pas, car une fois que tu es dans le noeud /table/col_info, tu ne peux pas récupérer la position du noeud col, à moins de le conserver en variable ou en paramètre :
ici, je suis dans le noeud col et je garde sa position dans le paramètre $pos
Code :
- <xsl:variable name="pos">
- <xsl:value-of select="position()" />
- </xsl:variable>
|
maintenant, je ne suis plus dans le noeud col puisque je considère /table/col_info, donc position() me renvoie ma position dans /table/col_info et à moi de la comparer avec celle que j'avais stocké dans $pos :
Code :
- <xsl:value-of select="/table/col_info[position()=$pos]/@align" />
|