[Home] [By Thread] [By Date] [Recent Entries]

Subject: RE: Re: Counting matching elements across two documents
From: cknell@xxxxxxxxxx
Date: Mon, 17 Jan 2005 09:51:07 -0500
Thanks, that did it. Before I sent the message I tried using a variable to represent the main document for use in the for-each section, but I couldn't work out the issue with current(). As for speed, in this application neither of the input documents are going to grow large enough for that to be a concern.
-- 
Charles Knell
cknell@xxxxxxxxxx - email



-----Original Message-----
From:     David Carlisle <davidc@xxxxxxxxx>
Sent:     Mon, 17 Jan 2005 14:34:00 GMT
To:       xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject:  Re:  Counting matching elements across two documents


  <xsl:value-of select="count(//player[number = ./number])" />

The Xpaths number and ./number will always select the same thing so your
predicate is the same as true() ie the same as no predicate.

I think you want current() not . to get the number of the current player
in $roster.

//player selects all the players in the current document which is
roster.xml at this point. I think you intend that to be in matches.xml
in which case it wants to start with $matches  not with / where
$matches is defined at the top level by
<xsl:variable name="matches" select="/">

$matches/matches/week/match/player[lag='W'][number=current()/number]

I changed // to an explict path as morally it ought to be faster, but
last time I told someone to do that MK pointed out that saxon has
optimisations for // (saving previous results) not used in general so it
isn't clearly a win. In any case probably using keys would speed things
up (or at least make the optimisation explict) but best to get things
working before worrying about speed.


David

Current Thread
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member