Package net.sf.saxon.sort
Class SortKeyDefinition
java.lang.Object
net.sf.saxon.sort.SortKeyDefinition
- All Implemented Interfaces:
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.
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 Summary
FieldsModifier and TypeFieldDescriptionprotected boolean
protected String
protected Expression
protected StringCollator
protected Expression
protected Expression
protected boolean
protected Expression
protected Expression
protected Expression
protected Expression
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionGet the static base URI of the expression.Get the expression that defines the case order of the sort keys.Get the collation to be usedGet the selected collation name (specifically, an expression which when evaluated returns the collation URI).Get the expression that defines the data type of the sort keysboolean
Ask whether empty sequence comes before other values or after themGet the comparator which is used to compare two values according to this sort key.Get the expression that defines the language of the sort keysgetOrder()
Get the expression that defines the order as ascending or descendingGet the expression used as the sort keyAsk whether this sort key definition is stableboolean
Ask whether this sort key is evaluated in XSLT 1.0 backwards compatibility modeboolean
isFixed()
Ask whether the sort key definition is fixed, that is, whether all the information needed to create a Comparator is known staticallymakeComparator
(XPathContext context) Allocate an AtomicComparer to perform the comparisons described by this sort key component.void
setBackwardsCompatible
(boolean compatible) Set whether this sort key is evaluated in XSLT 1.0 backwards compatibility modevoid
setBaseURI
(String baseURI) Set the base URI of the expression.void
setCaseOrder
(Expression exp) Set the case order.void
setCollation
(StringCollator collation) Set the collation to be usedvoid
setCollationNameExpression
(Expression collationName) Set the collation name (specifically, an expression which when evaluated returns the collation URI).void
Set the data type.void
setEmptyLeast
(boolean emptyLeast) Set whether empty sequence comes before other values or after themvoid
Set the comparator which is used to compare two values according to this sort key.void
setLanguage
(Expression exp) Set the language.void
setOrder
(Expression exp) Set the order.void
setSortKey
(Expression exp) Set the expression used as the sort keyvoid
setStable
(Expression stable) Set whether this sort key definition is stablesimplify
(ExpressionVisitor visitor) Simplify this sort key definition
-
Field Details
-
sortKey
-
order
-
dataTypeExpression
-
caseOrder
-
language
-
collationName
-
stable
-
collation
-
baseURI
-
emptyLeast
protected boolean emptyLeast -
backwardsCompatible
protected boolean backwardsCompatible
-
-
Constructor Details
-
SortKeyDefinition
public SortKeyDefinition()
-
-
Method Details
-
setSortKey
Set the expression used as the sort key- Parameters:
exp
- the sort key select expression
-
getSortKey
Get the expression used as the sort key- Returns:
- the sort key select expression
-
setOrder
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".- Parameters:
exp
- the expression that determines the order (always a literal in XQuery, but can be defined by an AVT in XSLT)
-
getOrder
Get the expression that defines the order as ascending or descending- Returns:
- the expression that determines the order (always a literal in XQuery, but can be defined by an AVT in XSLT)
-
setDataTypeExpression
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.- Parameters:
exp
- the expression that defines the data type, as used in XSLT 1.0
-
getDataTypeExpression
Get the expression that defines the data type of the sort keys- Returns:
- the expression that defines the data type, as used in XSLT 1.0
-
setCaseOrder
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".- Parameters:
exp
- the expression that defines the case order
-
getCaseOrder
Get the expression that defines the case order of the sort keys.- Returns:
- the expression that defines the case order, whose run-time value will be "upper-first", "lower-first", or "#default".
-
setLanguage
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").- Parameters:
exp
- the expression that determines the language
-
getLanguage
Get the expression that defines the language of the sort keys- Returns:
- exp the expression that determines the language
-
setCollationNameExpression
Set the collation name (specifically, an expression which when evaluated returns the collation URI).- Parameters:
collationName
- the expression that determines the collation name
-
getCollationNameExpression
Get the selected collation name (specifically, an expression which when evaluated returns the collation URI).- Returns:
- the expression that determines the collation name
-
setCollation
Set the collation to be used- Parameters:
collation
- A StringCollator, which encapsulates both the collation URI and the collating function
-
getCollation
Get the collation to be used- Returns:
- A StringCollator, which encapsulates both the collation URI and the collating function
-
setBaseURI
Set the base URI of the expression. This is needed to handle the case where a collation URI evaluated at run-time turns out to be a relative URI.- Parameters:
baseURI
- the static base URI of the expression
-
getBaseURI
Get the static base URI of the expression. This is needed to handle the case where a collation URI evaluated at run-time turns out to be a relative URI.- Returns:
- the static base URI of the expression
-
setStable
Set whether this sort key definition is stable- Parameters:
stable
- the expression that determines whether the sort key definition is stable (it evaluates to the string "yes" or "no".
-
getStable
Ask whether this sort key definition is stable- Returns:
- the expression that determines whether the sort key definition is stable (it evaluates to the string "yes" or "no".
-
setBackwardsCompatible
public void setBackwardsCompatible(boolean compatible) Set whether this sort key is evaluated in XSLT 1.0 backwards compatibility mode- Parameters:
compatible
- true if backwards compatibility mode is selected
-
isBackwardsCompatible
public boolean isBackwardsCompatible()Ask whether this sort key is evaluated in XSLT 1.0 backwards compatibility mode- Returns:
- true if backwards compatibility mode was selected
-
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()Ask whether empty sequence comes before other values or after them- Returns:
- true if () is considered lower than any other value
-
isFixed
public boolean isFixed()Ask whether the sort key definition is fixed, that is, whether all the information needed to create a Comparator is known statically- Returns:
- true if all information needed to create a Comparator is known statically
-
simplify
Simplify this sort key definition- Parameters:
visitor
- the expression visitor- Returns:
- the simplified sort key definition
- Throws:
XPathException
- if any failure occurs
-
makeComparator
Allocate an AtomicComparer to perform the comparisons described by this sort key component. This method is called at run-time. The AtomicComparer takes into account not only the collation, but also parameters such as order=descending and handling of empty sequence and NaN (the result of the compare() method of the comparator is +1 if the second item is to sort after the first item)- Parameters:
context
- the dynamic evaluation context- Returns:
- an AtomicComparer suitable for making the sort comparisons
- Throws:
XPathException
-
setFinalComparator
Set the comparator which is used to compare two values according to this sort key. The comparator makes the final decision whether one value sorts before or after another: this takes into account the data type, the collation, whether empty comes first or last, whether the sort order is ascending or descending.This method is called at compile time if all these factors are known at compile time. It must not be called at run-time, except to reconstitute a finalComparator that has been lost by virtue of serialization .
- Parameters:
comp
- the Atomic Comparer to be used
-
getFinalComparator
Get the comparator which is used to compare two values according to this sort key. This method may be called either at compile time or at run-time. If no comparator has been allocated, it returns null. It is then necessary to allocate a comparator using themakeComparator(net.sf.saxon.expr.XPathContext)
method.- Returns:
- the Atomic Comparer to be used
-