Voici une solution qui a l'air de fonctionner :
le fichier xsl :
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="root">
<select id="references">
<xsl:for-each select="references">
<xsl:variable name="ref" select="referer"/>
<xsl:if test="count(preceding-sibling::references[referer=$ref]) = 0">
<option><xsl:value-of select="referer"/></option>
</xsl:if>
</xsl:for-each>
</select>
</xsl:template>
</xsl:stylesheet>
le fichier xml :
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<references>
<duration>3</duration>
<referer>AAA</referer>
</references>
<references>
<duration>6</duration>
<referer>AAA</referer>
</references>
<references>
<duration>9</duration>
<referer>AAA</referer>
</references>
<references>
<duration>3</duration>
<referer>BBB</referer>
</references>
</root>
en sortie on obtient bien :
<?xml version="1.0"?>
<select id="references"><option>AAA</option><option>BBB</option></select>
J'espère que cela vous fournira une piste pour résoudre votre problème.
Cordialement,
Jérôme
Webmaster@dcdworld.com wrote:
>Bonjour ! je suis confronté a un problème, je dois recuperer en XSLT la
>liste des objets distinct dans une structure XML et je n'ai pas la
>moindre idée de comment je peut faire ..
>
>voici ma structure XML :
>
><references>
> <duration>3</duration>
> <referer>AAA</referer>
></references>
><references>
> <duration>6</duration>
> <referer>AAA</referer>
></references>
><references>
> <duration>9</duration>
> <referer>AAA</referer>
></references>
><references>
> <duration>3</duration>
> <referer>BBB</referer>
></references>
>
>Voici la liste que je souhaite recuperé en XSLT pour construire un champ
>select avec cette liste :
>AAA ; BBB
>
>Résultat en html :
><select id="references">
> <option>AAA</option>
> <option>BBB</option>
></select>
>
>Je n'ai malheureusement pas de pistes pour résoudre ce problème...
>
>Mathieu
>
--
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 Oct 7 12:50:55 2004