net.sf.saxon.expr
Class AtomicMappingExpression

java.lang.Object
  extended by net.sf.saxon.expr.Expression
      extended by net.sf.saxon.expr.SlashExpression
          extended by net.sf.saxon.expr.AtomicMappingExpression
All Implemented Interfaces:
Serializable, SourceLocator, LocationProvider, SaxonLocator, ContextMappingFunction, ContextSwitchingExpression, EvaluableItem, SequenceIterable, InstructionInfo, 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
AtomicMappingExpression(Expression start, Expression step)
          Constructor
 
Method Summary
 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 context
 Expression typeCheck(ExpressionVisitor visitor, ItemType contextItemType)
          Type-check the expression
 
Methods inherited from class net.sf.saxon.expr.SlashExpression
computeCardinality, computeDependencies, computeSpecialProperties, equals, getControlledExpression, getControllingExpression, getFirstStep, getItemType, getLastStep, getLeadingSteps, getRemainingSteps, hashCode, hasLoopingSubexpression, iterateSameFocusSubExpressions, iterateSubExpressions, makeSlashExpression, map, optimize, promote, promoteFocusIndependentSubexpressions, replaceSubExpression, setStartExpression, setStepExpression, simplify
 
Methods inherited from class net.sf.saxon.expr.Expression
addToPathMap, adoptChildExpression, checkForUpdatingSubexpressions, checkPermittedContents, computeStaticProperties, doPromotion, dynamicError, effectiveBooleanValue, evaluateAsString, evaluateItem, evaluatePendingUpdates, explain, getCardinality, getColumnNumber, getColumnNumber, getConstructType, getContainer, getDependencies, getExecutable, getHostLanguage, getImplementationMethod, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, getSystemId, implementsStaticTypeCheck, isSubtreeExpression, isUpdatingExpression, isVacuousExpression, 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 class SlashExpression
Returns:
true if the static type allows both nodes and atomic values

typeCheck

public Expression typeCheck(ExpressionVisitor visitor,
                            ItemType contextItemType)
                     throws XPathException
Type-check the expression

Overrides:
typeCheck in class SlashExpression
Parameters:
visitor - an expression visitor
contextItemType - 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
Returns:
the original expression, rewritten to perform necessary run-time type checks, and to perform other type-related optimizations
Throws:
XPathException - if an error is discovered during this phase (typically a type error)

copy

public Expression copy()
Copy an expression. This makes a deep copy.

Overrides:
copy in class SlashExpression
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 interface SequenceIterable
Overrides:
iterate in class SlashExpression
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 class SlashExpression
Parameters:
destination - the expression presenter used to display the structure


Copyright (c) Saxonica Limited. All rights reserved.