xsl-list
[Top] [All Lists]

Re: [xsl] Writing a SELECT with each OPTION a unique value

2007-04-10 19:01:10
On 4/11/07, Waters, Tyler S FOR:EX 
<Tyler(_dot_)Waters(_at_)gov(_dot_)bc(_dot_)ca> wrote:
<?xml version="1.0" encoding="ISO8859-1" ?>
<CATALOG>
       <CD>
               <TITLE>Empire Burlesque</TITLE>
               <ARTIST>Bob Dylan</ARTIST>
               <COUNTRY>USA</COUNTRY>
               <COMPANY>Columbia</COMPANY>
               <PRICE>10.90</PRICE>
               <YEAR>1985</YEAR>
       </CD>
       <CD>
               <TITLE>Hide your heart</TITLE>
               <ARTIST>Bonnie Tylor</ARTIST>
               <COUNTRY>UK</COUNTRY>
               <COMPANY>CBS Records</COMPANY>
               <PRICE>9.90</PRICE>
               <YEAR>1988</YEAR>
       </CD>
</CATALOG>
<xsl:key name="KEY_COUNTRY" match="CD" use="COUNTRY" />
 -- indexes all the items based on country

This is a XSLT 1.0 technique to get unique values (known as Muenchian method):

<xsl:for-each select="CATALOG/CD[generate-id() =
generate-id(key('KEY_COUNTRY', COUNTRY)[1])]">
 <xsl:value-of select="COUNTRY" /><br/>
</xsl:for-each>

With XSLT 2.0, you can use distinct-values function:

<xsl:for-each select="distinct-values(CATALOG/CD/COUNTRY)">
  <xsl:value-of select="." /><br/>
</xsl:for-each>

--
Regards,
Mukul Gandhi

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--