From: Cyril Jandia (cjandia@logfi.fr)
Date: 04/07/2002 - 09:02
> De : Cyril Jandia
> À : xml-tech@xmlfr.org
> Objet : [xml-tech] Re: Expression Xpath
>
> > De : noel.jean-baptiste@courrier.uqam.ca
> > À : xml-tech@xmlfr.org
> > Objet : [xml-tech] Expression Xpath
> >
> > Bonjour,
> >
> > Soit le fichier xml suivant :
> > [...]Extrait du fichier xsl:
> > [...]Quelle pourrait être l'expression
> > [...]qui me permettrait d'obtenir le résultat suivant:
> > codePermanent
> > sexe
> > infoComplementaires/regime
> > infoComplementaires/fax
>
> Bonjour,
>
> C'est [un classique] pour l'usage de l'axe "ancestor-or-self" (cf. [axes
> XPath]);
> voici une transformation complète pour répondre à la question :
> [...]
Mmm... autant pour moi : cela ne répond pas *exactement* à la question en fait.
En effet, pour rappel, d'après cette entrée :
<etudiant>
<codePermanent></codePermanent>
<sexe></sexe>
<infoComplementaires>
<regime></regime>
<fax></fax>
</infoComplementaires>
</etudiant>
... on veut en sortie :
codePermanent
sexe
infoComplementaires/regime
infoComplementaires/fax
Or, la transformation de ma 1ère réponse génère :
codePermanent
sexe
infoComplementaires
infoComplementaires/regime
infoComplementaires/fax
Il faut donc remplacer :
<xsl:template match="*">...
par :
<xsl:template match="*[not(*)]">...
(une modification mineure ;=)
> <xsl:template match="*">
> <xsl:for-each select="ancestor-or-self::*[name()!='etudiant']">
> <xsl:choose>
> <xsl:when test="name(..)!='etudiant'">
> <xsl:value-of select="concat('/',name())" />
> </xsl:when>
> <xsl:otherwise><xsl:value-of select="name()" /></xsl:otherwise>
> </xsl:choose>
> </xsl:for-each><xsl:text>
</xsl:text>
> <xsl:apply-templates />
> </xsl:template>
>
> > Merci,
> > Djibi
>
> [un classique]
> http://www.dpawson.co.uk/xsl/sect2/N6052.html#d176e57
>
> [axes XPath]
> http://xmlfr.org/w3c/TR/xpath#axes
>
> Cordialement,
> --CJ
--CJ
--
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
|