Bonjour à tous,
Il s'agit plus d'une demande de confirmation qu'une véritable question...
mais sait-on jamais... au cas où...
Considérons la spécification suivante, donnée sous forme d'un extrait de
DTD :
<!ELEMENT bibliography (item*)>
<!ELEMENT item (authors,...)>
<!ELEMENT authors (person*)>
<!ELEMENT person (lastname,firstname)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT firstname (#PCDATA)>
Comment écrire en XSLT, un tri d'une bibliographie par ordre croissant sur
les noms des auteurs ? S'il n'y en avait que deux au maximum, on pourrait
écrire quelque chose comme :
<xsl:apply-templates select="item">
<xsl:sort select="authors/person[1]/lastname"/>
<xsl:sort select="authors/person[1]/firstname"/>
<xsl:sort select="authors/person[2]/lastname"/>
<xsl:sort select="authors/person[2]/firstname"/>
</xsl:apply-templates>
... mais en l'absence d'informations sur le plus grand nombre possible
d'auteurs, cette méthode est inapplicable.
En cherchant sur le "Net", j'ai vu des endroits où l'on propose un
contournement : récupérer la concaténation de tous les noms et prénoms des
auteurs et se baser sur cette gigantesque chaîne. Mais voici quel est
l'inconvénient que j'y vois ; considérons les deux noms suivants :
<person> <!-- Nom [1]. -->
<lastname>Hood</lastname>
<firstname>Robin Locksleyy</firstname>
</person>
<person> <!-- Nom [2]. -->
<lastname>Hood Robin</lastname>
<firstname>Locksley</firstname>
</person>
Si l'on se base sur des concaténations avec insertion d'espaces, les deux
chaînes résultantes sont :
"Hood Robin Locksleyy" et "Hood Robin Locksley"
moyennant quoi [2] < [1]. Mais si l'on se base d'abord sur les noms de
famille, et si besoin est sur les prénoms, alors [1] < [2].
Qu'en pensez-vous ? Y a-t-il finalement un moyen élégant d'exprimer un tel
tri sans passer par une interface avec un langage de programmation ?
Bien à vous,
J.-M. H.
--
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 Mar 13 14:12:29 2008