This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: testing for last node in a list


Ann,

>I am generating a list of ancestor nodes for a matched CLASS element. The
XSL 
>calls this template to output the ancestors when a CLASS is matched. I
want to 
>output a "|" character after each CLASS node, EXCEPT the last one.  I am
unable 
>to express the correct test for the last node in this list. I tried using 
><xsl:if test="position()=last()">, but this statement returns true each
time the 
>template is called.
>
>Is there another way to solve this?

Try thinking in terms of 'if I just know about node X, what is is about
node X that affects whether or not there is a | above or below me?'  The
answer is that all nodes have a | above them apart from the one at the top
of the hierarchy.  How can you tell if you are at the top of the hierarchy?
 Because you don't have a parent node.  So, try:

<!-- named template to do the hierarchy tracing -->
<xsl:template match="CLASS" mode="hierarchy">
  <xsl:if test="@SUPERCLASS">
    <xsl:apply-templates select="key('classes', @SUPERCLASS)"
mode="hierarchy"/>
    <xsl:text>|</xsl:text>
  </xsl:if>
  <br data="{@SUPERCLASS}">
    <a href="{@NAME}.html"><xsl:value-of select="@NAME"/></a>
  </br>
</xsl:template>

Hope that helps,

Jeni

Dr Jeni Tennison
Epistemics Ltd, Strelley Hall, Nottingham, NG8 6PE
Telephone 0115 9061301 • Fax 0115 9061304 • Email
jeni.tennison@epistemics.co.uk



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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]