public class DocumentInstr extends ParentNodeConstructor
Conceptually it represents an XSLT instruction xsl:document-node, with no attributes, whose content is a complex content constructor for the children of the document node.
content, preservingTypes
EFFECTIVE_BOOLEAN_VALUE, EVALUATE_METHOD, EVENT_FEED_METHOD, INHERITED_CONTEXT, INSPECTION_CONTEXT, ITEM_FEED_METHOD, ITERATE_METHOD, locationId, MAX_SEQUENCE_LENGTH, MAX_STRING_LENGTH, NAVIGATION_CONTEXT, NODE_VALUE_CONTEXT, PROCESS_METHOD, PUSH_SELECTION, staticProperties, UNBOUNDED_LOWER, UNBOUNDED_UPPER, W3C_CONSUMING, W3C_FREE_RANGING, W3C_GROUP_CONSUMING, W3C_MOTIONLESS, WATCH_METHOD
Constructor and Description |
---|
DocumentInstr(boolean textOnly,
String constantText,
String baseURI)
Create a document constructor instruction
|
Modifier and Type | Method and Description |
---|---|
protected void |
checkContentSequence(StaticContext env)
Check statically that the sequence of child instructions doesn't violate any obvious constraints
on the content of the node
|
protected static void |
checkContentSequence(StaticContext env,
Expression content,
ParseOptions validationOptions) |
int |
computeSpecialProperties()
Get the static properties of this expression (other than its type).
|
Expression |
copy()
Copy an expression.
|
DocumentInfo |
evaluateItem(XPathContext context)
Evaluate as an item.
|
void |
explain(ExpressionPresenter out)
Diagnostic print of expression structure.
|
CharSequence |
getConstantText()
For a text-only instruction, determine if the text value is fixed and if so return it;
otherwise return null
|
ExpressionCompiler |
getExpressionCompiler()
Return the compiler of the DocumentInstr expression
|
int |
getImplementationMethod()
An implementation of Expression must provide at least one of the methods evaluateItem(), iterate(), or process().
|
int |
getInstructionNameCode()
Get the name of this instruction for diagnostic and tracing purposes
(the string "document-constructor")
|
ItemType |
getItemType(TypeHierarchy th)
Get the item type
|
DocumentInstrAdjunct |
getStreamingAdjunct()
Get a class that supports streamed evaluation of this expression
|
Expression |
getStringValueExpression()
In the case of a text-only instruction (xsl:variable containing a text node or one or more xsl:value-of
instructions), return an expression that evaluates to the textual content as an instance of xs:untypedAtomic
|
boolean |
isTextOnly()
Determine whether this is a "text only" document: essentially, an XSLT xsl:variable that contains
a single text node or xsl:value-of instruction.
|
EventIterator |
iterateEvents(XPathContext context)
Deliver the result of the expression as a sequence of events.
|
TailCall |
processLeavingTail(XPathContext context)
ProcessLeavingTail: called to do the real work of this instruction.
|
void |
processLeft(Stack<XPathContext> contextStack,
Stack<Object> state)
In streaming mode, process the first half of the instruction (to start a new document or element)
|
void |
processRight(Stack<XPathContext> contextStack,
Stack<Object> state)
In streaming mode, proecss the right half of the instruction (to end a new document or element)
|
Expression |
simplify(ExpressionVisitor visitor)
Simplify an expression.
|
addToPathMap, computeCardinality, createsNewNodes, getBaseURI, getCardinality, getContentExpression, getSchemaType, getValidationAction, getValidationOptions, isLazyConstruction, isPreservingTypes, iterateSubExpressionInfo, iterateSubExpressions, optimize, promoteInst, replaceSubExpression, setBaseURI, setContentExpression, setLazyConstruction, setNoNeedToStrip, setValidationAction, typeCheck
assembleParams, assembleTunnelParams, dynamicError, evaluateAsString, getConstructType, getExpressionName, getInstructionName, getIteratorFromProcessMethod, getSourceLocator, isXSLT, iterate, process, promote
adoptChildExpression, checkForUpdatingSubexpressions, checkPermittedContents, computeDependencies, computeStaticProperties, doPromotion, dynamicError, effectiveBooleanValue, evaluatePendingUpdates, explain, getColumnNumber, getColumnNumber, getContainer, getDependencies, getEvaluationMethod, getExecutable, getHostLanguage, getIntegerBounds, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getStreamability, getSystemId, getSystemId, hasVariableBinding, implementsStaticTypeCheck, isSubtreeExpression, isUpdatingExpression, isVacuousExpression, markTailFunctionCalls, resetLocalStaticProperties, setContainer, setEvaluationMethod, setFiltered, setFlattened, setLocationId, staticTypeCheck, suppressValidation, toPattern, toStreamingPattern, toString, typeError
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getColumnNumber, getLineNumber, getPublicId, getSystemId
public DocumentInstr(boolean textOnly, String constantText, String baseURI)
textOnly
- true if the content contains text nodes onlyconstantText
- if the content contains text nodes only and the text is known at compile time,
supplies the textual contentbaseURI
- the base URI of the instructionpublic int getImplementationMethod()
getImplementationMethod
in class Instruction
Expression.ITERATE_METHOD
or Expression.EVALUATE_METHOD
or
Expression.PROCESS_METHOD
public boolean isTextOnly()
public CharSequence getConstantText()
public Expression simplify(ExpressionVisitor visitor) throws XPathException
simplify
in class ParentNodeConstructor
visitor
- an expression visitorXPathException
- if an error is discovered during expression rewritingprotected void checkContentSequence(StaticContext env) throws XPathException
checkContentSequence
in class ParentNodeConstructor
env
- the static contextXPathException
protected static void checkContentSequence(StaticContext env, Expression content, ParseOptions validationOptions) throws XPathException
XPathException
public int computeSpecialProperties()
computeSpecialProperties
in class Instruction
public Expression getStringValueExpression()
public Expression copy()
copy
in class Expression
public ItemType getItemType(TypeHierarchy th)
getItemType
in class Instruction
th
- The TypeHierarchypublic TailCall processLeavingTail(XPathContext context) throws XPathException
Instruction
processLeavingTail
in interface TailCallReturner
processLeavingTail
in class Instruction
context
- The dynamic context of the transformation, giving access to the current node,
the current variables, etc.XPathException
- if a dynamic error occurs during the evaluation
of the instructionpublic DocumentInfo evaluateItem(XPathContext context) throws XPathException
evaluateItem
in class Instruction
context
- The context in which the expression is to be evaluatedXPathException
- if any dynamic error occurs evaluating the
expressionpublic EventIterator iterateEvents(XPathContext context) throws XPathException
Expression
The events (of class PullEvent
) are either complete
items, or one of startElement, endElement, startDocument, or endDocument, known
as semi-nodes. The stream of events may also include a nested EventIterator.
If a start-end pair exists in the sequence, then the events between
this pair represent the content of the document or element. The content sequence will
have been processed to the extent that any attribute and namespace nodes in the
content sequence will have been merged into the startElement event. Namespace fixup
will have been performed: that is, unique prefixes will have been allocated to element
and attribute nodes, and all namespaces will be declared by means of a namespace node
in the startElement event or in an outer startElement forming part of the sequence.
However, duplicate namespaces may appear in the sequence.
The content of an element or document may include adjacent or zero-length text nodes, atomic values, and nodes represented as nodes rather than broken down into events.
iterateEvents
in class Expression
context
- The dynamic evaluation contextXPathException
- if a dynamic error occurs during expression evaluationpublic int getInstructionNameCode()
getInstructionNameCode
in class Instruction
public void explain(ExpressionPresenter out)
explain
in class Expression
out
- the expression presenter used to display the structurepublic ExpressionCompiler getExpressionCompiler()
getExpressionCompiler
in class Expression
public DocumentInstrAdjunct getStreamingAdjunct()
getStreamingAdjunct
in class Expression
public void processLeft(Stack<XPathContext> contextStack, Stack<Object> state) throws XPathException
contextStack
- the dynamic evaluation contextstate
- a stack on which the instruction can save state information for use during the correspondingXPathException
- if a dynamic error occurspublic void processRight(Stack<XPathContext> contextStack, Stack<Object> state) throws XPathException
contextStack
- the dynamic evaluation contextstate
- a stack on which the instruction can save state information for use during the correspondingXPathException
- if a dynamic error occursCopyright (c) 2004-2013 Saxonica Limited. All rights reserved.