## com.icl.saxon.style
Class XSLGeneralVariable

    java.lang.Object
      |
      +--com.icl.saxon.om.AbstractNode
            |
            +--com.icl.saxon.tree.NodeImpl
                  |
                  +--com.icl.saxon.tree.ParentNodeImpl
                        |
                        +--com.icl.saxon.tree.ElementImpl
                              |
                              +--com.icl.saxon.tree.ElementWithAttributes
                                    |
                                    +--com.icl.saxon.style.StyleElement
                                          |
                                          +--com.icl.saxon.style.XSLGeneralVariable

All Implemented Interfaces:
  javax.xml.transform.dom.DOMLocator, org.w3c.dom.Element, org.xml.sax.Locator, org.w3c.dom.NamedNodeMap, org.w3c.dom.Node, NodeInfo, javax.xml.transform.Source, javax.xml.transform.SourceLocator

Direct Known Subclasses:
  SAXONAssign, SAXONReturn, SQLColumn, XSLParam, XSLVariable, XSLWithParam

public abstract class XSLGeneralVariable
extends StyleElement

This class defines common behaviour across xsl:variable, xsl:param, and xsl:with-param

Field Summary
`protected boolean` `assignable`
`protected boolean` `global`
`protected Procedure` `procedure`
`protected boolean` `redundant`
`protected Expression` `select`
`protected java.lang.String` `simpleText`
`protected int` `variableFingerprint`

Fields inherited from class com.icl.saxon.style.StyleElement
`attributeSets, extensionNamespaces, REPORT_ALWAYS, REPORT_IF_INSTANTIATED, REPORT_UNLESS_FORWARDS_COMPATIBLE, reportingCircumstances, staticContext, validationError, version`

Fields inherited from class com.icl.saxon.tree.ElementWithAttributes
`attributeList, namespaceList`

Fields inherited from class com.icl.saxon.tree.ElementImpl
`nameCode, root, sequence`

Fields inherited from class com.icl.saxon.tree.NodeImpl
`emptyArray, index, parent`

Fields inherited from class com.icl.saxon.om.AbstractNode
`NODE_LETTER`

Fields inherited from interface org.w3c.dom.Node
`ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE`

Fields inherited from interface com.icl.saxon.om.NodeInfo
`ATTRIBUTE, COMMENT, ELEMENT, NAMESPACE, NODE, NONE, NUMBER_OF_TYPES, PI, ROOT, TEXT`

Constructor Summary
`XSLGeneralVariable()`

Method Summary
`void` `checkDuplicateDeclaration()` Check whether this declaration duplicates another one
`Procedure` `getOwningProcedure()` Get the owning Procedure definition, if this is a local variable
`Procedure` `getProcedure()` Get associated Procedure (for details of stack frame, if this is a global variable containing local variable declarations)
`protected Value` `getSelectValue(Context context)` Get the value of the select expression if present or the content of the element otherwise
`int` `getVariableFingerprint()` Get the fingerprint of the variable name
`java.lang.String` `getVariableName()` Get the display name of the variable.
`boolean` `isAssignable()` Test whether it is permitted to assign to the variable using the saxon:assign extension element.
`boolean` `isGlobal()`
`boolean` `mayContainTemplateBody()` Determine whether this type of element is allowed to contain a template-body
`void` `prepareAttributes()` Set the attribute list for the element.
`void` `preprocess()` Preprocess: this ensures space is available for local variables declared within this global variable
`void` `validate()` Check that the element is valid.

Methods inherited from class com.icl.saxon.style.StyleElement

`bindVariable, checkEmpty, checkNotTopLevel, checkTopLevel, checkUnknownAttribute, checkWithinTemplate, compileError, compileError, definesExcludedNamespace, definesExtensionElement, doesPostProcessing, fallbackProcessing, findAttributeSets, forwardsCompatibleModeIsEnabled, getContainingStyleSheet, getPrecedence, getPreparedStyleSheet, getPrincipalStyleSheet, getStandardNames, getStyleSheetFunction, getVariableBinding, getVariableNames, getVersion, handleSortKeys, isExcludedNamespace, isExtensionNamespace, isInstruction, isTopLevel, makeAttributeValueTemplate, makeExpression, makePattern, process, processAllAttributes, processAttributes, processAttributeSets, processChildren, processExcludedNamespaces, processExtensionElementAttribute, processVersionAttribute, reportAbsence, setValidationError, styleError, styleError, substituteFor, validateChildren, validateSubtree`

Methods inherited from class com.icl.saxon.tree.ElementWithAttributes

`addNamespaceNodes, copy, getAttribute, getAttributeList, getAttributeNode, getAttributeNodeNS, getAttributeNS, getAttributes, getAttributeValue, getAttributeValue, getAttributeValue, getLength, getNamedItem, getNamedItemNS, getNamespaceCodes, getPrefixForURI, getURICodeForPrefix, hasAttribute, hasAttributeNS, hasAttributes, initialise, item, outputNamespaceNodes, removeAttribute, removeAttributeNode, removeAttributeNS, removeNamedItem, removeNamedItemNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS, setNamedItem, setNamedItemNS, setNamespaceDeclarations`

