net.sf.saxon.instruct
Class NumberInstruction
- EvaluableItem, InstructionInfoProvider, SequenceIterable, Serializable, SourceLocator
public class NumberInstruction
An xsl:number element in the stylesheet. Although this is an XSLT instruction, it is compiled
into an expression, evaluated using xsl:value-of to create the resulting text node.
NumberInstruction(Configuration config, Expression select, int level, Pattern count, Pattern from, Expression value, Expression format, Expression groupSize, Expression groupSeparator, Expression letterValue, Expression ordinal, Expression lang, NumberFormatter formatter, Numberer numberer, boolean hasVariablesInPatterns, boolean backwardsCompatible) - Construct a NumberInstruction
|
addToPathMap , adoptChildExpression , checkPermittedContents , computeCardinality , computeDependencies , computeSpecialProperties , computeStaticProperties , copy , display , doPromotion , dynamicError , effectiveBooleanValue , evaluateAsString , evaluateItem , explain , explain , findParentOf , getCardinality , getColumnNumber , getConstructType , getContainer , getDependencies , getExecutable , getHostLanguage , getImplementationMethod , getInstructionInfo , getIntrinsicDependencies , getItemType , getLineNumber , getLocationId , getLocationProvider , getPublicId , getSlotsUsed , getSpecialProperties , getSystemId , hasLoopingSubexpression , implementsStaticTypeCheck , iterate , iterateEvents , iterateSubExpressions , markTailFunctionCalls , optimize , process , promote , replaceSubExpression , resetLocalStaticProperties , setContainer , setFiltered , setFlattened , setLocationId , simplify , staticTypeCheck , suppressValidation , toString , typeCheck , typeError |
NumberInstruction
public NumberInstruction(Configuration config,
Expression select,
int level,
Pattern count,
Pattern from,
Expression value,
Expression format,
Expression groupSize,
Expression groupSeparator,
Expression letterValue,
Expression ordinal,
Expression lang,
NumberFormatter formatter,
Numberer numberer,
boolean hasVariablesInPatterns,
boolean backwardsCompatible)
Construct a NumberInstruction
config
- the Saxon configurationselect
- the expression supplied in the select attributelevel
- one of "single", "level", "multi"count
- the pattern supplied in the count attributefrom
- the pattern supplied in the from attributevalue
- the expression supplied in the value attributeformat
- the expression supplied in the format attributegroupSize
- the expression supplied in the group-size attributegroupSeparator
- the expression supplied in the grouping-separator attributeletterValue
- the expression supplied in the letter-value attributeordinal
- the expression supplied in the ordinal attributelang
- the expression supplied in the lang attributeformatter
- A NumberFormatter to be usednumberer
- A Numberer to be used for localizationhasVariablesInPatterns
- true if one or more of the patterns contains variable referencesbackwardsCompatible
- true if running in 1.0 compatibility mode
computeCardinality
public int computeCardinality()
Compute the static cardinality of this expression
- computeCardinality in interface Expression
copy
public Expression copy()
Copy an expression. This makes a deep copy.
- copy in interface Expression
- the copy of the original expression
evaluateItem
public Item evaluateItem(XPathContext context)
throws XPathException
Evaluate an expression as a single item. This always returns either a single Item or
null (denoting the empty sequence). No conversion is done. This method should not be
used unless the static type of the expression is a subtype of "item" or "item?": that is,
it should not be called if the expression may return a sequence. There is no guarantee that
this condition will be detected.
- evaluateItem in interface EvaluableItem
- evaluateItem in interface Expression
context
- The context in which the expression is to be evaluated
- the node or atomic value that results from evaluating the
expression; or null to indicate that the result is an empty
sequence
XPathException
- if any dynamic error occurs evaluating the
expression
explain
public void explain(ExpressionPresenter out)
Diagnostic print of expression structure. The abstract expression tree
is written to the supplied output destination.
- explain in interface Expression
getIntrinsicDependencies
public int getIntrinsicDependencies()
Determine the intrinsic dependencies of an expression, that is, those which are not derived
from the dependencies of its subexpressions. For example, position() has an intrinsic dependency
on the context position, while (position()+1) does not. The default implementation
of the method returns 0, indicating "no dependencies".
- getIntrinsicDependencies in interface Expression
- a set of bit-significant flags identifying the "intrinsic"
dependencies. The flags are documented in class net.sf.saxon.value.StaticProperty
getItemType
public ItemType getItemType(TypeHierarchy th)
Determine the data type of the expression, if possible. All expression return
sequences, in general; this method determines the type of the items within the
sequence, assuming that (a) this is known in advance, and (b) it is the same for
all items in the sequence.
This method should always return a result, though it may be the best approximation
that is available at the time.
- getItemType in interface Expression
th
- the type hierarchy cache
- a value such as Type.STRING, Type.BOOLEAN, Type.NUMBER,
Type.NODE, or Type.ITEM (meaning not known at compile time)
iterateSubExpressions
public Iterator iterateSubExpressions()
Get the immediate sub-expressions of this expression. Default implementation
returns a zero-length array, appropriate for an expression that has no
sub-expressions.
- iterateSubExpressions in interface Expression
- an iterator containing the sub-expressions of this expression
makeNumberer
public static Numberer makeNumberer(String language,
String country,
XPathContext context)
Load a Numberer class for a given language and check it is OK.
language
- the language for which a Numberer is requiredcountry
- the country for which a Numberer is requiredcontext
- XPath dynamic evaluation context
- a suitable numberer. If no specific numberer is available
for the language, the default (English) numberer is used.
optimize
public Expression optimize(ExpressionVisitor visitor,
ItemType contextItemType)
throws XPathException
Perform optimisation of an expression and its subexpressions.
This method is called after all references to functions and variables have been resolved
to the declaration of the function or variable, and after all type checking has been done.
- optimize in interface Expression
visitor
- an expression visitorcontextItemType
- the static type of "." at the point where this expression is invoked.
The parameter is set to null if it is known statically that the context item will be undefined.
If the type of the context item is not known statically, the argument is set to
Type.ITEM_TYPE
- the original expression, rewritten if appropriate to optimize execution
XPathException
- if an error is discovered during this phase
(typically a type error)
promote
public Expression promote(PromotionOffer offer)
throws XPathException
Offer promotion for this subexpression. The offer will be accepted if the subexpression
is not dependent on the factors (e.g. the context item) identified in the PromotionOffer.
By default the offer is not accepted - this is appropriate in the case of simple expressions
such as constant values and variable references where promotion would give no performance
advantage. This method is always called at compile time.
- promote in interface Expression
offer
- details of the offer, for example the offer to move
expressions that don't depend on the context to an outer level in
the containing expression
- if the offer is not accepted, return this expression unchanged.
Otherwise return the result of rewriting the expression to promote
this subexpression
replaceSubExpression
public boolean replaceSubExpression(Expression original,
Expression replacement)
Replace one subexpression by a replacement subexpression
- replaceSubExpression in interface Expression
original
- the original subexpressionreplacement
- the replacement subexpression
- true if the original subexpression is found
simplify
public Expression simplify(ExpressionVisitor visitor)
throws XPathException
Simplify an expression. This performs any static optimization (by rewriting the expression
as a different expression). The default implementation does nothing.
- simplify in interface Expression
visitor
- an expression visitor
- the simplified expression
XPathException
- if an error is discovered during expression
rewriting
typeCheck
public Expression typeCheck(ExpressionVisitor visitor,
ItemType contextItemType)
throws XPathException
Perform static analysis of an expression and its subexpressions.
This checks statically that the operands of the expression have
the correct type; if necessary it generates code to do run-time type checking or type
conversion. A static type error is reported only if execution cannot possibly succeed, that
is, if a run-time type error is inevitable. The call may return a modified form of the expression.
This method is called after all references to functions and variables have been resolved
to the declaration of the function or variable. However, the types of such functions and
variables will only be accurately known if they have been explicitly declared.
- typeCheck in interface Expression
visitor
- an expression visitor
- the original expression, rewritten to perform necessary
run-time type checks, and to perform other type-related
optimizations
XPathException
- if an error is discovered during this phase
(typically a type error)