Article View: fr.comp.text.xml
Article #9675boucle for en xsl
From: Mikael
Date: Fri, 23 Feb 2001 21:32
Date: Fri, 23 Feb 2001 21:32
99 lines
3649 bytes
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-mailShow 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