Skip to content

XSL : d’un noeud à l’autre avec XPath — N°5b/XXX

27/01/2010

Syntaxe d’ensemble : le langage XPath

ancestor Indique tous les ancêtres du nœud de contexte, depuis le nœud parent jusqu’au nœud racine.
ancestor-or-self Indique le nœud de contexte et tous ses ancêtres, y compris le nœud racine.
attribute Indique les attributs du nœud de contexte. Seuls les éléments ont des attributs.Cet axe peut être abrégé avec le signe arobase (@).
child Indique les enfants du nœud de contexte. Si une expression XPath ne spécifie pas d’axe, c’est l’axe choisi par défaut (le slash suffit à signifier qu’on désigne un noeud enfant). Comme seuls le nœud racine et les nœuds element ont des enfants, toute autre utilisation ne sélectionnera rien.
descendant Indique tous les nœuds enfants du nœud de contexte, et tous leurs enfants, et ainsi de suite. Les nœuds attribute ne sont pas compris – le parent d’un nœud attribute est un nœud element, mais les nœuds attribute ne sont pas les enfants de leur parent (càd que quand on sélectionne tous les enfants d’un noeud, les noeuds attribute ne sont pas compris dedans).Peut être abrégé en : .//
(le "." signifie qu’on se place dans le nœud contexte, et le double-slash que l’on va choisir un élément descendant de ce nœud contexte, où qu’il se trouve
descendant-or-self Indique le nœud de contexte et tous ses descendants. Les nœuds attribute ne sont pas compris – le parent d’un nœud attribute est un nœud element, mais les nœuds attribute ne sont pas les enfants de leur parent.
following Indique tous les nœuds situés après le nœud de contexte, exceptés les nœuds descendant, attribute.
following-sibling Indique tous les nœuds qui ont le même parent que le nœud de contexte mais qui
apparaissent après lui dans le document source.
parent Indique le nœud parent du nœud de contexte.Il peut être abrégé par deux points : ..
preceding Indique tous les nœuds qui précédent le nœud de contexte dans le document, exceptés les nœuds ancestor et attribute
preceding-sibling Indique tous les nœuds qui ont le même parent que le nœud de contexte mais qui
apparaissent avant lui dans le document source.
self Indique le nœud de contexte lui-même. Il peut être abrégé par un point : .

(liste reprise et ajustée à partir de cette page)

Je ne vais pas illustrer chacune des lignes ci-dessus. Si vous ressentez le besoin immédiat d’approfondir ce que signifie la syntaxe XPath, Internet regorge de documentation (à commencer par l’article Wikipedia). Mais nous aurons tout le loisir d’en avoir des applications multiples par la suite.

Petit exercice

Vous souhaitez savoir (je vous assure : cela vous intéresse) si les communes ayant 0 inscrit en 2005 en sont restés à ce stade en 2008.

Rédigez une feuille XSL qui vous permette d’afficher les noms et nombre d’inscrits en 2008, pour toutes les communes ayant 0 inscrit en 2005.

Pour cela, il faut écrire une feuille XSL (vous pouvez reprendre et corriger celles que je vous fournis déjà !) qui :

  1. sélectionne tous les noeuds an2005/inscrits dont la valeur est 0
  2. récupère l’attribut @nom de l’ancêtre <ville> de chacun de ces noeuds
  3. définisse, en partant de an2005/inscrits, le chemin pour remonter à <ville>, puis redescendre vers an2008/inscrits
Le chemin vers la connaissance est parfois tortueux

Un indice

Pour ceux qui nous regardent depuis chez eux, voici l’indice visible au bas de l’écran :

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform&quot; version="1.0">
<xsl:template match="/">
<xsl:for-each select="//an2005/inscrits[.=’0′]">
<xsl:value-of select="ancestor::ville/@nom"/>
<xsl:text> : </xsl:text>
<xsl:value-of select="Nombre d’inscrits en 2008"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

Vous pouvez récupérer le code ci-dessus comme fichier XSL, et modifier juste la valeur en gras pour y mettre le chemin vers le nombre d’inscrits en 2008…

Advertisements
%d blogueurs aiment cette page :