[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Filtering Problem using position()


Subject: Re: [xsl] Filtering Problem using position()
From: David Carlisle <davidc@xxxxxxxxx>
Date: Fri, 8 Nov 2002 17:15:06 GMT

> it seems that it is applying the calculation of the position() toto
> INCLUDE those rows that I had excluded when I did a template match.

yes position() is the position in the current node list ie the nodes
slected by the active apply-templates. in your case that is

  <xsl:apply-templates select="node()|@*"/>

so teh current node list will be (first) all attribute nodes (then) all
text, element, comment etc nodes, in order. position() will reflect the
position of each node matched in this list.

so, don't do this

<xsl:template match="table[2]/tr[td[not(a)  and not(@class)]]">


do this

<xsl:template match="table[2]">
   <xsl:copy>
     <xsl:apply-templates select="tr[td[not(a)  and not(@class)]|@*"/>
   </xsl:copy>
</xsl:template>

now the apply templates from that table will just apply templates to a
list of filtered tr nodes, so position() in teh template will do the
right thing.

David

_____________________________________________________________________
This message has been checked for all known viruses by Star Internet
delivered through the MessageLabs Virus Scanning Service. For further
information visit http://www.star.net.uk/stats.asp or alternatively call
Star Internet for details on the Virus Scanning Service.

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread