Class MultiIndex
A MultiIndex handles a single "use" expression, for a single population.
The class is used to support indexes over the value of a variable, as determined by the Saxon-EE optimizer.
The class supports two kinds of equality matching. In ConvertUntypedToOther mode, corresponding to the XPath "=" operator, an untyped value is converted to the type of the other item, so the double 5e0 will match the untypedAtomic value "5". In ConvertUntypedToString mode, untyped atomic values are always converted to strings: this corresponds to the XPath "eq" operator (and to the rules for xsl:key).
Each MultiIndex index is in fact a set of sub-indexes, one for each primitive type encountered. In an expression such as $seq[./A = $B], one sub-index is built for each primitive type that occurs in the sequence $B. In this index, any untyped atomic values in ./A are converted to that primitive type. For an expression such as $seq[./A eq $B], a single index is built, in which untyped atomic values in ./A are converted to strings.
A particular difficulty arises where $B (in the expression $seq[./A eq $B]) is untypedAtomic. In this situation an index is built in which any untypedAtomic values in ./A are indexed as strings. While building the index, we note all the primitive types that occur in ./A, and then we convert the search term $B to each of these types in turn before doing the index lookup. In practice, of course, it is very rare for the index to be heterogeneous.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
Iterator over a subset of the items in this IndexedValue, identified by an IntSet holding the positions of the items in the selected subset (zero-based) -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfindItems
(Expression use, SequenceIterator values, boolean convertUntypedToOther, StringCollator collator, XPathContext context) Retrieve items that match a given index value
-
Constructor Details
-
MultiIndex
Create a MultiIndex- Parameters:
indexedValue
- the sequence to be indexed
-
-
Method Details
-
findItems
public SequenceIterator findItems(Expression use, SequenceIterator values, boolean convertUntypedToOther, StringCollator collator, XPathContext context) throws XPathException Retrieve items that match a given index value- Parameters:
use
- the expression whose value is to be matchedvalues
- the set of values to be foundconvertUntypedToOther
- true if untypedAtomic values are to be converted to the type of the other operandcollator
- StringCollator used to compare values for equality (encapsulates a collation if necessary)context
- the dynamic evaluation context- Returns:
- an iterator over the items that match the specified values
- Throws:
XPathException
- if a failure occurs
-