🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: [XSL] compter le nombre d'occurence d'un tag

#9572
From: Tom.
Date: Tue, 06 Mar 2001 17:46
57 lines
3240 bytes
In <3AA50543.105976A1@ystel.com>, Julien Balas wrote:
> <menu titre="titre1" affiche="oui">
>  <item>premier</item>
>  <item>deuxieme</item>
> </menu>
> <menu titre="titre1" affiche="oui">
>  <item>premier</item>
>  <item>deuxieme</item>
> </menu>
> <menu titre="titre3" affiche="non">
>  <item>premier-ter</item>
>  <item>deuxieme-ter</item>
> </menu>
> 
> pour des raisons de presentation de ce menu dans un tableau HTML, j'ai
> besoin de connaitre le nombre total de tag <menu> dont l'attribut
> "affiche" est a OUI.

Premi�rement, mise au point sur le langage.
"tag" <=> balise. La _balise_, c'est ce que tu �cris dans ton fichier : 
<menu> est la _balise ouvrante_ de l'�l�ment menu (ici sans attribut), 
</menu> en est la _balise fermante_.
Ces balises servent � d�crire un arborescence dont les noeuds seront des 
_�l�ments_ (mais aussi des noeuds d'attribut, d'espace de nommage 
[namespace], de texte, de commentaire, d'instruction de traitement 
[processing instruction], et ce sera tout pour XPath/XSLT).

> et j'aimerais pouvoir compter dans la feuille XSL

1. s�lectionner ces noeuds : //menu[@affiche='oui'] par exemple mais �a 
d�pendra du noeud contextuel.
2. compter le nombre de noeuds obtenus : count(//menu[@affiche='oui'])

> Pour l'instant comme j'utilise les composants DOM de microsoft, j'ai la
> balise <xsl:script> qui me permet de mettre du code VB dans la feuille et
> donc de parcourir mon arbre XML et de compter les noeuds.

"XML in a nutshell" contient un passage sur le "vieux" MSXML :
  �Good XSLT developers don't use http://www.w3.org/TR/WD-xsl or associate 
with developers who do.�
et j'abonde dans ce sens.
Un conseil : installe MSXML3 <http://msdn.microsoft.com/xml> et 
conforme-toi � la norme en vigueur <http://www.w3.org/TR/xslt>

> en fait j'ai besoin de deux choses
> - connaitre le nombre total de noeud "menu"

count([expression pour s�lectionner tous les �l�ments menu])

> - savoir quel est la position du noeud "menu" sur lequel je me trouve

position(), dans le cas o� la liste de noeud courante contient tous les 
�l�ments menu et uniquement eux.
Sinon compter le nombre de �l�ments menu pr�c�dent le noeud courant :
  count(preceding-sibling::menu) par exemple

Tom.
Technical Details
Message-ID: <5o9p6.1224$2e4.2364447@nnrp5.proxad.net>
Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!news.tele.dk!193.251.151.101!opentransit.net!proxad.net!feeder2.proxad.net!nnrp5.proxad.net.POSTED!not-for-mail
References: <3AA50543.105976A1@ystel.com>

Show Full Headers
Complete Article Headers
X-Google-Language: FRENCH,ASCII
X-Google-Thread: 114f60,1304551a566271
X-Google-Attributes: gid114f60,public
X-Google-ArrivalTime: 2001-03-06 09:46:42 PST
Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!news.tele.dk!193.251.151.101!opentransit.net!proxad.net!feeder2.proxad.net!nnrp5.proxad.net.POSTED!not-for-mail
From: Tom. <ptittom+news@free.fr>
Subject: Re: [XSL] compter le nombre d'occurence d'un tag
Newsgroups: fr.comp.text.xml
References: <3AA50543.105976A1@ystel.com>
Lines: 57
Organization: -
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8Bit
Message-ID: <5o9p6.1224$2e4.2364447@nnrp5.proxad.net>
Date: Tue, 06 Mar 2001 17:46:41 GMT
NNTP-Posting-Host: 193.252.183.30
X-Complaints-To: abuse@proxad.net
X-Trace: nnrp5.proxad.net 983900801 193.252.183.30 (Tue, 06 Mar 2001 18:46:41 CET)
NNTP-Posting-Date: Tue, 06 Mar 2001 18:46:41 CET