## net.sf.saxon.style
Class XSLGeneralVariable

    java.lang.Object
      net.sf.saxon.tree.NodeImpl
          net.sf.saxon.tree.ParentNodeImpl
              net.sf.saxon.tree.ElementImpl
                  net.sf.saxon.tree.ElementWithAttributes
                      net.sf.saxon.style.StyleElement
                          net.sf.saxon.style.XSLGeneralVariable

All Implemented Interfaces:
  Container, FingerprintedNode, InstructionInfo, Item, LocationProvider, org.xml.sax.Locator, NodeInfo, SaxonLocator, javax.xml.transform.Source, javax.xml.transform.SourceLocator, ValueRepresentation

Direct Known Subclasses:
  SaxonAssign, SQLColumn, XSLVariableDeclaration, 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 java.lang.String` `constantText`
`protected boolean` `global`
`protected boolean` `redundant`
`protected boolean` `requiredParam`
`protected SequenceType` `requiredType`
`protected Expression` `select`
`protected SlotManager` `slotManager`
`protected boolean` `tunnel`

Fields inherited from class net.sf.saxon.style.StyleElement
`defaultCollationName, defaultXPathNamespace, extensionNamespaces, REPORT_ALWAYS, REPORT_IF_INSTANTIATED, REPORT_UNLESS_FORWARDS_COMPATIBLE, reportingCircumstances, staticContext, validationError, version`

Fields inherited from class net.sf.saxon.tree.ElementWithAttributes
`attributeList, namespaceList`

Fields inherited from class net.sf.saxon.tree.ElementImpl
`nameCode, root, 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, LOCAL_NAMESPACES, NO_NAMESPACES`

Constructor Summary
`XSLGeneralVariable()`

Method Summary
`protected boolean` `allowsAsAttribute()`
`protected boolean` `allowsRequired()`
`protected boolean` `allowsTunnelAttribute()`
`protected boolean` `allowsValue()`
`protected void` `checkAgainstRequiredType(SequenceType required)` Check the supplied select expression against the required type.
`int` `getConstructType()` Get the type of construct.
`protected ItemType` `getReturnedItemType()` Determine the type of item returned by this instruction (only relevant if it is an instruction).
`int` `getVariableFingerprint()` Get the fingerprint of the variable name
`java.lang.String` `getVariableName()` Get the display name of the variable.
`protected void` `initializeInstruction(Executable exec, GeneralVariable var)` Initialize - common code called from the compile() method of all subclasses
`boolean` `isAssignable()` Test whether it is permitted to assign to the variable using the saxon:assign extension element.
`boolean` `isGlobal()`
`boolean` `isRequiredParam()`
`boolean` `isTunnelParam()`
`boolean` `mayContainSequenceConstructor()` Determine whether this type of element is allowed to contain a template-body
`void` `prepareAttributes()` Set the attribute list for the element.
`void` `setRedundant()` Mark this global variable as redundant.
`void` `validate()` Check that the stylesheet element is valid.

Methods inherited from class net.sf.saxon.style.StyleElement

`allocateLocationId, allocateSlots, backwardsCompatibleModeIsEnabled, bindVariable, checkEmpty, checkSortComesFirst, checkTopLevel, checkUnknownAttribute, checkWithinTemplate, compile, compileError, compileError, compileError, compileSequenceConstructor, compileWarning, definesExcludedNamespace, definesExtensionElement, fallbackProcessing, fixupReferences, forwardsCompatibleModeIsEnabled, getAttributeSets, getAttributeValue, getCommonChildItemType, getContainingSlotManager, getContainingStylesheet, getDefaultCollationName, getDefaultXPathNamespace, getExecutable, getInstructionFingerprint, getLastChildInstruction, getLineNumber, getLineNumber, getNamespaceResolver, getObjectFingerprint, getObjectNameCode, getPrecedence, getPreparedStylesheet, getPrincipalStylesheet, getProperties, getProperty, getSchemaType, getStaticContext, getStylesheetFunction, getSystemId, getTargetNamePool, getTypeAnnotation, getVersion, getWithParamInstructions, isExcludedNamespace, isExtensionNamespace, isInstruction, isPermittedChild, issueWarning, issueWarning, isTopLevel, makeAttributeValueTemplate, makeExpression, makeNameCode, makeNamespaceContext, makePattern, makeSequenceType, makeSortKeys, makeTraceInstruction, markTailCalls, mayContainFallback, postValidate, processAllAttributes, processAttributes, processDefaultCollationAttribute, processDefaultXPathNamespaceAttribute, processExcludedNamespaces, processExtensionElementAttribute, processVersionAttribute, reportAbsence, setLineNumber, setObjectNameCode, setValidationError, substituteFor, typeCheck, typeCheck, undeclaredNamespaceError, validateChildren, validateSubtree`

Methods inherited from class net.sf.saxon.tree.ElementWithAttributes
`copy, getAttributeList, getAttributeValue, getDeclaredNamespaces, getInScopeNamespaceCodes, getPrefixForURI, getURICodeForPrefix, getURIForPrefix, initialise, iteratePrefixes, sendNamespaceDeclarations, setNamespaceDeclarations`

Methods inherited from class net.sf.saxon.tree.ElementImpl
`addChild, compact, enumerateChildren, generateId, getBaseURI, getDocumentRoot, getFirstChild, getLastChild, getNameCode, getNodeKind, getNthChild, getRoot, getSequenceNumber, getStringValue, getStringValueCS, getSystemId, hasChildNodes, setNameCode, setSystemId, useChildrenArray`

Methods inherited from class net.sf.saxon.tree.NodeImpl
`compareOrder, getColumnNumber, getConfiguration, getDisplayName, getDocumentNumber, getFingerprint, getLocalPart, getNamePool, getNextInDocument, getNextSibling, getParent, getPrefix, getPreviousInDocument, getPreviousSibling, getPublicId, getTypeAnnotation, getTypedValue, getURI, isSameNodeInfo, iterateAxis, iterateAxis`

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, getPublicId, getSystemId`

