🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Petite question XSLT (le casse-tete du soir)

#9266
From: Tom.
Date: Tue, 08 May 2001 13:10
67 lines
3913 bytes
In <9d6imm$ps0$1@polaris.eurocontrol.fr>, jean-christophe cota wrote:
> <!ELEMENT implementation (#PCDATA)>
> 
> <!ELEMENT object (implementation)>
> <!ATTLIST object
>   name            CDATA #REQUIRED
>   server    CDATA #REQUIRED>
> 
> <!ELEMENT server EMPTY>
> <!ATTLIST server
>   name            CDATA #REQUIRED
>   application           CDATA #REQUIRED
>   machine            CDATA #REQUIRED>
> 
> Biensur, l'attribut 'server' de l'element 'object' correspond a l'attribut
> 'name' de l'element 'server'. [...]
> Bon, ma question est:
> Comment etablir la liste des implementations qu'une application doit
> supporter pour pouvoir heberger, sur une machine donnee, la liste des
> objets specifies comme etant instancies sur un serveur tournat sur cette
> machine ? Par liste j'entends soit un node-set d'elements
> 'implementation'. Biensur, pas de repetition: ce node-set ne devra
> contenir que des elements dont le contenu (le nom d'implementation
> lui-meme) sera unique.
> 
> J'ai essaye:
> <xsl:variable name="server_list"
> select="//server[@name='my_host'][@application='my_appli']"/>
> <xsl:variable name="impl_list"
> select="//object[@server=$server_list/@name][not(preceding-sibling::implem
> entation=implementation)]/implementation"/>
> 
> Ca ne marche pas, car l'axe 'preceding-sibling' du deuxieme predicat de la
> variable "impl_list" s'applique sur l'ensemble des element 'object'
> freres precedents et, parmi ceux-ci, certains n'ayant pas passe le filtre
> du premier predicat.

...et preceding-sibling::implementation risque bien de ne rien s�lectionner 
puisqu'il faudrait que des �l�ments 'object' aient des fr�res 
'implementation', ce dont je doute vu la description donn�e.

preceding-sibling::object/implementation serait peut-�tre mieux venu.

> Ce qu'il faudrait, c'est que le deuxieme predicat s'applique sur le
> resultat du premier...(en remplacant 'preceding-sibling::implementation'
> par le resultat de '//object[@server=$server_list/@name]/implementation'

preceding-sibling::object[@server=$server_list/@name]/implementation

Pas test�.

> Au lieu d'un node-set, on pourrait se contenter d'une chaine de caracteres
> ou chaque nom d'implementation serait separe d'un espace. Ceci devrait
> etre faisable, via un template recursif. Mais pour obtenir un node-set,
> c'est autre chose.

En utilisant des ID, la fonction id() fera tr�s bien l'affaire. Mais 
peut-�tre que votre cahier des charges ne le permet pas...

Un template nomm� r�cursif peut aussi cr�er un "result tree fragment" que 
l'on r�cup�rera dans une variable. Bien s�r, ce n'est pas exactement un 
node-set mais �a s'en approche et de nombreuses impl�mentations de XSLT 
fournissent une fonction d'extension pour transformer un result tree 
fragment en node-set. XSLT 2.0 (puisque XSLT 1.1 n'est plus d'actualit�) 
gommera cette diff�rence, il n'y aura plus que des node-sets.

Tom.
Technical Details
Message-ID: <1072223.oOGUtdWV9S@ltgt.net>
Path: arc1-ca.pugleaf.net!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!193.251.151.101!opentransit.net!proxad.net!feeder2-1.proxad.net!nnrp1.proxad.net.POSTED!not-for-mail
References: <9d6imm$ps0$1@polaris.eurocontrol.fr>

Show Full Headers
Complete Article Headers
X-Google-Language: FRENCH,ASCII
X-Google-Thread: 114f60,b28a8eccea9d31cf
X-Google-Attributes: gid114f60,public
X-Google-ArrivalTime: 2001-05-08 06:10:28 PST
Path: arc1-ca.pugleaf.net!newsfeed.google.com!newsfeed.stanford.edu!news.tele.dk!193.251.151.101!opentransit.net!proxad.net!feeder2-1.proxad.net!nnrp1.proxad.net.POSTED!not-for-mail
Message-ID: <1072223.oOGUtdWV9S@ltgt.net>
From: Tom. <ptittom+news@free.fr>
Subject: Re: Petite question XSLT (le casse-tete du soir)
Newsgroups: fr.comp.text.xml
References: <9d6imm$ps0$1@polaris.eurocontrol.fr>
Lines: 67
Organization: </>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8Bit
Date: Tue, 08 May 2001 13:10:28 GMT
NNTP-Posting-Host: 193.252.183.143
X-Complaints-To: abuse@proxad.net
X-Trace: nnrp1.proxad.net 989327428 193.252.183.143 (Tue, 08 May 2001 15:10:28 CEST)
NNTP-Posting-Date: Tue, 08 May 2001 15:10:28 CEST