Moi je ferais comme ça,
Mais y'a certainement lpus simple :)
<xsl:template match="parent">
<xsl:apply-templates select="sibling-précédent"/>
</xsl:template>
<xsl:template match="sibling-précédent">
<xsl:copy-of select="."/>
<details>
<xsl:apply-templates
select="following-sibling::detail[generate-id(preceding-sibling::sibling-précédent[last()])=generate-id(current())]"/>
</details>
</xsl:template>
Le jeudi 03 février 2005 à 17:16 +0100, alexandre a écrit :
> Toutes mes excuses pour le message précédent, je l'ai envoyé au format
> html et c'est assez illisible.
> Voici le format text.
> Sorry sorry.
>
> Bonjour Eric, et merci beaucoup pour votre réponse,
>
>
> >>Je ne sais pas si il s'agit de ma mauvaise compréhension des expressions
> >>qu'on peut utiliser dans un "match=.." (fort probable),
> >>
> >>
> >
> >Je le crains ;-) ...
> >
> >
> Je m'en doutais un peu :] merci pour ces précisions et références
> (*impréssioné par la qualité de la réponse).
>
> > Pour contourner cela, il faut écrire :
> >
> ><xsl:template match="*::[preceding-sibling::sibling-précédent]">, c'est
> >à dire (si j'ai bien compris ce que vous voulez obtenir) "n'importe quel
> >élément dont un "preceding sibling" est l'élément "sibling-précédent".
> >
> >
> Ah, au moins on peut mettre un prédicat, chouette :)
> Néanmoins, je n'ai pas réussi à adapter votre suggestion à mes besoins.
> Je crois que je ne me suis pas encore adapté au mode de pensée xsl.
> Si j'applique votre méthode sur l'original suivant :
> <!-- ---------------------------------------------------- -->
> <parent>
> <sibling-précédent>un sibling</sibling-précédent>
> <detail>detail 1</detail>
> <detail>detail 2</detail>
> </parent>
> <!-- ---------------------------------------------------- -->
>
> j'obtiens :
> <!-- ---------------------------------------------------- -->
> <parent>
> <sibling-précédent>un sibling</sibling-précédent>
> <details>
> <detail>detail 1</detail>
> </details>
> <details>
> <detail>detail 2</detail>
> </details>
> </parent>
> <!-- ---------------------------------------------------- -->
>
> mais j'aimerais obtenir ceci :
> <!-- ---------------------------------------------------- -->
> <parent>
> <sibling-précédent>un sibling</sibling-précédent>
> <details>
> <detail>detail 1</detail>
> <detail>detail 2</detail>
> </details>
> </parent>
> <!-- ---------------------------------------------------- -->
>
> Autrement dit, j'aimerais créer un nouvel élément (<details>) qui aurait
> pour enfants un groupe de noeuds existants (<detail>).
> Ou encore, tous les frères cadets de <sibling-précédent> deviendraient
> ses neveux et son nouveau et unique frêre cadet serait <details> ;)
>
> >Par contre, vous pouvez spécifier, avec l'attribut
> >cdata-section-elements de l'élément xsl:output, une liste d'éléments
> >dont vous souhaitez forcer l'écriture sous forme de sections CDATA
> >(qu'ils aient été écrits de la sorte dans le document source ou non) :
> >
> >http://xmlfr.org/w3c/TR/xslt/#section-XML-Output-Method
> >
> Extra ! Merci encore pour votre réponse et meilleures salutations.
>
> Alexandre
>
> --
> 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)
>
>
--
Stéphane Bonhomme -- Exselt Services
Formations, Conseil et Réalisations en Ingénierie Documentaire,
Technologies Web et Logiciels Libres
s.bonhomme@wanadoo.fr - 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@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)
Received on Thu Feb 3 18:05:06 2005