Re: Reconstitution de listes chainées avec Xslt
COUTHURES Alain <[email protected]> Thu, 05 Apr 2007 11:30:14 +0200
| Newsgroups | gmane.text.xml.french.tech |
|---|---|
| Message-ID | <[email protected]> |
Bonjour Laurent,
Voici la feuille de style que je te propose pour ton regroupement (j'ai
rajouté une racine <root>...) :
<xsl:stylesheet version="1.0" txs:name="regroupe">
<xsl:template match="/">
<root>
<xsl:apply-templates/>
</root>
</xsl:template>
<xsl:template match="A">
<xsl:variable name="b" select="substring(B,1,1)"/>
<xsl:if
test="count(preceding-sibling::A[substring(B,1,1)=$b])=0">
<A>
<xsl:for-each
select="ancestor::*/A[substring(B,1,1)=$b]">
<B><xsl:value-of select="B"/></B>
<C><xsl:value-of select="C"/></C>
</xsl:for-each>
</A>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
(testé avec TXS (http://sourceforge.net/projects/txs))
Bien cordialement,
Alain COUTHURES
<agenceXML>
http://www.agencexml.com
Laurent MOULIS a écrit :
> Bonjour,
> Je suis à la recherche d'un algo ou d'une méthode en Xslt qui permettrait de
> reconstituer des listes chainées
> que je récupère dans une structure xml.
>
> Les données suivantes :
>
> <A>
> <B>10</B><C>10</C>
> </A>
> <A>
> <B>10</B><C>10</C>
> </A>
> <A>
> <B>20</B><C>20</C>
> </A>
> <A>
> <B>20</B><C>21</C>
> </A>
> <A>
> <B>21</B><C>21</C>
> </A>
> <A>
> <B>30</B><C>30</C>
> </A>
> <A>
> <B>30</B><C>30</C>
> </A>
>
>
> doivent être transformée en :
>
> <A>
> <B>10</B><C>10</C>
> <B>10</B><C>10</C>
> </A>
> <A>
> <B>20</B><C>20</C>
> <B>20</B><C>21</C>
> <B>21</B><C>21</C>
> </A>
> <A>
> <B>30</B><C>30</C>
> <B>30</B><C>30</C>
> </A>
>
> J'ai essayé de m'inspirer de la méthode "pas à pas" décrite dans
> http://xmlfr.org/documentations/faq/010103-0001
> qui permet de créer des chapitres, mais sans succés.
>
> Si quelqu'un à une idée elle est la bienvenue.
> Merci par avance,
> LM
>
> --
> Devenez redacteur <XML>fr et contribuez au developpement du
> xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
> Liste de diffusion "[email protected]" (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 [email protected]
> (mailto:[email protected]?Subject=unsubscribe)
>
>
>
>