Imaginons un flux XML composé d'une collection d'une même famille (staff par exemple) et que vous souhaitez connaitre en XSL la position d'un noeud dans cette position à partir d'un prédicat where ([] en xPATH).
Reprenons le flux XML du billet précédent légèrement modifié:
<?xml version="1.0" encoding="UTF-8"?> <root> <View> <wandiz> <staff> <id>1</id> <name>Laurent Bientz</name> </staff> <staff> <id>2</id> <name>Florian Collot</name> </staff> <staff> <id>3</id> <name>Kevin Lancien</name> </staff> <staff> <id>4</id> <name>Nicolas Nowak</name> </staff> <staff> <id>5</id> <name>Jacques De Lamballerie</name> </staff> <staff> <id>6</id> <name>Katty Dida</name> </staff> <staff xp="iOs"> <id>7</id> <name>Loic Couharde</name> </staff> <staff> <id>8</id> <name>Julien Quievreux</name> </staff> <staff> <id>9</id> <name>Jean-Baptiste Chateaux</name> </staff> <!-- ... --> </wandiz> </View> </root>
Ici, nous souhaitons connaitre la position de Loic Couharde dans la collection wandiz/staff à partir de son xp "iOs" :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" xmlns="http://www.w3.org/1999/xhtml"> <xsl:template name="whereIsSteveJobs"> <xsl:variable name="iOsPosition" select="count(//View/wandiz/staff[@xp = 'iOs']/preceding-sibling::*)+1" /> Position n°<xsl:value-of select="$iOsPosition" /> in /wandiz/staff </xsl:template> </xsl:stylesheet>