Class CollatingFunction

All Implemented Interfaces:
Serializable, SourceLocator, LocationProvider, SaxonLocator, InstructionInfo, Locator
Direct Known Subclasses:
Compare, Contains, DeepEqual, DistinctValues, EndsWith, IndexOf, Minimax, StartsWith, SubstringAfter, SubstringBefore

public abstract class CollatingFunction extends SystemFunction
Abstract superclass for all functions that take an optional collation argument
See Also:
  • Field Details

  • Constructor Details

    • CollatingFunction

      public CollatingFunction()
  • Method Details

    • checkArguments

      public void checkArguments(ExpressionVisitor visitor) throws XPathException
      Description copied from class: SystemFunction
      Method called during static type checking
      Overrides:
      checkArguments in class SystemFunction
      Parameters:
      visitor - the expression visitor
      Throws:
      XPathException - if the arguments are incorrect
    • getExpressionBaseURI

      public URI getExpressionBaseURI()
      Get the saved static base URI
      Returns:
      the static base URI
    • getStringCollator

      public StringCollator getStringCollator()
      Get the collation if known statically, as a StringCollator object
      Returns:
      a StringCollator. Return null if the collation is not known statically.
    • getAbsoluteCollationURI

      public String getAbsoluteCollationURI()
      Get the absolute collation URI if known statically, as a string
      Returns:
      the absolute collation URI, as a string, or null if it is not known statically
    • copy

      public Expression copy()
      Copy an expression. This makes a deep copy.
      Overrides:
      copy in class SystemFunction
      Returns:
      the copy of the original expression
    • equals

      public boolean equals(Object o)
      Determine whether two expressions are equivalent
      Overrides:
      equals in class SystemFunction
    • getAtomicComparer

      protected GenericAtomicComparer getAtomicComparer(int arg, XPathContext context) throws XPathException
      Get a GenericAtomicComparer that can be used to compare values. This method is called at run time by subclasses to evaluate the parameter containing the collation name.

      The difference between this method and getCollator(int, net.sf.saxon.expr.XPathContext) is that a GenericAtomicComparer is capable of comparing values of any atomic type, not only strings. It is therefore called by functions such as compare, deep-equal, index-of, and min() and max() where the operands may include a mixture of strings and other types.

      Parameters:
      arg - the position of the argument (starting at 0) containing the collation name. If this argument was not supplied, the default collation is used
      context - The dynamic evaluation context.
      Returns:
      a GenericAtomicComparer that can be used to compare atomic values.
      Throws:
      XPathException
    • getCollator

      protected StringCollator getCollator(int arg, XPathContext context) throws XPathException
      Get a collator suitable for comparing strings. Returns the collator specified in the given function argument if present, otherwise returns the default collator. This method is called by subclasses at run time. It is used (in contrast to getAtomicComparer(int, net.sf.saxon.expr.XPathContext)) when it is known that the values to be compared are always strings.
      Parameters:
      arg - The argument position (counting from zero) that holds the collation URI if present
      context - The dynamic context
      Returns:
      a StringCollator
      Throws:
      XPathException
    • expandCollationURI

      public static String expandCollationURI(String collationName, URI expressionBaseURI, XPathContext context) throws XPathException
      Throws:
      XPathException