From: gilles g (gg.gilles@freesurf.fr)
Date: 13/06/2003 - 11:21
bonjour a tous,
mon XML:
<?xml version="1.0" encoding="iso-8859-1"?>
<a>
<name>coca</name>
<name>oasis</name>
<name>orangina</name>
<name>orangina</name>
<name>coca</name>
<name>perrier</name>
</a>
j'essaye désespérément de faire une regle qui filtre les doublons.
La regle suivante marche , mais le traitement est beaucoup trop long car il
compare a chaque fois tous element suivant:
Le <xsl:for-each select="//name"> suivi du <xsl:sort> traite bien tous les
noeuds name dans l'ordre alphabetique et attribut une position() qui
correspond a l'odre de traitement.
Mais quand j'utilise following dans <xsl:when
test="following::name[.=$currentText]">, les noeuds pris en compte sont les
suivants du courant mais pas dans l'ordre du traitement (alphabetique) , il
le fait dans l'ordre du document(du select).
En fait , je voudrais pouvoir les classer par ordre alphabetique et pouvoir
dire en Xpath "le noeud suivant a t il le meme contenu dans l'ordre
alphabetique" comme ca je compare juste le noeud suivant.Mon probleme est
que je n'arrive pas a obtenir le noeud suivant dans l'ordre de traitement,
je n'arrive pas a dire "celui qui as la position() suivante dans l'ordre
alphabetique" :-(
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html" encoding="ISO-8859-1" indent="no"/>
<xsl:template match="/">
<html>
<head>
<title>java-xsl</title>
</head>
<body>
<xsl:for-each select="//name">
<xsl:sort order="ascending" select="."/>
<xsl:variable name="currentText" select="."/>
<xsl:variable name="currentPos" select="position()"/>
<xsl:choose>
<xsl:when test="following::name[.=$currentText]">
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/><br/><br/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
gilles
--
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:06 UTC
webmaster@xmlfr.org
|