net.sf.saxon.style
Class XSLVariableDeclaration

java.lang.Object
  extended by net.sf.saxon.tree.NodeImpl
      extended by net.sf.saxon.tree.ParentNodeImpl
          extended by net.sf.saxon.tree.ElementImpl
              extended by net.sf.saxon.style.StyleElement
                  extended by net.sf.saxon.style.XSLGeneralVariable
                      extended by net.sf.saxon.style.XSLVariableDeclaration
All Implemented Interfaces:
Serializable, Source, SourceLocator, LocationProvider, SaxonLocator, PullEvent, Container, VariableDeclaration, FingerprintedNode, Item, MutableNodeInfo, NamespaceResolver, NodeInfo, SiblingCountingNode, ValueRepresentation, StylesheetProcedure, InstructionInfo, Locator
Direct Known Subclasses:
XSLParam, XSLVariable

public abstract class XSLVariableDeclaration
extends XSLGeneralVariable
implements VariableDeclaration, StylesheetProcedure

Generic class for xsl:variable and xsl:param elements.

See Also:
Serialized Form

Field Summary
protected  List references
           
 
Fields inherited from class net.sf.saxon.style.XSLGeneralVariable
assignable, compiledVariable, constantText, global, implicitlyRequiredParam, redundant, requiredParam, requiredType, select, slotManager, tunnel
 
Fields inherited from class net.sf.saxon.style.StyleElement
defaultCollationName, defaultXPathNamespace, extensionNamespaces, REPORT_ALWAYS, REPORT_IF_INSTANTIATED, REPORT_UNLESS_FALLBACK_AVAILABLE, REPORT_UNLESS_FORWARDS_COMPATIBLE, reportingCircumstances, staticContext, validationError, version
 
Fields inherited from class net.sf.saxon.tree.ElementImpl
attributeList, nameCode, namespaceList, typeCode
 
Fields inherited from class net.sf.saxon.tree.ParentNodeImpl
children, sequence
 
Fields inherited from class net.sf.saxon.tree.NodeImpl
index, NODE_LETTER, parent
 
Fields inherited from interface net.sf.saxon.om.NodeInfo
ALL_NAMESPACES, EMPTY_NAMESPACE_LIST, IS_DTD_TYPE, IS_NILLED, LOCAL_NAMESPACES, NO_NAMESPACES
 
Constructor Summary
XSLVariableDeclaration()
           
 
Method Summary
protected  void fixupBinding(Binding binding)
          Notify all variable references of the Binding instruction
 void fixupReferences()
          Notify all references to this variable of the data type
 GeneralVariable getCompiledVariable()
          Get the compiled variable
abstract  SequenceType getRequiredType()
          Get the static type of the variable.
 SlotManager getSlotManager()
          Get the SlotManager associated with this stylesheet construct.
 int getSlotNumber()
          Get the slot number allocated to this variable (its position in the stackframe)
protected  void index(XSLStylesheet top)
          Method supplied by declaration elements to add themselves to a stylesheet-level index
 boolean isInstruction()
          Determine whether this node is an instruction.
 void optimize()
          Optimize the stylesheet construct
 void registerReference(BindingReference ref)
          Method called by VariableReference to register the variable reference for subsequent fixup
protected  void setReferenceCount(GeneralVariable var)
          Set the number of references to this variable.
 void setSlotNumber(int slot)
          Allocate a slot number to this variable
 void validate()
          Check that the variable is not already declared, and allocate a slot number
 
Methods inherited from class net.sf.saxon.style.XSLGeneralVariable
allowsAsAttribute, allowsRequired, allowsTunnelAttribute, allowsValue, checkAgainstRequiredType, getConstructType, getReturnedItemType, getVariableDisplayName, getVariableQName, initializeInstruction, isAssignable, isGlobal, isRequiredParam, isTunnelParam, mayContainSequenceConstructor, postValidate, prepareAttributes, setRedundant
 
Methods inherited from class net.sf.saxon.style.StyleElement
allocateLocationId, allocatePatternSlots, allocateSlots, backwardsCompatibleModeIsEnabled, bindVariable, checkEmpty, checkSortComesFirst, checkTopLevel, checkUnknownAttribute, checkWithinTemplate, compile, compileError, compileError, compileError, compileError, compileSequenceConstructor, compileWarning, compileWarning, definesExcludedNamespace, definesExtensionElement, fallbackProcessing, forwardsCompatibleModeIsEnabled, getAllStylesheetFunctions, getAttributeSets, getAttributeValue, getColumnNumber, getCommonChildItemType, getContainerGranularity, getContainingSlotManager, getContainingStylesheet, getDefaultCollationName, getDefaultXPathNamespace, getExecutable, getHostLanguage, getLastChildInstruction, getLineNumber, getLocationProvider, getNamespaceResolver, getObjectName, getPrecedence, getPreparedStylesheet, getPrincipalStylesheet, getProperties, getProperty, getSchemaType, getStaticContext, getStylesheetFunction, getSystemId, getTypeAnnotation, getVersion, getWithParamInstructions, isExcludedNamespace, isExplaining, isExtensionNamespace, isPermittedChild, issueWarning, issueWarning, isTopLevel, makeAttributeValueTemplate, makeExpression, makeExpressionVisitor, makeNamespaceContext, makePattern, makeQName, makeSequenceType, makeSortKeys, makeTraceInstruction, markTailCalls, mayContainFallback, mayContainParam, processAllAttributes, processAttributes, processDefaultCollationAttribute, processDefaultXPathNamespaceAttribute, processExcludedNamespaces, processExtensionElementAttribute, processStandardAttributes, processVersionAttribute, replaceSubExpression, reportAbsence, seesAvuncularVariables, setObjectName, setValidationError, substituteFor, typeCheck, typeCheck, undeclaredNamespaceError, validateChildren, validateSubtree
 
