Class RangeKey

java.lang.Object
net.sf.saxon.ma.map.MapItem
net.sf.saxon.ma.map.RangeKey
All Implemented Interfaces:
Callable, FunctionItem, GroundedValue, Item, Sequence

public class RangeKey extends MapItem
This class implements an XPath map item as a view of an XSLT key index. It is possible to specify a minimum and maximum key value to be included in the map, and keys are returned in sorted order.

At present range keys are only available for string-valued keys using the Unicode codepoint collating sequence.

  • Constructor Details

  • Method Details

    • get

      public GroundedValue get(AtomicValue key)
      Get an entry from the Map
      Specified by:
      get in class MapItem
      Parameters:
      key - the value of the key
      Returns:
      the value associated with the given key, or null if the key is not present in the map
    • size

      public int size()
      Get the size of the map
      Specified by:
      size in class MapItem
      Returns:
      the number of keys/entries present in this map
    • isEmpty

      public boolean isEmpty()
      Ask whether the map is empty
      Overrides:
      isEmpty in class MapItem
      Returns:
      true if and only if the size of the map is zero
    • keys

      public AtomicIterator keys()
      Get the set of all key values in the map.
      Specified by:
      keys in class MapItem
      Returns:
      a set containing all the key values present in the map.
    • keyValuePairs

      public Iterable<KeyValuePair> keyValuePairs()
      Get the set of all key-value pairs in the map
      Specified by:
      keyValuePairs in class MapItem
      Returns:
      an iterator over the key-value pairs
    • remove

      public MapItem remove(AtomicValue key)
      Remove an entry from the map
      Specified by:
      remove in class MapItem
      Parameters:
      key - the key of the entry to be removed
      Returns:
      a new map in which the requested entry has been removed; or this map unchanged if the specified key was not present
    • getKeyUType

      public UType getKeyUType()
      Get the lowest common item type of the keys in the map
      Specified by:
      getKeyUType in class MapItem
      Returns:
      the most specific type to which all the keys belong. If the map is empty, return ErrorType.getInstance() (the type with no instances)
    • addEntry

      public MapItem addEntry(AtomicValue key, GroundedValue value)
      Create a new map containing the existing entries in the map plus an additional entry, without modifying the original. If there is already an entry with the specified key, this entry is replaced by the new entry.
      Specified by:
      addEntry in class MapItem
      Parameters:
      key - the key of the new entry
      value - the value associated with the new entry
      Returns:
      the new map containing the additional entry
    • conforms

      public boolean conforms(PlainType keyType, SequenceType valueType, TypeHierarchy th)
      Ask whether the map conforms to a given map type
      Specified by:
      conforms in class MapItem
      Parameters:
      keyType - the required keyType
      valueType - the required valueType
      th - the type hierarchy cache for the configuration
      Returns:
      true if the map conforms to the required type
    • getItemType

      public MapType getItemType(TypeHierarchy th)
      Get the type of the map. This method is used largely for diagnostics, to report the type of a map when it differs from the required type.
      Specified by:
      getItemType in class MapItem
      Parameters:
      th - the type hierarchy (not used)
      Returns:
      the type of this map
    • getFunctionItemType

      public MapType getFunctionItemType()
      Get the item type of the function item
      Specified by:
      getFunctionItemType in interface FunctionItem
      Overrides:
      getFunctionItemType in class MapItem
      Returns:
      the function item's type
    • getDescription

      public String getDescription()
      Get a description of this function for use in error messages. For named functions, the description is the function name (as a lexical QName). For others, it might be, for example, "inline function", or "partially-applied ends-with function".
      Specified by:
      getDescription in interface FunctionItem
      Overrides:
      getDescription in class MapItem
      Returns:
      a description of the function for use in error messages
    • deepEquals

      public boolean deepEquals(FunctionItem other, XPathContext context, AtomicComparer comparer, int flags)
      Test whether this FunctionItem is deep-equal to another function item, under the rules of the deep-equal function
      Specified by:
      deepEquals in interface FunctionItem
      Overrides:
      deepEquals in class MapItem
      Parameters:
      other - the other function item
      context - the dynamic evaluation context
      comparer - the object to perform the comparison
      flags - options for how the comparison is performed
      Returns:
      true if the two function items are deep-equal
    • deepEqual40

      public boolean deepEqual40(FunctionItem other, XPathContext context, DeepEqual.DeepEqualOptions options)
      Specified by:
      deepEqual40 in interface FunctionItem
      Overrides:
      deepEqual40 in class MapItem
    • export

      public void export(ExpressionPresenter out) throws XPathException
      Output information about this function item to the diagnostic explain() output
      Specified by:
      export in interface FunctionItem
      Overrides:
      export in class MapItem
      Parameters:
      out - the destination for the information
      Throws:
      XPathException - if things go wrong
    • isTrustedResultType

      public boolean isTrustedResultType()
      Description copied from interface: FunctionItem
      Ask if the function can be trusted to return a result of the correct type
      Specified by:
      isTrustedResultType in interface FunctionItem
      Overrides:
      isTrustedResultType in class MapItem
      Returns:
      true if the implementation can be trusted
    • toString

      public String toString()
      Overrides:
      toString in class Object