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)
>
>
>
>