Methods inherited from interface javax.xml.transform.SourceLocator
`getColumnNumber, getPublicId, getSystemId`

Methods inherited from interface net.sf.saxon.trace.InstructionInfo
`getSystemId`

Field Detail

### select

    protected Expression select

### requiredType

    protected SequenceType requiredType

### constantText

    protected java.lang.String constantText

### global

    protected boolean global

### slotManager

    protected SlotManager slotManager

### assignable

    protected boolean assignable

### redundant

    protected boolean redundant

### requiredParam

    protected boolean requiredParam

### tunnel

    protected boolean tunnel

Constructor Detail

### XSLGeneralVariable

    public XSLGeneralVariable()

Method Detail

### getReturnedItemType

    protected ItemType getReturnedItemType()

  Determine the type of item returned by this instruction (only relevant if it is an instruction).

  Overrides:
    `getReturnedItemType` in class `StyleElement`
  Returns:
    the item type returned. This is null for a variable: we are not interested in the type of the variable, but in what the xsl:variable constributes to the result of the sequence constructor it is part of.

### mayContainSequenceConstructor

    public boolean mayContainSequenceConstructor()

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

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

### allowsAsAttribute

    protected boolean allowsAsAttribute()

### allowsTunnelAttribute

    protected boolean allowsTunnelAttribute()

### allowsValue

    protected boolean allowsValue()

### allowsRequired

    protected boolean allowsRequired()

### 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.

### isTunnelParam

    public boolean isTunnelParam()

### isRequiredParam

    public boolean isRequiredParam()

### isGlobal

    public boolean isGlobal()

### getVariableName

    public java.lang.String getVariableName()

  Get the display name of the variable.

### setRedundant

    public void setRedundant()

  Mark this global variable as redundant. This is done before prepareAttributes is called.

### 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`
  Throws:
    `javax.xml.transform.TransformerConfigurationException`

### validate

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

  Description copied from class: `StyleElement`
  Check that the stylesheet 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`
  Throws:
    `javax.xml.transform.TransformerConfigurationException`

### checkAgainstRequiredType

    protected void checkAgainstRequiredType(SequenceType required)
                                     throws javax.xml.transform.TransformerConfigurationException

  Check the supplied select expression against the required type.

  Parameters:
    `required` - The type required by the variable declaration, or in the case of xsl:with-param, the signature of the called template
  Throws:
    `javax.xml.transform.TransformerConfigurationException`

### initializeInstruction

    protected void initializeInstruction(Executable exec,
                                         GeneralVariable var)
                                  throws javax.xml.transform.TransformerConfigurationException

  Initialize - common code called from the compile() method of all subclasses

  Throws:
    `javax.xml.transform.TransformerConfigurationException`

### getConstructType

    public int getConstructType()

  Get the type of construct. This will be a constant in class `Location`. This method is part of the `InstructionInfo` interface

  Specified by:
    `getConstructType` in interface `InstructionInfo`
  Overrides:
    `getConstructType` in class `StyleElement`