Re: [xsl] LimitPredicate

Subject: Re: [xsl] LimitPredicate
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Sat, 07 Aug 2004 10:37:48 -0400
At 2004-08-07 17:09 +0300, mankar@xxxxxxxxxxxxxxx wrote:
I am having trouble detecting specific nodes in a node-set
...
I
mean
can i write something like select"ITEM[position() mod 3 = 1](4) to select
just the fourth node
among the particular nodes.

You are so very close ... XPath does work as you expect, but your syntax is not quite right.


You can use:

ITEM[position() mod 3 = 1][4]

which is equivalent to:

ITEM[position() mod 3 = 1][position() = 4]

because each predicate is applied to the node set *resulting* from having applied the previous predicate.

I hope this helps.

....................... Ken

t:\ftemp>type manousos.xml
<ITEMS>
<ITEM>1</ITEM>
<ITEM>2</ITEM>
<ITEM>5</ITEM>
<ITEM>7</ITEM>
<ITEM>2</ITEM>
<ITEM>5</ITEM>
<ITEM>10</ITEM>
<ITEM>2</ITEM>
<ITEM>5</ITEM>
<ITEM>15</ITEM>
<ITEM>2</ITEM>
<ITEM>5</ITEM>
<ITEM>17</ITEM>
<ITEM>2</ITEM>
<ITEM>5</ITEM>
</ITEMS>

t:\ftemp>type manousos.xsl
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                version="1.0">

<xsl:output method="text"/>

<xsl:template match="ITEMS">
  <xsl:value-of select="ITEM[position() mod 3 = 1][4]"/>
</xsl:template>

</xsl:stylesheet>
t:\ftemp>saxon manousos.xml manousos.xsl
15
t:\ftemp>


-- World-wide on-site corporate, govt. & user group XML/XSL training. G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995) Male Breast Cancer Awareness http://www.CraneSoftwrights.com/s/bc Legal business disclaimers: http://www.CraneSoftwrights.com/legal

Current Thread
  • [xsl] LimitPredicate
    • mankar - Sat, 7 Aug 2004 17:09:08 +0300
      • <Possible follow-ups>
      • G. Ken Holman - Sat, 07 Aug 2004 10:37:48 -0400 <=
      • mankar - Sat, 7 Aug 2004 17:57:55 +0300
      • mankar - Sat, 7 Aug 2004 23:27:31 +0300