Subject: Re: [xsl] Ordered Records From: "Stefano Bonnin" <shpr@xxxxxxxxx> Date: Mon, 11 Feb 2002 13:03:30 +0100 |
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@xxxxxxxxxxx> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Ordered Records, ronald heller | Thread | Re: [xsl] Ordered Records, Stefano Bonnin |
[xsl] Re: [xml-dev] [Ann - Zvon] Te, james anderson | Date | [xsl] Re: [xml-dev] [Ann - Zvon] Te, Miloslav Nic |
Month |