logo       

Re: récupérer tous lesenfants(directs ou "indirects") de premiers niveau ?: msg#00110

Subject: Re: récupérer tous lesenfants(directs ou "indirects") de premiers niveau ?
En effet c'est élégant...
Merci encore.
Je n'avais encore jamais utilisé les mode et encore moins eu l'habitude de
travailler en "100% déclaratif".
c'est une logique bien particulière, pas évidente à comprendre.
C'est vrai que j'ai plus souvent l'habitude de coder de manière procédurale
(c le contraire de déclaratif?) en suivant la logique de ma reflexion (si,
alors, ...)
Je comprend bien qu'xml se prête très bien à ce type de programmation, mais
ça me paraît plus difficile (car différent surement) à écrire, comme à lire
par un autre programmeur, j'imagine que le gain est au niveau du processeur
xml qui effectue la transformation.. dis moi si je me trompe ?

est ce que j'interprête bien ?:

    <xsl:template match="A" mode="tous">                   **1**
        <xsl:text>&#xa; &#xa; A</xsl:text>
        <xsl:value-of select="@id"/>
        <xsl:text> : </xsl:text>
        <xsl:apply-templates  select="*" mode="fils"/>
    </xsl:template>
    <xsl:template match="*" mode="fils">                     **2**
        <xsl:apply-templates select="*" mode="fils"/>
    </xsl:template>
    <xsl:template match="A" mode="fils">                     **3**
        <xsl:text>&#xa;  ==> A</xsl:text>
        <xsl:value-of select="@id"/>
    </xsl:template>

Le template **1** va matcher TOUS les noeuds A puisqu'il est appelé avec
<xsl:apply-templates select="//A" mode="tous"/> depuis la racine, à chaque
noeud A il écrit "A+id :"
Pour chacun des enfants, il appele le template  **3** si c'est un A et **2**
sinon (priorité de **3** sur **2** car il correpond "mieux" c'est cela ?)
A partir du template **2**, il s'appele lui même si ce n'est pas un A sinon
il appele le template **3** (priorité idem)
C'est marrant, ce n'est pas réccursif, mais ça en a tout l'air quelque part.
J'espère avoir bien compris,
encore merci !

PS : je vais demander à ma boite pour faire un stage chez dyomedea...

-----Message d'origine-----
De : xml-tech-bounce@xxxxxxxxx [mailto:xml-tech-bounce@xxxxxxxxx]De la
part de Eric van der Vlist
Envoyé : vendredi 23 septembre 2005 17:21
À : xml-tech@xxxxxxxxx
Objet : [xml-tech] Re: récupérer tous lesenfants(directs ou "indirects")
de premiers niveau ?


Le vendredi 23 septembre 2005 à 17:06 +0200, Matthieu Ricaud a écrit :

.../...
>
> SORTIE :
> Acontext:
>   ==> A1
>   ==> A2
>   ==> A3
>
> A1 :
>   ==> A1.1
>   ==> A1.2
>
> A2 :
>
> A3 :
>   ==> A3.1
>
> A1.1 :
>
> A1.2 :
>
> A3.1 :
>
> Je n'arrive pas à obtenir ce résultat à partir des solutions proposées,

Il y a d'autres manières de procéder, mais j'obtiens ce résultat avec la
transformation suivante (qui est 100% déclarative) :

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0">
    <xsl:output method="text"/>
    <xsl:strip-space elements="*"/>
    <xsl:template match="root">
        <xsl:text>Résultat : </xsl:text>
        <xsl:apply-templates select="//A" mode="tous"/>
    </xsl:template>
    <xsl:template match="A" mode="tous">
        <xsl:text>&#xa; &#xa; A</xsl:text>
        <xsl:value-of select="@id"/>
        <xsl:text> : </xsl:text>
        <xsl:apply-templates  select="*" mode="fils"/>
    </xsl:template>
    <xsl:template match="*" mode="fils">
        <xsl:apply-templates select="*" mode="fils"/>
    </xsl:template>
    <xsl:template match="A" mode="fils">
        <xsl:text>&#xa;  ==> A</xsl:text>
        <xsl:value-of select="@id"/>
    </xsl:template>
</xsl:stylesheet>

J'ai utilisé des modes pour différencier les traitements à effectuer
pour créer une liste générale (mode "tous") et trouver les enfants
logiques directs (mode "fils").

Cordialement,

Eric van der Vlist

--
If you have a XML document, you have its schema.
                                                  http://examplotron.org
------------------------------------------------------------------------
Eric van der Vlist       http://xmlfr.org            http://dyomedea.com
(ISO) RELAX NG   ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------


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




Ruby Jobs
Java Jobs
Jobs in California
more...
what
job title, keywords
where
city, state, zip
jobs by job search
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

Recently Viewed:
linux.drivers.b...    security.firewa...    mathematics.lps...    web.zope.plone....    x25/2005-12/msg...    culture.tv.sout...    pld.user.polish...    qplus.devel/200...    version-control...    openbsd.bugs/20...    distributions.g...    gnu.chess.bugs/...    redhat.release....    emacs.bugs/2002...    java.bio.genera...    ataraid/2005-01...    finance.moneyda...    hardware.microc...    netbsd.ports.xe...    bug-tracking.gn...    text.xml.saxon....    kde.linux/2002-...   
Home | blog view | USPTO Patent Archive | advertise | OSDir is an inevitable website. super tiny logo