|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Getting the first and last nodes of a sorted nodes
Whoa, that's a lot of code to accomplish such a straight forward task. To access the first node in a resulting data set you would simply use [1] next to your XPath selection criteria. To add to that the last node as well then add another criteria next to this one that adds to the mix the last() function that selects that last element in an RTF. This template below accesses the first and last elements within the resulting node set found by selecting the first and last "nd" elements from the resulting node-set of test/nd. The fact that further down in your tree you have an additional test element with nd children is irrelevant given the fact that this element will never contain the first or the last element of the resulting nd data set. Excluding these nodes in your select statement just makes your life easier. So this statement -> select="test/nd[1][last]" will give you just what you need. The second template is what the apply-templates used in the first template will match to given that we used "nd" as the match value for the template. Just format the output as needed within this template and your done. <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="root"> <xsl:apply-templates select="test/nd[1][last()]"/> </xsl:template> <xsl:template match="nd"> <xsl:value-of select="."/><br/> </xsl:template> </xsl:stylesheet> best of luck! <M:D/> -----Original Message----- From: Hansen, John [mailto:John.Hansen@xxxxxxxxxx] Sent: Wednesday, April 07, 2004 11:27 AM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: Getting the first and last nodes of a sorted nodeset Sorry about that probably FAQ. It turned out to be easy. Here's the solution I just came up with if anyone is interested: <xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'> <xsl:output method='html'/> <xsl:template match="/root"> <html> <xsl:for-each select="//nd"> <xsl:sort select="."/> <!-- <xsl:value-of select="."/><br/> --> <xsl:if test="position()=1"> <xsl:call-template name="get_first"> <xsl:with-param name="f"><xsl:value-of select="."/></xsl:with-param> </xsl:call-template> </xsl:if> </xsl:for-each> </html> </xsl:template> <xsl:template name="get_first"> <xsl:param name="f"></xsl:param> <xsl:for-each select="//nd"> <xsl:sort select="."/> <xsl:if test="position()=last()"> <xsl:call-template name="test_template"> <xsl:with-param name="b"><xsl:value-of select="$f"/></xsl:with-param> <!-- first element --> <xsl:with-param name="c"><xsl:value-of select="."/></xsl:with-param> <!-- last element --> </xsl:call-template> </xsl:if> </xsl:for-each> </xsl:template> <xsl:template name="test_template"> <xsl:param name="b"></xsl:param> <xsl:param name="c"></xsl:param> <xsl:value-of select="$b" /><br/> <xsl:value-of select="$c" /> </xsl:template> </xsl:stylesheet>
|
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
|

Cart








