Construct a list without duplicate element

Pete Johnston P.Johnston at archives.gla.ac.uk
Wed Jun 30 16:03:11 BST 1999


Eric Riblair asked:

> Does anyone know a way to do a list in a XSL file in a ...
[query snipped]

I am not sure whether I understood your question correctly, but with 
the following XML document:

<?xml version="1.0"?>
<document>
<list>
<item colour="red">a red item</item>
<item colour="blue">a blue item</item>
<item colour="green">a green item</item>
<item colour="red">a red item</item>
<item colour="blue">a blue item</item>
<item colour="green">a green item</item>
<item colour="red">a red item</item>
</list>
</document>

and the following stylesheet

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"
    result-ns="">

<xsl:template match="document">
<xsl:for-each select="list/item">
<xsl:sort select="@colour"/>
<xsl:variable name="x" expr="@colour"/>
<xsl:if test='not(from-preceding-siblings(*[@colour=$x]))'>
<p><xsl:value-of select="@colour"/></p>
</xsl:if>
</xsl:for-each>	 
</xsl:template>

</xsl:stylesheet>
 
XT produces the following output

<p>blue</p><p>green</p><p>red</p>

which seems to be the sort of thing you are looking for .There may be 
more elegant solutions! Your use of the order-by attribute 
suggests that you might be looking for an IE5 solution, and I doubt 
whether my offering is compatible with IE5's XSL implementation.

Pete Johnston
University of Glasgow

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)





More information about the Xml-dev mailing list