[xsl] weird behavior with last()

Subject: [xsl] weird behavior with last()
From: Nathan Shaw <n8_shaw@xxxxxxxxx>
Date: Tue, 24 Jul 2001 10:49:30 -0700 (PDT)
Using Saxon with this XML snippet...

<MainMenu>
    <MainMenuItem URL="/">Home</MainMenuItem>
    <MainMenuItem URL="/strat.html">Strategic
Vision</MainMenuItem>
    <MainMenuItem URL="/themes.html">Research
Themes</MainMenuItem>
    <MainMenuItem
URL="/edu.html">Education</MainMenuItem>
    <MainMenuItem
URL="http://commercial.hq.nasa.gov";>Commercial</MainMenuItem>
</MainMenu>
<SubMenu>
    <SubMenuItem
URL="/strat.html#v">Mission</SubMenuItem>
    <SubMenuItem
URL="/strat.html#g">Goals</SubMenuItem>
    <SubMenuItem
URL="/strat.html#p">Philosophy</SubMenuItem>
</SubMenu>

XSL looks like this:

<xsl:template match="MainMenuItem">
<b><a href="{@URL}"><xsl:apply-templates
/></a></b><xsl:if
test="position()!=last()">&#32;|&#32;</xsl:if>
</xsl:template>

<xsl:template match="SubMenuItem">
<b><a href="{@URL}"><xsl:apply-templates
/></a></b><xsl:if 
test="position()!=last()">&#32;|&#32;</xsl:if>
</xsl:template>

If I transform it like it is, I get an end "|" after
the last <MainMenuItem> (not correct behavior) but NOT
the last <SubMenuItem> (correct behavior). If I bring
the end </MainMenu> tag up to the same line as the
last </MainMenuItem> tag, I do not get the end "|"
(correct behavior).

Any ideas as to why this is happening? I realize that
it is a rather trivial question, but it is an issue as
I have to hand off the maintainence of the XML files
to the client.

TIA,

Nate

__________________________________________________
Do You Yahoo!?
Make international calls for as low as $.04/minute with Yahoo! Messenger
http://phonecard.yahoo.com/

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread