En effet, et la solution est encore plus simple,
sur votre exemple, le xsl suivant :
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="root|A">
<xsl:copy>
<xsl:copy-of select="@id"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Produit :
<root>
<A id="context">
<A id="1">
<A id="1.1"/>
<A id="1.2"/>
</A>
<A id="2"/>
<A id="3">
<A id="3.1"/>
</A>
</A>
</root>
N'est ce pas le résultat que vous escomptez ?
Stéphane.
Tiscar Sebastien wrote:
>faux car on risque de récupérer plusieurs fois les mêmes éléments A
>à des niveaux différents
>il faut je pense executer un template de manière récursive sur chaque
>élément A qui s executera ensuite sur les enfants et ainsi de suite.
>
>
>Sébastien TISCAR ASTASIO
>
>
>
>----- Original Message -----
>From: "Stéphane Bonhomme" <s.bonhomme@xxxxxxxxxx>
>To: <xml-tech@xxxxxxxxx>
>Sent: Friday, September 23, 2005 9:31 AM
>Subject: [xml-tech] Re: récupérer tous les enfants (directs ou "indirects")
>de premiers niveau ?
>
>
>Bonjour,
>
>Le template suivant devrait convenir (avec conservation de l'attribut id)
>
><xsl:template match="root|A">
> <xsl:copy>
> <xsl:copy select="@id"/>
> <xsl:apply-templates select=".//A"/>
> </xsl:copy>
></xsl:template>
>
>Stéphane.
>
>Matthieu Ricaud wrote:
>
>
>
>>Bonjour !
>>
>>J'ai un problème de requête xpath, il y a peut être une solution évidente
>>mais je ne la voit pas...
>>Le sujet n'étant pas très clair je m'explique.
>>Soit le xml suivant :
>><root>
>> <A id="context">
>><foo>
>> <A id="1">
>> <A id="1.1"/>
>> <bar>
>> <A id="1.2"/>
>> </bar>
>> </A>
>> </foo>
>> <A id="2"/>
>> <fred>
>> <waldo>
>><A id="3">
>><A id="3.1"/>
>> </A>
>> </waldo>
>> </fred>
>> </A>
>></root>
>>
>>J'ai réjouté ici des id histoire de clarifier les choses mais il n'y en a
>>pas dans mon cas réél.
>>A partir du noeud <A id="context"> je voudrais récupérer "chaque premier
>>enfant A recontré" c'est à dire ici :
>><A id="1">
>><A id="2">
>><A id="3">
>>
>>En fait j'aimerais récupérer la hiérarchie des noeuds A en faisant
>>abstraction des autres neouds foo, bar, fred etc...
>>
>>J'imagine quelque chose de ce type :
>>
>><xsl:template match="root">
>> <xsl:for-each select="A//A[prédicat indiquant qu'il n'y a pas de noeud A
>>entre les deux]">
>> A<xsl:value-of select="@id"/>
>> </xsl:for-each/>
>></xsl:template>
>>
>>Si quelqu'un a une idée ?
>>Merci d'avance,
>>
>>Matthieu.
>>
>>
>>--
>>Devenez redacteur <XML>fr et contribuez au developpement du
>>xml francophone (http://xmlfr.org/infos/redacteurs/) !
>>
>>Liste de diffusion "xml-tech@xxxxxxxxx" (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@xxxxxxxxx
>>(mailto:xml-tech-request@xxxxxxxxx?Subject=unsubscribe)
>>
>>
>>
>>
>>
>>
>
>
>--
> Stéphane Bonhomme -- Exselt Services
>
>Formations, Conseil et Réalisations en Ingénierie Documentaire,
> Technologies Web et Logiciels Libres
> s.bonhomme@xxxxxxxxxx - http://www.exselt.com
> 04 76 17 09 40 / 06 88 57 27 08
>
>
>
>--
>Devenez redacteur <XML>fr et contribuez au developpement du
>xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
>Liste de diffusion "xml-tech@xxxxxxxxx" (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@xxxxxxxxx
>(mailto:xml-tech-request@xxxxxxxxx?Subject=unsubscribe)
>
>
>
>
>--
>Devenez redacteur <XML>fr et contribuez au developpement du
>xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
>Liste de diffusion "xml-tech@xxxxxxxxx" (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@xxxxxxxxx
>(mailto:xml-tech-request@xxxxxxxxx?Subject=unsubscribe)
>
>
>
>
--
Stéphane Bonhomme -- Exselt Services
Formations, Conseil et Réalisations en Ingénierie Documentaire,
Technologies Web et Logiciels Libres
s.bonhomme@xxxxxxxxxx - http://www.exselt.com
04 76 17 09 40 / 06 88 57 27 08
|
|