From: Ludovic Tant (ludovictant@yahoo.com)
Date: 06/03/2001 - 17:43
Bonjour à tous,
Lecteur depuis quelques semaines de la mailing list, je
sollicite votre aide, à défaut d'avoir
déjà pu aider quelqu'un.
Mon problème est le suivant: obtenir une liste d'années,
sans doublons (un équivalent de "select distinct").
Les années étant des éléments d'articles, eux-même éléments
de rubriques:
+-Rubrique1
+- article1/2001
+- article2/2000
+- article3/1999
+- article4/1998
+-RubriqueA
+- articleA/2000
+- articleB/1999
+- articleC/1995
Fichier XML d'exemple::
<rubriques>
<rubrique libelle="Rubrique1">
<article><annee>2001</annee><sujet>article1</sujet></article>
<article><annee>2000</annee><sujet>article2</sujet></article>
<article><annee>1999</annee><sujet>article3</sujet></article>
<article><annee>1998</annee><sujet>article4</sujet></article>
</rubrique>
<rubrique libelle="RubriqueA">
<article><annee>2000</annee><sujet>articleA</sujet></article>
<article><annee>1999</annee><sujet>articleB</sujet></article>
<article><annee>1995</annee><sujet>articleC</sujet></article>
</rubrique>
</rubriques>
Le but étant d'avoir en sortie un tableau du style:
1995 1998 1999 2000 2001
Rubrique1 art4 art3 art2 art1
RubriqueA artC artB artA
Pour celà, j'ai tenté ce genre de boucle pour parcourir les
années (pour afficher la ligne d'en-tête):
<tr>
<td></td>
<xsl:for-each select="rubriques/rubrique/article/annee">
<xsl:sort select="self::annee" data-type="number"
order="ascending"/>
<td><xsl:value-of select="self::annee"/></td>
</xsl:for-each>
</tr>
Malheureusement, j'obtiens des doublons:
1995 1998 1999 1999 2000 2000 2001
Je suis parti sur une piste "je regarde dans le node-set
contextuel pour voir si je n'ai pas déjà affiché la date
courante (avec un preceding ou un preceding-sibling)".
Malheureusement, ce genre de recherche me retourne les
précédents dans le document XML et non dans le contexte.
D'où deux questions pratiques:
-comment faire pour circuler dans le node-set contextuel,
si on veut faire plus que des position(),last() ou count()?
-comment faire sinon pour afficher mon tableau? Suis-je
totalement à côté de la plaque en essayant de manipuler XSL
d'une manière "programmation avec des boucles partout" au
lieu de le faire dans "l'esprit XSL"?
Merci de votre aide, à tous.
/ludovic
__________________________________________________
Do You Yahoo!?
Get email at your own domain with Yahoo! Mail.
http://personal.mail.yahoo.com/
--
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)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:05 UTC
webmaster@xmlfr.org
|