Re: [xsl] xsl != not working?

Subject: Re: [xsl] xsl != not working?
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Wed, 22 Jun 2005 06:33:16 +1000
> //h2[1]/text() != text()

I think this is a FAQ about the "//" abbreviation.

What you probably need is:

(//h2)[1]/text() != text()

But checking for node identity using the content of the node may
generally be unreliable.

I'd recommend:

     generate-id() != generate-id((//h2)[1])

Even this may cause HUGE inefficiency, therefore it is better to
evaluate (//h2)[1] once and define an xsl:variable having this value:

     <xsl:variable name="h2ID" select="generate-id((//h2)[1] )"/>


then at the place, where the test is necessary, have:

     generate-id() != $h2ID


Cheers,
Dimitre Novatchev





On 6/22/05, Joe Stump <joe@xxxxxxxxxxxx> wrote:
> I've got a bunch of h2's in a document that I want to group at the
> top with jumps to the actual h2's in the body, which I have working
> without incident. The problem I have is with links back to the top.
> Basically, if it's NOT the first h2, it should show a "Back to Top"
> link above the h2. I have a test that appears to be exactly what I
> need, but it's not working. The basic test is:
>
> //h2[1]/text() != text()
>
> Below is the full XSLT (it's in a template matching h2's).
>
>     <xsl:if test="//h2[1]/text() != text()">
>           <xsl:text>"</xsl:text>
>           <xsl:value-of select="//h2[1]/text()"/>
>           <xsl:text>"</xsl:text>
>           <xsl:text> != </xsl:text>
>           <xsl:text>"</xsl:text>
>           <xsl:value-of select="text()"/>
>           <xsl:text>"</xsl:text>
>
>       <xsl:element name="div">
>           <xsl:attribute name="class">article-top</xsl:attribute>
>           <xsl:element name="a">
>             <xsl:attribute name="class">article-top</xsl:attribute>
>             <xsl:attribute name="href">#top</xsl:attribute>
>             <xsl:text>Back to Top</xsl:text>
>           </xsl:element>
>       </xsl:element>
>     </xsl:if>
>
> Here's my output for my first h2 (which should NOT have a link to top
> above it):
>
> "Definition" != "Definition"
> Back to Top
>
> Quite annoying ... any ideas? How can 'Definition' not equal
> 'Definition'?
>
> --Joe

Current Thread