Article View: fr.comp.text.xml
Article #9722Re: xsl:sort suivant variables et paramètres (cocoon)
From: Tom.
Date: Fri, 09 Feb 2001 15:27
Date: Fri, 09 Feb 2001 15:27
46 lines
3020 bytes
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-mailReferences:
<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