Methods inherited from class net.sf.saxon.tree.ElementImpl
addAttribute, addNamespace, copy, delete, fixupInsertedNamespaces, generateId, getAttributeList, getAttributeValue, getAttributeValue, getBaseURI, getColumnNumber, getDeclaredNamespaces, getDocumentRoot, getInScopeNamespaceCodes, getLineNumber, getNameCode, getNodeKind, getPrefixForURI, getRoot, getSystemId, getTypeAnnotation, getURICodeForPrefix, getURICodeForPrefixCode, getURIForPrefix, initialise, isId, isNilled, iteratePrefixes, removeAttribute, removeTypeAnnotation, rename, replaceStringValue, setLineAndColumn, setLocation, setNameCode, setNamespaceDeclarations, setSystemId, setTypeAnnotation
 
Methods inherited from class net.sf.saxon.tree.ParentNodeImpl
addChild, compact, enumerateChildren, getFirstChild, getLastChild, getNthChild, getNumberOfChildren, getSequenceNumber, getStringValue, getStringValueCS, hasChildNodes, insertChildren, insertChildrenAt, removeChild, replaceChildrenAt, useChildrenArray
 
Methods inherited from class net.sf.saxon.tree.NodeImpl
atomize, compareOrder, equals, getConfiguration, getDisplayName, getDocumentNumber, getFingerprint, getLocalPart, getNamePool, getNextInDocument, getNextSibling, getParent, getPhysicalRoot, getPrefix, getPreviousInDocument, getPreviousSibling, getPublicId, getSiblingPosition, getTypedValue, getURI, insertSiblings, isDeleted, isIdref, isSameNodeInfo, iterateAxis, iterateAxis, newBuilder, replace
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface net.sf.saxon.expr.VariableDeclaration
getVariableQName
 
Methods inherited from interface net.sf.saxon.trace.InstructionInfo
getLineNumber, getSystemId
 
Methods inherited from interface org.xml.sax.Locator
getColumnNumber, getPublicId
 
Methods inherited from interface javax.xml.transform.SourceLocator
getColumnNumber, getPublicId
 
Methods inherited from interface net.sf.saxon.om.NodeInfo
hashCode
 

Field Detail

references

protected List references
Constructor Detail

XSLVariableDeclaration

public XSLVariableDeclaration()
Method Detail

getSlotManager

public SlotManager getSlotManager()
Get the SlotManager associated with this stylesheet construct. The SlotManager contains the information needed to manage the local stack frames used by run-time instances of the code.

Specified by:
getSlotManager in interface StylesheetProcedure
Returns:
the associated SlotManager object

getSlotNumber

public int getSlotNumber()
Get the slot number allocated to this variable (its position in the stackframe)

Returns:
the allocated slot number

setSlotNumber

public void setSlotNumber(int slot)
Allocate a slot number to this variable

Parameters:
slot - the position of the variable on the local stack frame

getRequiredType

public abstract SequenceType getRequiredType()
Get the static type of the variable.

Returns:
the static type declared for the variable

registerReference

public void registerReference(BindingReference ref)
Method called by VariableReference to register the variable reference for subsequent fixup

Specified by:
registerReference in interface VariableDeclaration
Parameters:
ref - the variable reference

isInstruction

public boolean isInstruction()
Determine whether this node is an instruction.

Overrides:
isInstruction in class StyleElement
Returns:
true - it is an instruction (well, it can be, anyway)

fixupReferences

public void fixupReferences()
                     throws XPathException
Notify all references to this variable of the data type

Overrides:
fixupReferences in class StyleElement
Throws:
XPathException

validate

public void validate()
              throws XPathException
Check that the variable is not already declared, and allocate a slot number

Overrides:
validate in class XSLGeneralVariable
Throws:
XPathException

fixupBinding

protected void fixupBinding(Binding binding)
Notify all variable references of the Binding instruction

Parameters:
binding - the Binding that represents this variable declaration in the executable code tree

setReferenceCount

protected void setReferenceCount(GeneralVariable var)
Set the number of references to this variable. This code is invoked only for a global variable, and only if there is at least one reference.

Overrides:
setReferenceCount in class XSLGeneralVariable
Parameters:
var - the variable

index

protected void index(XSLStylesheet top)
              throws XPathException
Description copied from class: StyleElement
Method supplied by declaration elements to add themselves to a stylesheet-level index

Overrides:
index in class StyleElement
Parameters:
top - the outermost XSLStylesheet element
Throws:
XPathException

optimize

public void optimize()
              throws XPathException
Optimize the stylesheet construct

Specified by:
optimize in interface StylesheetProcedure
Throws:
XPathException

getCompiledVariable

public GeneralVariable getCompiledVariable()
Get the compiled variable

Returns:
the compiled variable if it has been compiled, or null otherwise