🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: xsl:sort suivant variables et paramètres (cocoon)

#9722
From: Tom.
Date: Fri, 09 Feb 2001 15:27
46 lines
3020 bytes
In <95vnrm$2lqb$1@news6.isdnet.net>, Mikael wrote:
>    <xsl:for-each select="cv">
>     <xsl:variable name="anglais"> [...]
>     </xsl:variable>
>     <xsl:variable name="salaire"> [...]
>     </xsl:variable>
>    <xsl:sort data-type="number" order="descending"
>       select="$p_anglais * $anglais + $p_salaire * $salaire"/>

La REC-xslt d�crit xsl:for-each de cette mani�re :
  <!-- Category: instruction -->
  <xsl:for-each
    select = node-set-expression>
    <!-- Content: (xsl:sort*, template) -->
  </xsl:for-each>
Autrement dit, s'il y a un �l�ment xsl:sort, il ne peut *RIEN* y avoir 
avant.
Il est d'ailleurs implicitement dit dans la d�finition d'xsl:sort que ce 
que tu essaie de faire n'a aucune chance de r�ussir :
  �xsl:sort has a select attribute whose value is an expression. For each 
node to be processed, the expression is evaluated with that node as the 
current node and with the complete list of nodes being processed in 
unsorted order as the current node list.�

Ce qui est s�r, c'est le message d'erreur de Xalan n'est pas des plus 
clairs... il y a bien bug de Xalan �MA, mais dans le fait de ne pas lever 
d'erreur sur la position du xsl:sort, pas au niveau de l'�valuation de 
l'expression XPath.

Comme Alain, je penche plut�t pour un moyen d'exprimer le tout dans une 
seule expression XPath, que ce soit avec XPath ou � l'aide d'une fonction 
d'extension.

Par exemple pour l'anglais, l'algo est "si la note est sup�rieure � 750, 
attribuer un poids de 5, sinon un poids de 2".
"la note est sup�rieure � 750" est un bool�en, qui peut �tre converti en 
nombre (true => 1, false => 0). Il suffit ensuite de trouver le fonction 
d�finie de {0,1} dans {2,5} telle que f(1) = 5 et f(0) = 2.
Cette fonction est f($x) = (($x + 1) * 3) - 1.
Ce qui nous donne, � la place de $anglais :
  (((number(langues/langue/niveau/examen/resultat > 750) + 1) * 3) - 1)
Beaucoup moins lisible mais avec XSLT1.0 je craint qu'on n'ait pas le 
choix...
Reste � faire la m�me chose avec $salaire, ((($x + 1) * 2) + 1)

Tom.
Technical Details
Message-ID: <963462$h54$3@wanadoo.fr>
Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!news.tele.dk!195.25.12.36!oleane.net!oleane!wanadoo.fr!not-for-mail
References: <95vnrm$2lqb$1@news6.isdnet.net>

Show Full Headers
Complete Article Headers
X-Google-Language: FRENCH,ASCII
X-Google-Thread: 114f60,b0fff69b60de911e
X-Google-Attributes: gid114f60,public
X-Google-ArrivalTime: 2001-02-10 02:12:24 PST
Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!news.tele.dk!195.25.12.36!oleane.net!oleane!wanadoo.fr!not-for-mail
From: Tom. <ptittom+news@free.fr>
Newsgroups: fr.comp.text.xml
Subject: Re: xsl:sort suivant variables et paramètres (cocoon)
Date: Fri, 9 Feb 2001 16:27:44 +0100
Organization: -
Lines: 47
Message-ID: <963462$h54$3@wanadoo.fr>
References: <95vnrm$2lqb$1@news6.isdnet.net>
NNTP-Posting-Host: adijon-101-1-2-30.abo.wanadoo.fr
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8Bit
X-Trace: wanadoo.fr 981799938 17572 193.252.183.30 (10 Feb 2001 10:12:18 GMT)
X-Complaints-To: abuse@wanadoo.fr
NNTP-Posting-Date: 10 Feb 2001 10:12:18 GMT