Methods inherited from class com.icl.saxon.tree.ElementImpl
`addChild, compact, copy, copyStringValue, dropChildren, enumerateChildren, generateId, getBaseURI, getChildNodes, getDocumentRoot, getFirstChild, getLastChild, getLineNumber, getNameCode, getNodeType, getNodeValue, getNthChild, getSequenceNumber, getStringValue, getSystemId, hasChildNodes, makeNameCode, removeChild, renumberChildren, setLineNumber, setNameCode, setSystemId, useChildrenArray`

Methods inherited from class com.icl.saxon.tree.NodeImpl
`compareOrder, getDisplayName, getDocumentElement, getEnumeration, getFingerprint, getLocalName, getNamePool, getNextInDocument, getNextSibling, getOriginatingNode, getParent, getPrefix, getPreviousInDocument, getPreviousSibling, getURI, isSameNode, removeNode`

Methods inherited from class com.icl.saxon.om.AbstractNode

`appendChild, appendData, cloneNode, createAttribute, createAttributeNS, createCDATASection, createComment, createDocumentFragment, createElement, createElementNS, createEntityReference, createProcessingInstruction, createTextNode, deleteData, disallowUpdate, getColumnNumber, getData, getDoctype, getElementById, getElementsByTagName, getElementsByTagNameNS, getImplementation, getName, getNamespaceURI, getNodeName, getOwnerDocument, getOwnerElement, getParentNode, getPublicId, getSpecified, getTagName, getValue, importNode, insertBefore, insertData, isSupported, normalize, removeChild, replaceChild, replaceData, setData, setNodeValue, setPrefix, setValue, splitText, substringData, supports`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.xml.sax.Locator
`getColumnNumber, getLineNumber, getPublicId, getSystemId`

Methods inherited from interface org.w3c.dom.Element
`getElementsByTagName, getElementsByTagNameNS, getTagName`

Methods inherited from interface org.w3c.dom.Node
`appendChild, cloneNode, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix`

Field Detail

### variableFingerprint

    protected int variableFingerprint

### select

    protected Expression select

### simpleText

    protected java.lang.String simpleText

### global

    protected boolean global

### procedure

    protected Procedure procedure

### assignable

    protected boolean assignable

### redundant

    protected boolean redundant

Constructor Detail

### XSLGeneralVariable

    public XSLGeneralVariable()

Method Detail

### mayContainTemplateBody

    public boolean mayContainTemplateBody()

  Determine whether this type of element is allowed to contain a template-body

  Overrides:
    `mayContainTemplateBody` in class `StyleElement`
  Returns:
    true: yes, it may contain a template-body

### isGlobal

    public boolean isGlobal()

### isAssignable

    public boolean isAssignable()

  Test whether it is permitted to assign to the variable using the saxon:assign extension element. This will only be true if the extra attribute saxon:assignable="yes" is present.

### getOwningProcedure

    public Procedure getOwningProcedure()
                                 throws javax.xml.transform.TransformerConfigurationException

  Get the owning Procedure definition, if this is a local variable

    `javax.xml.transform.TransformerConfigurationException`

### preprocess

    public void preprocess()
                    throws javax.xml.transform.TransformerConfigurationException

  Preprocess: this ensures space is available for local variables declared within this global variable

  Overrides:
    `preprocess` in class `StyleElement`
    `javax.xml.transform.TransformerConfigurationException`

### getVariableName

    public java.lang.String getVariableName()

  Get the display name of the variable.

### getVariableFingerprint

    public int getVariableFingerprint()

  Get the fingerprint of the variable name

### prepareAttributes

    public void prepareAttributes()
                           throws javax.xml.transform.TransformerConfigurationException

  Description copied from class: `StyleElement`
  Set the attribute list for the element. This is called to process the attributes (note the distinction from processAttributes in the superclass). Must be supplied in a subclass

  Specified by:
    `prepareAttributes` in class `StyleElement`
    `javax.xml.transform.TransformerConfigurationException`

### validate

    public void validate()
                  throws javax.xml.transform.TransformerConfigurationException

  Description copied from class: `StyleElement`
  Check that the element is valid. This is called once for each element, after the entire tree has been built. As well as validation, it can perform first-time initialisation. The default implementation does nothing; it is normally overriden in subclasses.

  Overrides:
    `validate` in class `StyleElement`
    `javax.xml.transform.TransformerConfigurationException`

### checkDuplicateDeclaration

    public void checkDuplicateDeclaration()
                                   throws javax.xml.transform.TransformerConfigurationException

  Check whether this declaration duplicates another one

    `javax.xml.transform.TransformerConfigurationException`

### getSelectValue

    protected Value getSelectValue(Context context)
                            throws javax.xml.transform.TransformerException

  Get the value of the select expression if present or the content of the element otherwise

    `javax.xml.transform.TransformerException`

### getProcedure

    public Procedure getProcedure()

  Get associated Procedure (for details of stack frame, if this is a global variable containing local variable declarations)