Class SortKeyDefinition

java.lang.Object
net.sf.saxon.sort.SortKeyDefinition
All Implemented Interfaces:
Serializable

public class SortKeyDefinition extends Object implements Serializable
A SortKeyDefinition defines one component of a sort key.
Note that most attributes defining the sort key can be attribute value templates, and can therefore vary from one invocation to another. We hold them as expressions. As soon as they are all known (which in general is only at run-time), the SortKeyDefinition is replaced by a FixedSortKeyDefinition in which all these values are fixed.
See Also:
  • Field Details

    • sortKey

      protected Expression sortKey
    • order

      protected Expression order
    • dataTypeExpression

      protected Expression dataTypeExpression
    • caseOrder

      protected Expression caseOrder
    • language

      protected Expression language
    • collationName

      protected Expression collationName
    • stable

      protected Expression stable
    • collation

      protected transient Comparator collation
    • baseURI

      protected String baseURI
    • emptyLeast

      protected boolean emptyLeast
    • backwardsCompatible

      protected boolean backwardsCompatible
    • parentExpression

      protected Container parentExpression
    • comparer

      protected transient Comparator comparer
  • Constructor Details

    • SortKeyDefinition

      public SortKeyDefinition()
  • Method Details

    • setParentExpression

      public void setParentExpression(Container container)
    • getParentExpression

      public Container getParentExpression()
    • setSortKey

      public void setSortKey(Expression exp)
      Set the expression used as the sort key
    • getSortKey

      public Expression getSortKey()
      Get the expression used as the sort key
    • setOrder

      public void setOrder(Expression exp)
      Set the order. This is supplied as an expression which must evaluate to "ascending" or "descending". If the order is fixed, supply e.g. new StringValue("ascending"). Default is "ascending".
    • getOrder

      public Expression getOrder()
    • setDataTypeExpression

      public void setDataTypeExpression(Expression exp)
      Set the data type. This is supplied as an expression which must evaluate to "text", "number", or a QName. If the data type is fixed, the valus should be supplied using setDataType() and not via this method.
    • getDataTypeExpression

      public Expression getDataTypeExpression()
    • setCaseOrder

      public void setCaseOrder(Expression exp)
      Set the case order. This is supplied as an expression which must evaluate to "upper-first" or "lower-first" or "#default". If the order is fixed, supply e.g. new StringValue("lower-first"). Default is "#default".
    • getCaseOrder

      public Expression getCaseOrder()
    • setLanguage

      public void setLanguage(Expression exp)
      Set the language. This is supplied as an expression which evaluates to the language name. If the order is fixed, supply e.g. new StringValue("de").
    • getLanguage

      public Expression getLanguage()
    • setCollationName

      public void setCollationName(Expression collationName)
      Set the collation.
    • getCollationName

      public Expression getCollationName()
    • setCollation

      public void setCollation(Comparator collation)
    • getCollation

      public Comparator getCollation()
    • setBaseURI

      public void setBaseURI(String baseURI)
    • getBaseURI

      public String getBaseURI()
    • setStable

      public void setStable(Expression stable)
    • getStable

      public Expression getStable()
    • setBackwardsCompatible

      public void setBackwardsCompatible(boolean compatible)
    • isBackwardsCompatible

      public boolean isBackwardsCompatible()
    • setEmptyLeast

      public void setEmptyLeast(boolean emptyLeast)
      Set whether empty sequence comes before other values or after them
      Parameters:
      emptyLeast - true if () is considered lower than any other value
    • getEmptyLeast

      public boolean getEmptyLeast()
    • isFixed

      public boolean isFixed()
      Determine whether the sort key definition is fixed, that is, whether all the information needed to create a Comparator is known statically
    • simplify

      public SortKeyDefinition simplify(StaticContext env, Executable exec) throws XPathException
      Throws:
      XPathException
    • makeComparator

      public Comparator makeComparator(XPathContext context) throws XPathException
      Allocate a Comparator to perform the comparisons described by this sort key component
      Throws:
      XPathException
    • setComparer

      public void setComparer(Comparator comp)
      Set the comparer which is used to compare two values according to this sort key.
    • getComparer

      public Comparator getComparer()
      Get the comparer which is used to compare two values according to this sort key.