Package net.sf.saxon.expr
Class AtomicMappingExpression
- java.lang.Object
-
- net.sf.saxon.expr.Expression
-
- net.sf.saxon.expr.SlashExpression
-
- net.sf.saxon.expr.AtomicMappingExpression
-
- All Implemented Interfaces:
java.io.Serializable
,javax.xml.transform.SourceLocator
,LocationProvider
,SaxonLocator
,ContextMappingFunction
,EvaluableItem
,SequenceIterable
,InstructionInfo
,org.xml.sax.Locator
public final class AtomicMappingExpression extends SlashExpression implements ContextMappingFunction
An atomic mapping expression is a slash expression A/B where B has a static type that is an atomic type. For example, * / name().- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class net.sf.saxon.expr.Expression
EVALUATE_METHOD, ITERATE_METHOD, locationId, PROCESS_METHOD, staticProperties
-
-
Constructor Summary
Constructors Constructor Description AtomicMappingExpression(Expression start, Expression step)
Constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Expression
copy()
Copy an expression.void
explain(ExpressionPresenter destination)
Diagnostic print of expression structure.boolean
isHybrid()
Determine whether this expression is capable (as far as static analysis is concerned) of returning a mixture of nodes and atomic values.SequenceIterator
iterate(XPathContext context)
Iterate the path-expression in a given contextExpression
typeCheck(ExpressionVisitor visitor, ItemType contextItemType)
Type-check the expression-
Methods inherited from class net.sf.saxon.expr.SlashExpression
computeCardinality, computeDependencies, computeSpecialProperties, equals, getItemType, getStartExpression, getStepExpression, hashCode, hasLoopingSubexpression, iterateSubExpressions, makeSlashExpression, map, optimize, promote, promoteFocusIndependentSubexpressions, replaceSubExpression, setStartExpression, setStepExpression, simplify
-
Methods inherited from class net.sf.saxon.expr.Expression
addToPathMap, adoptChildExpression, checkForUpdatingSubexpressions, checkPermittedContents, computeStaticProperties, display, doPromotion, dynamicError, effectiveBooleanValue, evaluateAsString, evaluateItem, evaluatePendingUpdates, explain, findParentOf, getCardinality, getColumnNumber, getColumnNumber, getConstructType, getContainer, getDependencies, getExecutable, getHostLanguage, getImplementationMethod, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, getSystemId, implementsStaticTypeCheck, isUpdatingExpression, iterateEvents, markTailFunctionCalls, process, resetLocalStaticProperties, setContainer, setFiltered, setFlattened, setLocationId, staticTypeCheck, suppressValidation, toString, typeError
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface net.sf.saxon.expr.ContextMappingFunction
map
-
-
-
-
Constructor Detail
-
AtomicMappingExpression
public AtomicMappingExpression(Expression start, Expression step)
Constructor- Parameters:
start
- A node-set expression denoting the absolute or relative set of nodes from which the navigation path should start.step
- The step to be followed from each node in the start expression to yield a new node-set
-
-
Method Detail
-
isHybrid
public boolean isHybrid()
Determine whether this expression is capable (as far as static analysis is concerned) of returning a mixture of nodes and atomic values. If so, this needs to be prevented at run time- Overrides:
isHybrid
in classSlashExpression
- Returns:
- true if the static type allows both nodes and atomic values
-
typeCheck
public Expression typeCheck(ExpressionVisitor visitor, ItemType contextItemType)
Type-check the expression- Overrides:
typeCheck
in classSlashExpression
- Parameters:
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 toType.ITEM_TYPE
- Returns:
- the original expression, rewritten to perform necessary run-time type checks, and to perform other type-related optimizations
-
copy
public Expression copy()
Copy an expression. This makes a deep copy.- Overrides:
copy
in classSlashExpression
- Returns:
- the copy of the original expression
-
iterate
public SequenceIterator iterate(XPathContext context) throws XPathException
Iterate the path-expression in a given context- Specified by:
iterate
in interfaceSequenceIterable
- Overrides:
iterate
in classSlashExpression
- Parameters:
context
- the evaluation context- Returns:
- a SequenceIterator that can be used to iterate over the result of the expression
- Throws:
XPathException
- if any dynamic error occurs evaluating the expression
-
explain
public void explain(ExpressionPresenter destination)
Diagnostic print of expression structure. The abstract expression tree is written to the supplied output destination.- Overrides:
explain
in classSlashExpression
- Parameters:
destination
- the expression presenter used to display the structure
-
-