net.sf.saxon.instruct

Class ValueOf

public final class ValueOf extends SimpleNodeConstructor

An xsl:value-of element in the stylesheet.
The xsl:value-of element takes attributes:
Constructor Summary
ValueOf(Expression select, boolean disable, boolean noNodeIfEmpty)
Create a new ValueOf expression
Method Summary
voidcheckPermittedContents(SchemaType parentType, StaticContext env, boolean whole)
Check statically that the results of the expression are capable of constructing the content of a given schema type.
intcomputeCardinality()
ExpressionconvertToStringJoin(StaticContext env)
Convert this value-of instruction to an expression that delivers the string-value of the resulting text node.
Expressioncopy()
Copy an expression.
ItemevaluateItem(XPathContext context)
Evaluate this expression, returning the resulting text node to the caller
voidexplain(ExpressionPresenter out)
Diagnostic print of expression structure.
intgetInstructionNameCode()
Get the name of this instruction for diagnostic and tracing purposes
ItemTypegetItemType(TypeHierarchy th)
intgetOptions()
Test for any special options such as disable-output-escaping
booleanisDisableOutputEscaping()
Test whether disable-output-escaping was requested
booleanisNumberingInstruction()
Determine whether this is really an xsl:number instruction
voidlocalTypeCheck(ExpressionVisitor visitor, ItemType contextItemType)
TailCallprocessLeavingTail(XPathContext context)
Process this instruction, sending the resulting text node to the current output destination
protected voidprocessValue(CharSequence value, XPathContext context)
Process the value of the node, to create the new node.
protected voidpromoteInst(PromotionOffer offer)
Offer promotion for subexpressions.
voidsetIsNumberingInstruction()
Indicate that this is really an xsl:nunber instruction

Constructor Detail

ValueOf

public ValueOf(Expression select, boolean disable, boolean noNodeIfEmpty)
Create a new ValueOf expression

Parameters: select the select expression disable true if disable-output-escaping is in force noNodeIfEmpty true if the instruction is to return () if the select expression is (), false if it is to return an empty text node

Method Detail

checkPermittedContents

public void checkPermittedContents(SchemaType parentType, StaticContext env, boolean whole)
Check statically that the results of the expression are capable of constructing the content of a given schema type.

Parameters: parentType The schema type env the static context whole true if this expression is to account for the whole value of the type

Throws: net.sf.saxon.trans.XPathException if the expression doesn't match the required content type

computeCardinality

public int computeCardinality()

convertToStringJoin

public Expression convertToStringJoin(StaticContext env)
Convert this value-of instruction to an expression that delivers the string-value of the resulting text node. This will often be a call on the string-join function.

Parameters: env the static evaluation context

Returns: the converted expression

copy

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

Returns: the copy of the original expression

evaluateItem

public Item evaluateItem(XPathContext context)
Evaluate this expression, returning the resulting text node to the caller

Parameters: context the dynamic evaluation context

Returns: the parentless text node that results from evaluating this instruction, or null to represent an empty sequence

Throws: XPathException

explain

public void explain(ExpressionPresenter out)
Diagnostic print of expression structure. The abstract expression tree is written to the supplied output destination.

getInstructionNameCode

public int getInstructionNameCode()
Get the name of this instruction for diagnostic and tracing purposes

Returns: the namecode of the instruction name

getItemType

public ItemType getItemType(TypeHierarchy th)

getOptions

public int getOptions()
Test for any special options such as disable-output-escaping

Returns: any special options

isDisableOutputEscaping

public boolean isDisableOutputEscaping()
Test whether disable-output-escaping was requested

Returns: true if disable-output-escaping was requested

isNumberingInstruction

public boolean isNumberingInstruction()
Determine whether this is really an xsl:number instruction

Returns: true if this derives from xsl:number

localTypeCheck

public void localTypeCheck(ExpressionVisitor visitor, ItemType contextItemType)

processLeavingTail

public TailCall processLeavingTail(XPathContext context)
Process this instruction, sending the resulting text node to the current output destination

Parameters: context the dynamic evaluation context

Returns: Always returns null

Throws: XPathException

processValue

protected void processValue(CharSequence value, XPathContext context)
Process the value of the node, to create the new node.

Parameters: value the string value of the new node context the dynamic evaluation context

Throws: net.sf.saxon.trans.XPathException

promoteInst

protected void promoteInst(PromotionOffer offer)
Offer promotion for subexpressions. 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.

Parameters: 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

Throws: XPathException if any error is detected

setIsNumberingInstruction

public void setIsNumberingInstruction()
Indicate that this is really an xsl:nunber instruction