🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.text.xml
Article #9675

boucle for en xsl

#9675
From: Mikael
Date: Fri, 23 Feb 2001 21:32
99 lines
3649 bytes
Bonjour,

Je dois cr�er une liste de checkbox en html � partir de donn�es d'un fichier
XML (des familles).
Le nombre d'�lements est variable ce qui m'oblige � cr�er une boucle pour
donner un attribut
"name" num�rique de type "fam1, fam2, fam3,...".

Je me suis inspir� d'un exemple trouv� sur la liste XSLT-List
(http://www.biglist.com/lists/xsl-list/archives/199912/msg00091.html)
bien que je doute de la vaildit� de ce que j'ai apport�...


Mon document xml poss�de plusieurs balises familles contenant des valeurs
identiques.
Quelqu'un saurait-il m'expliquer ce qui ne va pas ?

Merci d'avance
Mikael

Voici le code XSL :
______________________________________________________________
<xsl:variable name="to"
select="count(//famille[not(.=preceding::famille)])"/>
...
<xsl:template match="/">
   <xsl:call-template name="famille">
     <xsl:with-param name="from" select="1"/>
   </xsl:call-template>
...
</xsl:template>

<xsl:template name="famille" match="famille">
  <xsl:param name="from" />
  <xsl:if test="self::node()[not(.=preceding::famille)]">
    <xsl:call-template name="for">
      <xsl:with-param name="from" select="$from"/>
      <xsl:with-param name="nom" select="."/>
    </xsl:call-template>
  </xsl:if>
</xsl:template>

<xsl:template name="for">
<xsl:param name="from" />
<xsl:param name="nom"/>
<xsl:if test="($to + 1) > $from">
      <xsl:element name="input">
        <xsl:attribute name="type">checkbox</xsl:attribute>
        <xsl:attribute name="name">fam<xsl:value-of
select="$from"/></xsl:attribute>
        <xsl:attribute name="value"><xsl:value-of
select="$nom"/></xsl:attribute>
      </xsl:element>
      <xsl:value-of select="$nom"/><br/><br/>   <!-- j'obtiens � cause de
ceci la valeur de tous les noeuds du document xml :-( -->
      </xsl:choose>
  <xsl:call-template name="famille">
    <xsl:with-param name="from" select="$from+1"/>
  </xsl:call-template>
</xsl:if>
</xsl:template>
----------------------
Voici un bref aper�u de mon fichier XML
________________________________________________

<descriptions>
  <os>
    <se>
      <nom>NT</nom>
    </se>
    <se>
      <nom>Unix</nom>
      <famille>TR</famille>
    </se>
    <se>
      <nom>VRTX</nom>
      <famille>TR</famille>
    </se>
  </os>
  <langages>
    <lang>
      <nom>PHP</nom>
      <categorie>Internet</categorie>
      <famille>Internet</famille>
      <famille>D�veloppement</famille>
    </lang>
    <lang>
      <nom>ASP</nom>
      <categorie>Internet</categorie>
      <famille>Internet</famille>
      <famille>D�veloppement</famille>
    </lang>
    <lang>
      <nom>HTML</nom>
      <categorie>Internet</categorie>
      <famille>Internet</famille>
    </lang>
  </langages>
</descriptions>
Technical Details
Message-ID: <976kta$f4j$1@news5.isdnet.net>
Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!isdnet!isdnethub!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: FRENCH,ASCII
X-Google-Thread: 114f60,c1fde71fb2dec641,start
X-Google-Attributes: gid114f60,public
X-Google-ArrivalTime: 2001-02-23 13:34:01 PST
Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!isdnet!isdnethub!not-for-mail
From: "Mikael" <kgt@noos.fr>
Newsgroups: fr.comp.text.xml
Subject: boucle for en xsl
Date: Fri, 23 Feb 2001 22:32:13 +0100
Lines: 101
Message-ID: <976kta$f4j$1@news5.isdnet.net>
NNTP-Posting-Host: d048.dhcp212-74.cybercable.fr
X-Trace: news5.isdnet.net 982963946 15507 212.198.74.48 (23 Feb 2001 21:32:26 GMT)
X-Complaints-To: abuse@isdnet.net
NNTP-Posting-Date: 23 Feb 2001 21:32:26 GMT
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.50.4133.2400
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400