Cliquez ici.
Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Commentaires et questions non techniques.Commentaires et questions techniques.

 
Cliquez ici.

From: Benoît Barré (benoitbarre@free.fr)
Date: 02/09/2001 - 20:03


Merci bcp Eric,

Avec quelques corrections, ça marche avec le modèle que j'ai donné.
En fait mon modèle est un peu plus compliqué. Je vais continuer mes
investigations.

Voici mon modèle :

<M>
  <F>
    <I><D>1</D></I>
    <T><e n="1">aa</e></T>
  </F>
  <F>
    <I><D>1</D></I>
    <T><e n="1">aa</e></T>
  </F>
  <F>
    <I><D>2</D></I>
    <T><e n="1">cc</e></T>
  </F>
  <F>
    <I><D>3</D></I>
    <T><e n="1">dd</e></T>
  </F>
  <F>
    <I><D>1</D></I>
    <T>
      <e n="1">bb</e>
      <e n="2">zz</e>
    </T>
  </F>
</M>

avec la feuille de style suivante :

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

<xsl:template match="/">
 <html>
<ul>
 <xsl:apply-templates
      select="/M/F[not(I/D=preceding-sibling::F/I/D)]">
   <xsl:sort select="I/D"/>
 </xsl:apply-templates>
</ul>
 </html>
</xsl:template>

<xsl:template match="F">
 <li><xsl:value-of select="concat('&#xa;Noeud de type ', I/D)"/></li>
 <ul><xsl:apply-templates
      select="/M/F[ I/D = current()/I/D ]/T/e[@n='1' and not(.=preceding::e
[../I/D = current()/I/D ]) ]">
   <xsl:sort select="."/>
 </xsl:apply-templates>
 </ul>
</xsl:template>

<xsl:template match="e">
 <li><xsl:value-of select="concat('&#xa; Enfant ', .)"/></li>
</xsl:template>

</xsl:stylesheet>

Cordialement,
Benoît
----- Original Message -----
From: "Eric van der Vlist" <vdv@dyomedea.com>
To: <xml-tech@xmlfr.org>
Sent: Friday, August 31, 2001 4:07 PM
Subject: [xml-tech] Re: Unicité d'éléments sur deuxniveaux

Bonjour,

On 31 Aug 2001 15:29:17 +0200, Benoît Barré wrote:
>
> Bonjour,
>
>
> J'aimerais obtenir quelque chose comme :

En XSLT ?
>
>
> Noeud de type 1 :
> Enfant aa
> Enfant bb
>
> Noeud de type 2 :
> Enfant cc
>
> Noeud de type 3 :
> Enfant dd
>
>
> C'est à dire : obtenir les éléments différents sur deux niveaux.
>
> à partir de quelque chose comme :
> <x>
> <noeud1 t="1">
> <enfant n="1">aa</enfant>
> </neud1>
> <noeud1 t="1">
> <enfant n="1">aa</enfant>
> </neud1>
> <noeud1 t="2">
> <enfant n="1">cc</enfant>
> </neud1>
> <noeud1 t="3">
> <enfant n="1">dd</enfant>
> </neud1>
> <noeud1 t="1">
> <enfant n="1">bb</enfant>
> </neud1>
> <x>

Non testé mais la construction suivante devrait vous donner une piste ;)

<xsl:template match="/">
 <xsl:apply-templates
      select="/x/noeud1[not(@t=preceding-sibling::noeud1/@t)]">
   <xsl:sort select="@t"/>
 </xsl:apply-templates>
</xsl:template>

<xsl:template match="noeud1"/>
 <xsl:value-of select="concat('&#xa;Noeud de type ', @t)"/>
 <xsl:apply-templates
      select="/x/noeud1[ @t = current()/@t ]/enfant[
not(.=preceding::enfant[../@t = current()/@t ]) ]">
   <xsl:sort select="."/>
 </xsl:apply-templates>
<xsl:template/>

<xsl:template match="enfant">
 <xsl:value-of select="concat('&#xa; Enfant ', .)"/>
<xsl:template>

>
> Peut-être est-ce du à la fatigue de la semaine mais je bloque sur le 2ème
niveau

Je pense qu'un des problèmes est que si vous ne faites pas le test de
filtrage du deuxième niveau lors du primier (dans la clause select),
elle est beaucoup plus complexe à écrire.

Cordialement,

Eric van der Vlist

> Benoît

--
Rendez-vous à Paris (XML pour l'e-business)
           20010625T105500@xmlfr.org">http://xmlfr.org/actualites/agenda/#20010625T105500@xmlfr.org
------------------------------------------------------------------------
Eric van der Vlist       http://xmlfr.org            http://dyomedea.com
http://xsltunit.org      http://4xt.org           http://examplotron.org
------------------------------------------------------------------------

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

-- 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:06 UTC

webmaster@xmlfr.org

 

xml tech

Discussions techniques au sujet de XML.

Cette liste est à votre disposition pour discuter en français de tout sujet technique lié à XML.



Devenez rédacteur <XML>fr et contribuez au développement du xml francophone !
Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot@online.fr  

Conception, réalisation et hébergement