This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Ordered Records
- From: "Stefano Bonnin" <shpr at libero dot it>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Mon, 11 Feb 2002 13:03:30 +0100
- Subject: Re: [xsl] Ordered Records
- Organization: comai abitat s.r.l.
- References: <5.0.2.1.0.20020204130059.04d8f630@pop5.inter.nl.net>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Thanks but I have a problem:
Did you try your solution (I think not)
The function position() returns the child position relatively to his parent.
So, if I try your solution with the following xml document:
<document>
<record-set>
<record> <number>10</number><record>
<record><number>9</number><record>
<record><number>8</number><record>
<record><number>7</number><record>
<record><number>6</number><record>
<record><number>5</number><record>
<record><number>4</number><record>
<record><number>3</number><record>
<record><number>2</number><record>
<record><number>1</number><record>
<record-set>
<record-set>
<record> <number>20</number><record>
<record><number>19</number><record>
<record><number>18</number><record>
<record><number>17</number><record>
<record><number>16</number><record>
<record><number>15</number><record>
<record><number>14</number><record>
<record><number>13</number><record>
<record><number>12</number><record>
<record><number>11</number><record>
<record-set>
</document>
I get all 20 records (ordered) because position() returns always a number <
11.
This is valid for all other solutions that the list gave me a few days ago.
Thanks.
----- Original Message -----
From: "ronald heller" <ronald@salience.nl>
To: <xsl-list@lists.mulberrytech.com>
Sent: Monday, February 04, 2002 1:04 PM
Subject: Re: [xsl] Ordered Records
> It's reaaly not that hard with XSLT :-)
>
> ok an example:
>
> so lots of records throughout the XML, you want only to show the smallest
10.
>
> Based on your XML I created a little example.
> First sort your records from small to big, then only do something with the
> first 10.
>
> Cheers
> RH
>
> XSLT:
> <?xml version="1.0"?>
> <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>
> <xsl:template match="/">
> <xsl:apply-templates select="//record">
> <xsl:sort select="number" data-type="number" />
> </xsl:apply-templates>
> </xsl:template>
>
> <xsl:template match="record">
>
> <xsl:choose>
> <xsl:when test="position() < 11">
> <record>
> <xsl:comment>position = <xsl:value-of select="position()"
> /></xsl:comment>
> <xsl:apply-templates select="number" />
> </record>
> </xsl:when>
> <xsl:otherwise>
> <xsl:comment>at least 10 records have smaller
> numbers</xsl:comment>
> </xsl:otherwise>
> </xsl:choose>
>
> </xsl:template>
>
> <xsl:template match="number">
> <number>
> <xsl:apply-templates />
> </number>
> </xsl:template>
>
> </xsl:stylesheet>
>
> XML
> <document>
> <record-set>
> <record>
> <number>100</number>
> </record>
>
> <record>
> <number>5</number>
> </record>
>
> <record>
> <number>102</number>
> </record>
>
> <record>
> <number>51</number>
> </record>
>
> <record>
> <number>101</number>
> </record>
>
> <record>
> <number>52</number>
> </record>
>
> <record>
> <number>12</number>
> </record>
>
> <record>
> <number>15</number>
> </record>
> </record-set>
>
> <record-set>
> <record>
> <number>19</number>
> </record>
>
> <record>
> <number>29</number>
> </record>
>
> <record>
> <number>10</number>
> </record>
>
> <record>
> <number>19</number>
> </record>
>
> <record>
> <number>291</number>
> </record>
>
> <record>
> <number>30</number>
> </record>
>
> <record>
> <number>99</number>
> </record>
>
> <record>
> <number>59</number>
> </record>
>
> <record>
> <number>10</number>
> </record>
> </record-set>
> </document>
>
> HTML:
> <record>
> <!--position = 1-->
> <number>5</number>
> </record>
>
> <record>
> <!--position = 2-->
> <number>10</number>
> </record>
>
> <record>
> <!--position = 3-->
> <number>10</number>
> </record>
>
> <record>
> <!--position = 4-->
> <number>12</number>
> </record>
>
> <record>
> <!--position = 5-->
> <number>15</number>
> </record>
>
> <record>
> <!--position = 6-->
> <number>19</number>
> </record>
>
> <record>
> <!--position = 7-->
> <number>19</number>
> </record>
>
> <record>
> <!--position = 8-->
> <number>29</number>
> </record>
>
> <record>
> <!--position = 9-->
> <number>30</number>
> </record>
>
> <record>
> <!--position = 10-->
> <number>51</number>
> </record>
>
> <!--at least 10 records have smaller numbers-->
> <!--at least 10 records have smaller numbers-->
> <!--at least 10 records have smaller numbers-->
> <!--at least 10 records have smaller numbers-->
> <!--at least 10 records have smaller numbers-->
> <!--at least 10 records have smaller numbers-->
> <!--at least 10 records have smaller numbers-->
>
>
>
> At 12:37 PM 2/4/02 +0100, you wrote:
> >Hi,
> >
> >I have the following XML document:
> >
> ><record-set>
> ><record>
> > <number>N1</number>
> ></record>
> >:
> >:
> >:
> >:
> ><record>
> > <number>Nn</number>
> ></record>
> ></record-set>
> >:
> >:
> >:
> ><record-set>
> ><record>
> > <number>M1</number>
> ></record>
> >:
> >:
> >:
> >:
> ><record>
> > <number>Mn</number>
> ></record>
> ></record-set>
> >
> >In each record-set the records are ordinated (the first has the smallest
> >number, the last has the bigger number).
> >I'd like to take, between all record-set, only the 10 records with
smallest
> >number and print them on the screen.
> >
> >Can I do this with XSL? How?
> >
> >Somebody, if possible, can give me an hint for this problem?
> >
> >Thanks in advance.
> >
> >Stefano
> >
> >
> >
> >
> >---
> >Outgoing mail is certified Virus Free. (CopyRight FLASHH!)
> >Checked by AVG anti-virus system (http://www.grisoft.com).
> >Version: 6.0.320 / Virus Database: 179 - Release Date: 30/01/02
> >
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
---
Outgoing mail is certified Virus Free. (CopyRight FLASHH!)
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.323 / Virus Database: 180 - Release Date: 08/02/02
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list