From: Eric van der Vlist (vdv@dyomedea.com)
Date: 07/01/2004 - 12:23
Bonjour,
On Wed, 2004-01-07 at 13:08, Alexandre Arcouteil wrote:
> (Bonne année tout le monde)
>
> Je cherche, pour un noeud quelconque, à capturer son chemin depuis le
> noeud racine.
>
> Pour l'instant j'utilise un template de ce genre :
>
> <xsl:template match="*">
> <chemin>
> <xsl:for-each select="ancestor::node()[name() != '']">/<xsl:value-of
> select="name()"/></xsl:for-each>
> </chemin>
> </xsl:template>
Pour éviter le [name() != ''], tu peux utiliser "*" au lieu de node :
<xsl:for-each select="ancestor::*">/<xsl:value-of
select="name()"/></xsl:for-each>
Ton template n'identifiera pas le noeud mais son parent (si tu veux
identifier le noeud il fait utiliser ancestor-or-self
Note que c'est insuffisant pour identifier le noeud dans le document de
manière non ambiguë : dans le document
<foo>
<bar/>
<bar/>
</foo>
les deux noeuds "bar" ont le même chemin ("/foo/bar").
> Cela est bien sympathique, mais j'aurai aimé pouvoir utiliser (à la
> place du 'for-each') directement l'expression XPath dans quelque chose
> qui ressemble à cela :
>
> <xsl:value-of select="ancestor::node()"/>
>
> Le résultat n'est pas celui attendu (au mieux une chaîne vide, au pire,
> une sorte de copie du document entier), c'est surement normal,
Oui, <xsl:value-of/> donne la valeur du contenu du premier noeud de la
liste de noeuds sélectionnée converti en texte...
> mais au
> final je n'ai pas de solution pour indexer des node() en fonction de
> leur chemin depuis la racine.
Non, effectivement.
> Idéalement, j'aurais aimé pouvoir définir une clef de ce style :
>
> <xsl:key match="node()" use="ancestor::node()"/>
Je ne suis pas certain du résultat que tu veux obtenir, mais tel que je
le comprend, je pense que tu es coincé (il va falloir faire autrement)!
Eric
--
Have you ever thought about unit testing XSLT templates?
http://xsltunit.org
Upcoming XML schema languages tutorial:
- Santa Clara -half day- (15/03/2004) http://masl.to/?J24916E96
------------------------------------------------------------------------
Eric van der Vlist http://xmlfr.org http://dyomedea.com
(ISO) RELAX NG ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|