org.apache.xalan.templates

## Class ElemVariable

- java.lang.Object
- - org.apache.xml.utils.UnImplNode
  - - org.apache.xalan.templates.ElemTemplateElement
    - - org.apache.xalan.templates.ElemVariable

- All Implemented Interfaces:
    java.io.Serializable, javax.xml.transform.SourceLocator, XSLTVisitable, PrefixResolver, ExpressionNode, WhitespaceStrippingElementMatcher, org.w3c.dom.Document, org.w3c.dom.Element, org.w3c.dom.Node, org.w3c.dom.NodeList
  Direct Known Subclasses:
    ElemExsltFuncResult, ElemParam, ElemVariablePsuedo

      public class ElemVariable
      extends ElemTemplateElement

  Implement xsl:variable.

  See Also:
    variables in XSLT Specification, Serialized Form
  Usage:
    **For advanced use only**

- - ### Field Summary

    - ### Fields inherited from interface org.w3c.dom.Node

      `ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ElemVariable()` Constructor ElemVariable
    `ElemVariable(ElemVariable param)` Copy constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `ElemTemplateElement` | `appendChild(ElemTemplateElement elem)` Add a child to the child list.
    `void` | `compose(StylesheetRoot sroot)` This function is called after everything else has been recomposed, and allows the template to set remaining values that may be based on some other property that depends on recomposition.
    `void` | `endCompose(StylesheetRoot sroot)` This after the template's children have been composed.
    `void` | `execute(TransformerImpl transformer)` Execute a variable declaration and push it onto the variable stack.
    `int` | `getIndex()` If this element is not at the top-level, get the relative position of the variable into the stack frame.
    `boolean` | `getIsTopLevel()` Get if this is a top-level variable or param, or not.
    `QName` | `getName()` Get the "name" attribute.
    `java.lang.String` | `getNodeName()` Return the node name.
    `XPath` | `getSelect()` Get the "select" attribute.
    `XObject` | `getValue(TransformerImpl transformer, int sourceNode)` Get the XObject representation of the variable.
    `int` | `getXSLToken()` Get an integer representation of the element type.
    `boolean` | `isPsuedoVar()` Tell if this is a psuedo variable reference, declared by Xalan instead of by the user.
    `void` | `recompose(StylesheetRoot root)` This function is called during recomposition to control how this element is composed.
    `void` | `setIndex(int index)` Sets the relative position of this variable within the stack frame (if local) or the global area (if global).
    `void` | `setIsTopLevel(boolean v)` Set if this is a top-level variable or param, or not.
    `void` | `setName(QName v)` Set the "name" attribute.
    `void` | `setParentElem(ElemTemplateElement p)` Set the parent as an ElemTemplateElement.
    `void` | `setSelect(XPath v)` Set the "select" attribute.

    - ### Methods inherited from class org.apache.xalan.templates.ElemTemplateElement

      `appendChild, callVisitors, canAcceptVariables, canStripWhiteSpace, compareTo, containsExcludeResultPrefix, error, error, exprAddChild, exprGetChild, exprGetNumChildren, exprGetParent, exprSetParent, getBaseIdentifier, getChildNodes, getColumnNumber, getDeclaredPrefixes, getDOMBackPointer, getEndColumnNumber, getEndLineNumber, getFirstChild, getFirstChildElem, getLastChild, getLastChildElem, getLength, getLineNumber, getLocalName, getNamespaceForPrefix, getNamespaceForPrefix, getNextSibling, getNextSiblingElem, getNodeType, getOwnerDocument, getOwnerXSLTemplate, getParentElem, getParentNode, getParentNodeElem, getPreviousSibling, getPreviousSiblingElem, getPublicId, getStylesheet, getStylesheetComposed, getStylesheetRoot, getSystemId, getTagName, getUid, getXmlSpace, handlesNullPrefixes, hasChildNodes, hasTextLitOnly, hasVariableDecl, insertBefore, isCompiledTemplate, item, removeChild, replaceChild, replaceChild, resolvePrefixTables, runtimeInit, setDOMBackPointer, setEndLocaterInfo, setLocaterInfo, setPrefixes, setPrefixes, setUid, setXmlSpace, shouldStripWhiteSpace`

    - ### Methods inherited from class org.apache.xml.utils.UnImplNode

      `adoptNode, appendData, cloneNode, compareDocumentPosition, createAttribute, createAttributeNS, createCDATASection, createComment, createDocumentFragment, createElement, createElementNS, createEntityReference, createProcessingInstruction, createTextNode, deleteData, getActualEncoding, getAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getAttributes, getBaseURI, getDoctype, getDocumentElement, getDocumentURI, getDomConfig, getElementById, getElementsByTagName, getElementsByTagNameNS, getFeature, getImplementation, getInputEncoding, getNamespaceURI, getNodeValue, getOwnerElement, getPrefix, getSchemaTypeInfo, getSpecified, getStrictErrorChecking, getTextContent, getUserData, getWholeText, getXmlEncoding, getXmlStandalone, getXmlVersion, hasAttribute, hasAttributeNS, hasAttributes, importNode, insertData, isDefaultNamespace, isEqualNode, isId, isSameNode, isSupported, isWhitespaceInElementContent, lookupNamespaceURI, lookupPrefix, normalize, normalizeDocument, removeAttribute, removeAttributeNode, removeAttributeNS, removeChild, renameNode, replaceData, replaceWholeText, setActualEncoding, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS, setData, setDocumentURI, setIdAttribute, setIdAttribute, setIdAttributeNode, setIdAttributeNS, setInputEncoding, setNodeValue, setPrefix, setStrictErrorChecking, setTextContent, setUserData, setValue, setXmlEncoding, setXmlStandalone, setXmlVersion, splitText, substringData`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ElemVariable

          public ElemVariable()

      Constructor ElemVariable

    - #### ElemVariable

          public ElemVariable(ElemVariable param)
                       throws javax.xml.transform.TransformerException

      Copy constructor.
      Parameters:
        `param` - An element created from an xsl:variable
      Throws:
        `javax.xml.transform.TransformerException`

  - ### Method Detail

    - #### setIndex

          public void setIndex(int index)

      Sets the relative position of this variable within the stack frame (if local) or the global area (if global). Note that this should be called only for global variables since the local position is computed in the compose() method.

    - #### getIndex

          public int getIndex()

      If this element is not at the top-level, get the relative position of the variable into the stack frame. If this variable is at the top-level, get the relative position within the global area.

    - #### setSelect

          public void setSelect(XPath v)

      Set the "select" attribute. If the variable-binding element has a select attribute, then the value of the attribute must be an expression and the value of the variable is the object that results from evaluating the expression. In this case, the content of the variable must be empty.
      Parameters:
        `v` - Value to set for the "select" attribute.

    - #### getSelect

          public XPath getSelect()

      Get the "select" attribute. If the variable-binding element has a select attribute, then the value of the attribute must be an expression and the value of the variable is the object that results from evaluating the expression. In this case, the content of the variable must be empty.
      Returns:
        Value of the "select" attribute.

    - #### setName

          public void setName(QName v)

      Set the "name" attribute. Both xsl:variable and xsl:param have a required name attribute, which specifies the name of the variable. The value of the name attribute is a QName, which is expanded as described in [2.4 Qualified Names].
      Parameters:
        `v` - Value to set for the "name" attribute.
      See Also:
        qname in XSLT Specification

    - #### getName

          public QName getName()

      Get the "name" attribute. Both xsl:variable and xsl:param have a required name attribute, which specifies the name of the variable. The value of the name attribute is a QName, which is expanded as described in [2.4 Qualified Names].
      Returns:
        Value of the "name" attribute.
      See Also:
        qname in XSLT Specification

    - #### setIsTopLevel

          public void setIsTopLevel(boolean v)

      Set if this is a top-level variable or param, or not.
      Parameters:
        `v` - Boolean indicating whether this is a top-level variable or param, or not.
      See Also:
        top-level-variables in XSLT Specification

    - #### getIsTopLevel

          public boolean getIsTopLevel()

      Get if this is a top-level variable or param, or not.
      Returns:
        Boolean indicating whether this is a top-level variable or param, or not.
      See Also:
        top-level-variables in XSLT Specification

    - #### getXSLToken

          public int getXSLToken()

      Get an integer representation of the element type.
      Overrides:
        `getXSLToken` in class `ElemTemplateElement`
      Returns:
        An integer representation of the element, defined in the Constants class.
      See Also:
        `Constants`

    - #### getNodeName

          public java.lang.String getNodeName()

      Return the node name.
      Specified by:
        `getNodeName` in interface `org.w3c.dom.Node`
      Overrides:
        `getNodeName` in class `ElemTemplateElement`
      Returns:
        The node name

    - #### execute

          public void execute(TransformerImpl transformer)
                       throws javax.xml.transform.TransformerException

      Execute a variable declaration and push it onto the variable stack.
      Overrides:
        `execute` in class `ElemTemplateElement`
      Parameters:
        `transformer` - non-null reference to the the current transform-time state.
      Throws:
        `javax.xml.transform.TransformerException`
      See Also:
        variables in XSLT Specification

    - #### getValue

          public XObject getValue(TransformerImpl transformer,
                                  int sourceNode)
                           throws javax.xml.transform.TransformerException

      Get the XObject representation of the variable.
      Parameters:
        `transformer` - non-null reference to the the current transform-time state.
        `sourceNode` - non-null reference to the current source node.
      Returns:
        the XObject representation of the variable.
      Throws:
        `javax.xml.transform.TransformerException`

    - #### compose

          public void compose(StylesheetRoot sroot)
                       throws javax.xml.transform.TransformerException

      This function is called after everything else has been recomposed, and allows the template to set remaining values that may be based on some other property that depends on recomposition.
      Overrides:
        `compose` in class `ElemTemplateElement`
      Throws:
        `javax.xml.transform.TransformerException`

    - #### endCompose

          public void endCompose(StylesheetRoot sroot)
                          throws javax.xml.transform.TransformerException

      This after the template's children have been composed. We have to get the count of how many variables have been declared, so we can do a link and unlink.
      Overrides:
        `endCompose` in class `ElemTemplateElement`
      Throws:
        `javax.xml.transform.TransformerException`

    - #### recompose

          public void recompose(StylesheetRoot root)

      This function is called during recomposition to control how this element is composed.
      Overrides:
        `recompose` in class `ElemTemplateElement`
      Parameters:
        `root` - The root stylesheet for this transformation.

    - #### setParentElem

          public void setParentElem(ElemTemplateElement p)

      Set the parent as an ElemTemplateElement.
      Overrides:
        `setParentElem` in class `ElemTemplateElement`
      Parameters:
        `p` - This node's parent as an ElemTemplateElement

    - #### isPsuedoVar

          public boolean isPsuedoVar()

      Tell if this is a psuedo variable reference, declared by Xalan instead of by the user.

    - #### appendChild

          public ElemTemplateElement appendChild(ElemTemplateElement elem)

      Add a child to the child list. If the select attribute is present, an error will be raised.
      Overrides:
        `appendChild` in class `ElemTemplateElement`
      Parameters:
        `elem` - New element to append to this element's children list
      Returns:
        null if the select attribute was present, otherwise the child just added to the child list

Copyright © 2023 Apache XML Project. All Rights Reserved.