Interestingly, using 'cast as' on $middle to narrow it to an integer
causes the execution time to increase by 250ms, so I've left
them all as
doubles (the positional predicate in $currentNode doesn't
appear to mind
using a double).
That makes me realise that it would actually avoid many string->number
conversions if you extracted the ranges as two sequences of integers in
global variables:
<xsl:variable name="lows" select="$ranges/*/@from/xs:integer(.)"
as="xs:integer*"/>
<xsl:variable name="highs" select="$ranges/*/@to/xs:integer(.)"
as="xs:integer*"/>
<xsl:variable name="n" select="count($lows)" as="xs:integer"/>
test="some $i in 1 to $n satisfies ($highs[$i] ge $test and $lows[$i] le
$test)"
Michael Kay
http://www.saxonica.com/
--~------------------------------------------------------------------
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>
--~--