[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: testing for last node in a list
Jeni, Here's another tough one. Now I need to output the @NAME of each ancestor, except the last one, with the href tag, except for the last one. The last ancestor doesn't need a href tag because it is the name of the current matched class. Using your approach, I ask myself what do I know about node X. In this case, the @NAME value of Node X always equals the @NAME value of the matched node when the template was called. So, I tried to define a variable to store the name of the matched class. Then I could compare the name of the matched class to the name of the current context node. But the value of the variable is automatically updated each time the template is called. Ann Marie <xsl:variable name="matchedclass"><xsl:value-of select="@NAME"/></xsl:variable> X-Unix-From: Jeni.Tennison@xxxxxxxxxxxxxxxx Tue May 23 06:01:21 2000 X-Sender: JTennison@NTServer To: Annmarie.Rubin@xxxxxxxxxxxx From: Jeni Tennison <Jeni.Tennison@xxxxxxxxxxxxxxxx> Subject: Re: testing for last node in a list Cc: xsl-list@xxxxxxxxxxxxxxxx Mime-Version: 1.0 X-MDaemon-Deliver-To: Annmarie.Rubin@xxxxxxxxxxxx Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by purol.East.Sun.COM id GAA17422 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@xxxxxxxxxxxxxxxx XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|