From: Eric van der Vlist (vdv@dyomedea.com)
Date: 28/09/2000 - 21:25
Bonsoir Laurent,
C'est une variation autour du problème de la transformation d'une
structure "plate" en structure hiérarchique déjà évoqué la semaine
dernière...
(http://xmlfr.org/listes/xml-tech/0444.html)
Ce type de problème demande un traitement de type "pas à pas".
La transformation suivante (simplifiée pour "coller" à l'exemple mais
tout à fait standard):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="doc">
<doc>
<list>
<xsl:apply-templates select="*[1]"/>
</list>
<xsl:apply-templates select="paragraph[1]" mode="suivant"/>
</doc>
</xsl:template>
<xsl:template match="list-item">
<xsl:copy/>
<xsl:apply-templates select="following-sibling::*[1]"/>
</xsl:template>
<xsl:template match="paragraph"/>
<xsl:template match="paragraph" mode="suivant">
<xsl:copy/>
<list>
<xsl:apply-templates select="following-sibling::*[1]"/>
</list>
<xsl:apply-templates select="paragraph[1]" mode="suivant"/>
</xsl:template>
</xsl:stylesheet>
génère le résultat demandé.
Cordialement,
Eric van der Vlist
Laurent CAPRANI wrote:
>
> Question aux experts XSLT :
> Y a-t-il une solution XSL-T (standard) au problème suivant ?
>
> Dans le document qui suit, il s'agit de regrouper les articles de liste
> *consécutifs* (<list-item/>) dans des éléments listes (<list>).
>
> -- Source :
> <doc>
> <list-item/>
> <list-item/>
> <paragraph/>
> <list-item/>
> <list-item/>
> <list-item/>
> </doc>
>
> -- Résultat souhaité :
> <doc>
> <list>
> <list-item/>
> <list-item/>
> </list>
> <paragraph/>
> <list>
> <list-item/>
> <list-item/>
> <list-item/>
> </list>
> </doc>
>
> J'ai fait quelques recherches, peu encourageantes : Saxon propose une
> solution maison (saxon:group), et la norme XSLT semble admettre une
> impossibilité :
> > The following features are under consideration for versions of XSLT after
> XSLT 1.0:
> >- a way to group together consecutive nodes having duplicate subelements or
> attributes;
>
> Tout cela semble indiquer que la transformation est impossible dans un XSLT
> 1.0 nature. Qu'en est-il ?
>
> -- Laurent CAPRANI
>
> --
> 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)
--
------------------------------------------------------------------------
Eric van der Vlist Dyomedea http://dyomedea.com
http://xmlfr.org http://4xt.org http://ducotede.com
------------------------------------------------------------------------
--
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:05 UTC
webmaster@xmlfr.org
|