Article View: fr.comp.text.xml
Article #9266Re: Petite question XSLT (le casse-tete du soir)
From: Tom.
Date: Tue, 08 May 2001 13:10
Date: Tue, 08 May 2001 13:10
67 lines
3913 bytes
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-mailReferences:
<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