logo       

Re: récupérer tous les enfants (directs ou "indirects") de premiers niveau : msg#00099

Subject: Re: récupérer tous les enfants (directs ou "indirects") de premiers niveau ?
pour simplifiez dans ton cas particulier 

<xsl:for-each select=" //A[ count(ancestor::A) =
1]">
cela ne selectionne que ceux qui ontt un unique ancetre A donc le noeud index 
suffirait ici
----- Message d'origine ----- 
De : "Matthieu Ricaud" <matthieu.ricaud@xxxxxxx>
À : <xml-tech@xxxxxxxxx>
Envoyé : vendredi 23 septembre 2005 12:37
Objet : [xml-tech] Re: récupérer tous les enfants (directs ou "indirects") de 
premiers niveau ?


Quand j'ai écrit "récupérer" la hierarchie (de 1er niveau), il s'agit en
fait de matcher ces noeuds-là et non générer la grappe xml correpondante.
L'un n'empêchant pas l'autre : je pourrais créer une variable de type
node-set et ensuite matcher cette variable. Mais si je peux faire ça avec un
select directement, ça m'arrange.

En essayant la solution d'Eric,  je me rend compte que ma xsl d'exemple ne
partait pas du bon noeud, je me permet juste une rectification de l'énoncé :

<xsl:template match="root">
<xsl:for-each select="A"><!-- dans l'ex ne match que le noeud <A
id="context"> -->
<xsl:for-each select="A | //A[prédicat indiquant qu'il n'y a pas de noeud
A entre les deux]">
    A<xsl:value-of select="@id"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>

Je n'ai pas réussi à adapté le prédicat d'eric à ce nouveau contexte.
le xpath match soit les fils directs A soit le premier sous(n)-enfant A
rencontré, d'où :
A | //A[...]
j'ai essayé :
<xsl:for-each select="A | //A[ count(ancestor::A) =
count(current()/A/ancestor-or-self::A)]">
qui ne matche pas les bons noeuds,
je suppose qu'il faut adapté la formule mais ne la comprenant pas très bien,
j'ai du mal.
En français la formule
//A[ count(ancestor::A) = count(current()/A/ancestor-or-self::A)]
signifie :
"les sous-noeuds A (de n'importe quel niveau) dont le nombre de parents A
est égale au nombre de parent (lui y compris) qu'a son fils A" ???
je ne saisie pas bien (du tout!) ce prédicat... donc dur de l'adapter !

un petit coup de main supplémentaire si possible ?

Matt


-----Message d'origine-----
De : xml-tech-bounce@xxxxxxxxx [mailto:xml-tech-bounce@xxxxxxxxx]De la
part de Stéphane Bonhomme
Envoyé : vendredi 23 septembre 2005 11:30
À : xml-tech@xxxxxxxxx
Objet : [xml-tech] Re: récupérer tous les enfants (directs ou
"indirects") de premiers niveau ?


Matthieu Ricaud wrote:

>Ce n'est pas tout à fait le résultat escompté, je veux en fait seulement
>récupérer la hiérachie de 1ER NIVEAU des noeuds A sous <A id="context">,
>c'est à dire :
><A id="1">
><A id="2">
><A id="3">
>Ce qui serait très simple à récupérer à partir de votre résultat mais
>j'aimerais faire cette manip en une seule "passe"...
>
>
>
J'écrirais alors :

<xsl:stylesheet  xmlns:xsl = "http://www.w3.org/1999/XSL/Transform";
version="1.0">

<xsl:template match="A[ancestor::A[1][@id='context']]">
  <xsl:copy>
    <xsl:copy-of select="@id"/>
  </xsl:copy>
</xsl:template>

<!-- et pour supprimer les éventuelles feuilles de texte -->

<xsl:template match="text()"/>

</xsl:stylesheet>

--
    Stéphane Bonhomme           --           Exselt Services

Formations, Conseil et Réalisations en Ingénierie Documentaire,
   Technologies Web et Logiciels Libres
      s.bonhomme@xxxxxxxxxx   -   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@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)


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