Re: [xsl] Displaying Unique attribute value

Subject: Re: [xsl] Displaying Unique attribute value
From: "Ganesh Babu N" <nbabuganesh@xxxxxxxxx>
Date: Sat, 4 Oct 2008 09:32:27 +0530
Dear David,

I have used your statements as follows:
<xsl:key name="page" match="*[@page-num]" use="@page-num"/>

<xsl:template match="/">
<h1><xsl:if test="generate-id(.)=generate-id(key('page',@page-num)[1])"><xsl:value-of
select="generate-id(key('page',@page-num)[1])"/></xsl:if></h1>
</xsl:apply-templates/>
</xsl:template>

but I am unable to get the result in <h1> tag. Please help me.

Regards,
Ganesh


On 10/3/08, David Carlisle <davidc@xxxxxxxxx> wrote:
>
> muenchian grouping is your friend.
>
> add
>
> <xsl:key name="page" match="*[@page-num]" use="@page-num"/>
>
> then to test if the current node is the first node with a given page-num
> you just need
>
> <xsl:if test="generate-id(.)=generate-id(key('page',@page-num)[1])">
>  ...
>
> as the key will return all the nodes with the current page-num, and the
> generate-id test tests that the current node is the first of those in
> document order.
>
> To comment on your posted code
>
> <xsl:template match="/">
> <xsl:for-each select="@page-num">
>
> / is the document root so has no attributes so this is iterating over
> the empty node set and will therefore do nothing.
>
> You could change it to <xsl:for-each select="//*@page-num"> but the
> above key is likely to be a lot more efficient than building a list of
> unique pages before starting.
>
> David
>
> ________________________________________________________________________
> The Numerical Algorithms Group Ltd is a company registered in England
> and Wales with company number 1249803. The registered office is:
> Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
>
> This e-mail has been scanned for all viruses by Star. The service is
> powered by MessageLabs.
> ________________________________________________________________________

Current Thread