Bonjour,
Le jeudi 16 décembre 2004 à 03:47 +0100, Benoit Lefevre a écrit :
> Bonjour.
> Pour une obscure raison, je souhaiterais creer un index comme suit :
>
> <xsl:key name="sortIndex" match="//*[@name]" use="count( //*[ @name ][ @name < current()/@name ] )" />
>
> Si je part du principe que tous les @name sont differents dans mon
> document, cela me permettrait de disposer d'une notion d'ordre
> lexicographique sans passer par un <xsl:sort>
>
> Seulement voila, l'operateur "<" ne semble pas fonctionner comme je
> l'espre dans ce cas la.
>
> Il fait tout sauf une comparaison base sur une notion d'ordre lexicograhique.
>
> Si j'ai bien compris la norme a ce sujet, quand aucun des deux operandes
> n'est de type node-set, alors les deux sont transformes en chiffre avant que
> la comparaison soit effectuee.
Exactement.
> Ai je mal interprete la norme ?
Non, je ne pense pas.
> Quelqu'un aurait-il une idee pour resoudre ce probleme ?
A priori, je ne vois pas comment faire en une seule passe et
personnellement, j'essayerais de trier les données (en utilisant
xsl:sort qui est la seule fonctionnalité de XPath/XSLT 1.0 qui attribue
un ordre aux chaînes de caractères) dans un premier temps avant de
constituer l'indexe.
Suivant le contexte, je passerais par un document intermédiaire ou bien
j'utiliserais une extension "node-set()".
Dans ce deuxième cas, il faudrait tester le support de xsl:key (et la
portabilité de ce support) lorsque les clés sont appliquées à des node
sets générés oar la fonction d'extension et, dans la négative, se passer
de clés.
Cordialement,
Eric van der Vlist
--
Tired of typing XML tags?
http://wikiml.org
------------------------------------------------------------------------
Eric van der Vlist http://xmlfr.org http://dyomedea.com
(ISO) RELAX NG ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Thu Dec 16 08:07:32 2004