Subject: Re: sorting & counting From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Wed, 28 Jun 2000 22:03:54 +0100 |
Igor, >1. sort them by 'priority' >2. leave, say, only 3 nodes in the result Here's a solution. First, specify the number of nodes you want in a parameter, so that you can change it whenever you like: <xsl:param name="nodes" select="'3'" /> Next, you want to treat the nodes individually despite them being nested inside each other, and you want to sort them within your output in order of priority. You can use either xsl:for-each or xsl:apply-templates to select the nodes within the document, whatever their level (using //node) and xsl:sort within whichever you use to sort in order of priority. For example: <xsl:for-each select="//node"> <xsl:sort select="@priority" order="ascending" /> ... </xsl:for-each> Within that, you only want to output anything if the position of the node within that sorted list is less than or equal to the number of nodes you want in the result. In other words: <xsl:for-each select="//node"> <xsl:sort select="@priority" order="ascending" /> <xsl:if test="position() <= number($nodes)"> <xsl:value-of select="name" /> </xsl:if> </xsl:for-each> Tested and works in SAXON. I hope this helps, Jeni Dr Jeni Tennison Epistemics Ltd * Strelley Hall * Nottingham * NG8 6PE tel: 0115 906 1301 * fax: 0115 906 1304 * email: jeni.tennison@xxxxxxxxxxxxxxxx XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
sorting & counting, Igor Semenko | Thread | Complex table of content generation, Jean-Claude Tarby |
RE: XML to HTML, Vinay Jaiswal | Date | output redirect, xsl list |
Month |