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(_at_)onebox(_dot_)com - email
-----Original Message-----
From: David Carlisle <davidc(_at_)nag(_dot_)co(_dot_)uk>
Sent: Mon, 17 Jan 2005 14:34:00 GMT
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] 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
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--