StyleElement
Date: 2016-07-03

com.icl.saxon.style

## Class StyleElement

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

- All Implemented Interfaces:
    NodeInfo, javax.xml.transform.dom.DOMLocator, javax.xml.transform.Source, javax.xml.transform.SourceLocator, org.w3c.dom.Element, org.w3c.dom.NamedNodeMap, org.w3c.dom.Node, org.xml.sax.Locator
  Direct Known Subclasses:
    AbsentExtensionElement, LiteralResultElement, SAXONDoctype, SAXONEntityRef, SAXONFunction, SAXONItem, SAXONPreview, SAXONWhile, SQLClose, SQLConnect, SQLInsert, XSLApplyImports, XSLApplyTemplates, XSLAttributeSet, XSLCallTemplate, XSLChoose, XSLCopy, XSLCopyOf, XSLDecimalFormat, XSLDocument, XSLElement, XSLFallback, XSLForEach, XSLGeneralIncorporate, XSLGeneralVariable, XSLIf, XSLKey, XSLMessage, XSLNamespaceAlias, XSLNumber, XSLOtherwise, XSLOutput, XSLPreserveSpace, XSLScript, XSLSort, XSLStringConstructor, XSLStyleSheet, XSLTemplate, XSLText, XSLValueOf, XSLWhen

      public abstract class StyleElement
      extends ElementWithAttributes
      implements org.xml.sax.Locator

  Abstract superclass for all element nodes in the stylesheet.
  Note: this class implements Locator. The element retains information about its own location in the stylesheet, which is useful when an XSL error is found.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.util.Vector` | `attributeSets`
    `protected short[]` | `extensionNamespaces`
    `static int` | `REPORT_ALWAYS`
    `static int` | `REPORT_IF_INSTANTIATED`
    `static int` | `REPORT_UNLESS_FORWARDS_COMPATIBLE`
    `protected int` | `reportingCircumstances`
    `protected int` | `sequence`
    `protected StaticContext` | `staticContext`
    `protected javax.xml.transform.TransformerConfigurationException` | `validationError`
    `protected java.lang.String` | `version`

    - ### Fields inherited from class com.icl.saxon.tree.ElementWithAttributes

      `attributeList, namespaceList`

    - ### Fields inherited from class com.icl.saxon.tree.ElementImpl

      `nameCode, root`

    - ### 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_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`

    - ### Fields inherited from interface com.icl.saxon.om.NodeInfo

      `ATTRIBUTE, COMMENT, ELEMENT, NAMESPACE, NODE, NONE, NUMBER_OF_TYPES, PI, ROOT, TEXT`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `StyleElement()` Constructor

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addChild(NodeImpl node, int index)` Add a child node to this node.
    `Binding` | `bindVariable(int fingerprint)` Bind a variable used in this element to the XSLVariable element in which it is declared
    `void` | `checkEmpty()` Convenience method to check that the stylesheet element is empty
    `void` | `checkNotTopLevel()` Convenience method to check that the stylesheet element is not at the top level
    `void` | `checkTopLevel()` Convenience method to check that the stylesheet element is at the top level
    `protected void` | `checkUnknownAttribute(int nc)` Check whether an unknown attribute is permitted.
    `void` | `checkWithinTemplate()` Check that the stylesheet element is within a template body
    `void` | `compact(int size)` Compact the space used by this node
    `protected void` | `compileError(java.lang.String message)`
    `protected void` | `compileError(javax.xml.transform.TransformerException error)` Construct an exception with diagnostic information
    `void` | `copyStringValue(Outputter out)` Copy the string-value of this node to a given outputter
    `protected boolean` | `definesExcludedNamespace(short uriCode)` Check whether this node excludes a particular namespace from the result.
    `protected boolean` | `definesExtensionElement(short uriCode)` Check whether a particular extension element namespace is defined on this node.
    `boolean` | `doesPostProcessing()` Determine whether this element does any processing after instantiating any children.
    `void` | `dropChildren()` Drop a branch of the tree.
    `AxisEnumeration` | `enumerateChildren(NodeTest test)` Get an enumeration of the children of this node
    `protected void` | `fallbackProcessing(StyleElement instruction, Context context)` Perform fallback processing
    `protected void` | `findAttributeSets(java.lang.String use)` Determine the list of attribute-sets associated with this element.
    `boolean` | `forwardsCompatibleModeIsEnabled()` Determine whether forwards-compatible mode is enabled for this element
    `org.w3c.dom.NodeList` | `getChildNodes()` Return a `NodeList` that contains all children of this node.
    `XSLStyleSheet` | `getContainingStyleSheet()` Get the containing XSLStyleSheet element
    `org.w3c.dom.Node` | `getFirstChild()` Get the first child node of the element
    `org.w3c.dom.Node` | `getLastChild()` Get the last child node of the element
    `java.lang.String` | `getNodeValue()` Get the node value as defined in the DOM.
    `protected NodeImpl` | `getNthChild(int n)` Get the nth child node of the element (numbering from 0)
    `int` | `getPrecedence()` Get the import precedence of this stylesheet element.
    `PreparedStyleSheet` | `getPreparedStyleSheet()` Get the PreparedStyleSheet object.
    `protected XSLStyleSheet` | `getPrincipalStyleSheet()` Get the principal XSLStyleSheet node.
    `protected long` | `getSequenceNumber()` Get the node sequence number (in document order).
    `StandardNames` | `getStandardNames()` Get the StandardNames object
    `java.lang.String` | `getStringValue()` Return the string-value of the node, that is, the concatenation of the character content of all descendent elements and text nodes.
    `Function` | `getStyleSheetFunction(int fingerprint)` Get a Function declared using a saxon:function element in the stylesheet
    `Binding` | `getVariableBinding(int fprint)` Bind a variable used in this element to the XSLVariable element in which it is declared
    `java.util.Enumeration[]` | `getVariableNames()` List the variables that are in scope for this stylesheet element.
    `java.lang.String` | `getVersion()` Get the version number on this element, or inherited from its ancestors
    `protected Expression` | `handleSortKeys(Expression select)` Modify the "select" expression to include any sort keys specified.
    `boolean` | `hasChildNodes()` Determine if the node has any children.
    `boolean` | `isExcludedNamespace(short uriCode)` Check whether a namespace uri defines an namespace excluded from the result.
    `boolean` | `isExtensionNamespace(short uriCode)` Check whether a namespace uri defines an extension element.
    `boolean` | `isInstruction()` Determine whether this node is an instruction.
    `boolean` | `isTopLevel()` Test whether this is a top-level element
    `Expression` | `makeAttributeValueTemplate(java.lang.String expression)` Make an attribute value template in the context of this stylesheet element
    `Expression` | `makeExpression(java.lang.String expression)` Make an expression in the context of this stylesheet element
    `Pattern` | `makePattern(java.lang.String pattern)` Make a pattern in the context of this stylesheet element
    `boolean` | `mayContainTemplateBody()` Determine whether this type of element is allowed to contain a template-body
    `abstract void` | `prepareAttributes()` Set the attribute list for the element.
    `void` | `preprocess()` Default preprocessing method does nothing.
    `abstract void` | `process(Context context)` Process: called to do the real work of this stylesheet element.
    `void` | `processAllAttributes()` Process the attributes of this element and all its children
    `void` | `processAttributes()` Process the attribute list for the element.
    `protected void` | `processAttributeSets(Context context)` Expand the attribute sets referenced in this element's use-attribute-sets attribute
    `void` | `processChildren(Context context)` Process the children of this node in the stylesheet
    `protected void` | `processExcludedNamespaces(int nc)` Process the [xsl:]exclude-result-prefixes attribute if there is one
    `protected void` | `processExtensionElementAttribute(int nc)` Process the [xsl:]extension-element-prefixes attribute if there is one
    `protected void` | `processVersionAttribute(int nc)` Process the [xsl:]version attribute if there is one
    `void` | `removeChild(int index)` Remove node at given index.
    `void` | `renumberChildren()` Renumber the children of a given parent node.
    `void` | `reportAbsence(java.lang.String attribute)` Convenience method to report the absence of a mandatory attribute
    `protected void` | `setValidationError(javax.xml.transform.TransformerException reason, int circumstances)` Set a validation error
    `protected javax.xml.transform.TransformerException` | `styleError(java.lang.String message)`
    `protected javax.xml.transform.TransformerException` | `styleError(javax.xml.transform.TransformerException error)` Construct an exception with diagnostic information
    `void` | `substituteFor(StyleElement temp)` Make this node a substitute for a temporary one previously added to the tree.
    `void` | `useChildrenArray(NodeImpl[] array)` Supply an array to be used for the array of children.
    `void` | `validate()` Check that the element is valid.
    `protected void` | `validateChildren()`
    `void` | `validateSubtree()` Recursive walk through the stylesheet to validate all nodes

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

      `copy, generateId, getBaseURI, getDocumentRoot, getLineNumber, getNameCode, getNodeType, getSystemId, makeNameCode, setLineNumber, setNameCode, setSystemId`

    - ### Methods inherited from class com.icl.saxon.tree.NodeImpl

      `compareOrder, getDisplayName, getDocumentElement, getEnumeration, getFingerprint, getLocalName, getNamePool, getNextInDocument, getNextSibling, getOriginatingNode, getParent, getPrefix, getPreviousInDocument, getPreviousSibling, getURI, isSameNodeInfo, removeNode`

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

      `appendChild, appendData, cloneNode, compareDocumentPosition, createAttribute, createAttributeNS, createCDATASection, createComment, createDocumentFragment, createElement, createElementNS, createEntityReference, createProcessingInstruction, createTextNode, deleteData, disallowUpdate, getColumnNumber, getData, getDoctype, getElementById, getElementsByTagName, getElementsByTagNameNS, getFeature, getImplementation, getName, getNamespaceURI, getNodeName, getOwnerDocument, getOwnerElement, getParentNode, getPublicId, getSchemaTypeInfo, getSpecified, getTagName, getTextContent, getUserData, getValue, getWholeText, importNode, insertBefore, insertData, isDefaultNamespace, isElementContentWhitespace, isEqualNode, isId, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, replaceData, replaceWholeText, setData, setIdAttribute, setIdAttributeNode, setIdAttributeNS, setNodeValue, setPrefix, setTextContent, setUserData, 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, getSchemaTypeInfo, getTagName, setIdAttribute, setIdAttributeNode, setIdAttributeNS`

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

      `appendChild, cloneNode, compareDocumentPosition, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setNodeValue, setPrefix, setTextContent, setUserData`

- - ### Field Detail

    - #### attributeSets

          protected java.util.Vector attributeSets

    - #### extensionNamespaces

          protected short[] extensionNamespaces

    - #### version

          protected java.lang.String version

    - #### staticContext

          protected StaticContext staticContext

    - #### validationError

          protected javax.xml.transform.TransformerConfigurationException validationError

    - #### reportingCircumstances

          protected int reportingCircumstances

    - #### REPORT_ALWAYS

          public static final int REPORT_ALWAYS

      See Also:
        Constant Field Values

    - #### REPORT_UNLESS_FORWARDS_COMPATIBLE

          public static final int REPORT_UNLESS_FORWARDS_COMPATIBLE

      See Also:
        Constant Field Values

    - #### REPORT_IF_INSTANTIATED

          public static final int REPORT_IF_INSTANTIATED

      See Also:
        Constant Field Values

    - #### sequence

          protected int sequence

  - ### Constructor Detail

    - #### StyleElement

          public StyleElement()

      Constructor

  - ### Method Detail

    - #### substituteFor

          public void substituteFor(StyleElement temp)

      Make this node a substitute for a temporary one previously added to the tree. See StyleNodeFactory for details. "A node like the other one in all things but its class". Note that at this stage, the node will not yet be known to its parent, though it will contain a reference to its parent; and it will have no children.

    - #### setValidationError

          protected void setValidationError(javax.xml.transform.TransformerException reason,
                                int circumstances)

      Set a validation error

    - #### isInstruction

          public boolean isInstruction()

      Determine whether this node is an instruction. The default implementation says it isn't.

    - #### doesPostProcessing

          public boolean doesPostProcessing()

      Determine whether this element does any processing after instantiating any children. The default implementation says it does. Tail recursion only works if call-template is nested entirely in elements that do no such processing. (If the element is empty, this property is irrelevant, because the element cannot contain an xsl:call-template).

    - #### mayContainTemplateBody

          public boolean mayContainTemplateBody()

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

    - #### getContainingStyleSheet

          public XSLStyleSheet getContainingStyleSheet()

      Get the containing XSLStyleSheet element

    - #### getPrecedence

          public int getPrecedence()

      Get the import precedence of this stylesheet element.

    - #### getStandardNames

          public final StandardNames getStandardNames()

      Get the StandardNames object

    - #### processAllAttributes

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

      Process the attributes of this element and all its children
      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### processAttributes

          public final void processAttributes()
                                       throws javax.xml.transform.TransformerConfigurationException

      Process the attribute list for the element. This is a wrapper method that calls prepareAttributes (provided in the subclass) and traps any exceptions
      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### checkUnknownAttribute

          protected void checkUnknownAttribute(int nc)
                                        throws javax.xml.transform.TransformerConfigurationException

      Check whether an unknown attribute is permitted.
      Parameters:
        `nc` - The name code of the attribute name
      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### prepareAttributes

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

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

    - #### makeExpression

          public Expression makeExpression(java.lang.String expression)
                                    throws javax.xml.transform.TransformerConfigurationException

      Make an expression in the context of this stylesheet element
      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### makePattern

          public Pattern makePattern(java.lang.String pattern)
                              throws javax.xml.transform.TransformerConfigurationException

      Make a pattern in the context of this stylesheet element
      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### makeAttributeValueTemplate

          public Expression makeAttributeValueTemplate(java.lang.String expression)
                                                throws javax.xml.transform.TransformerConfigurationException

      Make an attribute value template in the context of this stylesheet element
      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### processExtensionElementAttribute

          protected void processExtensionElementAttribute(int nc)
                                                   throws javax.xml.transform.TransformerConfigurationException

      Process the [xsl:]extension-element-prefixes attribute if there is one
      Parameters:
        `nc` - the name code of the attribute required
      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### processExcludedNamespaces

          protected void processExcludedNamespaces(int nc)
                                            throws javax.xml.transform.TransformerConfigurationException

      Process the [xsl:]exclude-result-prefixes attribute if there is one
      Parameters:
        `nc` - the name code of the attribute required
      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### processVersionAttribute

          protected void processVersionAttribute(int nc)

      Process the [xsl:]version attribute if there is one
      Parameters:
        `nc` - the name code of the attribute required

    - #### getVersion

          public java.lang.String getVersion()

      Get the version number on this element, or inherited from its ancestors

    - #### forwardsCompatibleModeIsEnabled

          public boolean forwardsCompatibleModeIsEnabled()

      Determine whether forwards-compatible mode is enabled for this element

    - #### definesExtensionElement

          protected boolean definesExtensionElement(short uriCode)

      Check whether a particular extension element namespace is defined on this node. This checks this node only, not the ancestor nodes. The implementation checks whether the prefix is included in the [xsl:]extension-element-prefixes attribute.
      Parameters:
        `uriCode` - the namespace URI code being tested

    - #### isExtensionNamespace

          public boolean isExtensionNamespace(short uriCode)

      Check whether a namespace uri defines an extension element. This checks whether the namespace is defined as an extension namespace on this or any ancestor node.
      Parameters:
        `uriCode` - the namespace URI code being tested

    - #### definesExcludedNamespace

          protected boolean definesExcludedNamespace(short uriCode)

      Check whether this node excludes a particular namespace from the result. This method checks this node only, not the ancestor nodes.
      Parameters:
        `uriCode` - the code of the namespace URI being tested

    - #### isExcludedNamespace

          public boolean isExcludedNamespace(short uriCode)

      Check whether a namespace uri defines an namespace excluded from the result. This checks whether the namespace is defined as an excluded namespace on this or any ancestor node.
      Parameters:
        `uriCode` - the code of the namespace URI being tested

    - #### validate

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

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

    - #### preprocess

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

      Default preprocessing method does nothing. It is implemented for those top-level elements that can be evaluated before the source document is available, for example xsl:key, xsl:attribute-set, xsl:template, xsl:locale
      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### validateSubtree

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

      Recursive walk through the stylesheet to validate all nodes
      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### validateChildren

          protected void validateChildren()
                                   throws javax.xml.transform.TransformerConfigurationException

      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### getPrincipalStyleSheet

          protected XSLStyleSheet getPrincipalStyleSheet()

      Get the principal XSLStyleSheet node. This gets the principal style sheet, i.e. the one originally loaded, that forms the root of the import/include tree

    - #### getPreparedStyleSheet

          public PreparedStyleSheet getPreparedStyleSheet()

      Get the PreparedStyleSheet object.
      Returns:
        the PreparedStyleSheet to which this stylesheet element belongs

    - #### checkWithinTemplate

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

      Check that the stylesheet element is within a template body
      Throws:
        `javax.xml.transform.TransformerConfigurationException` - if not within a template body

    - #### checkTopLevel

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

      Convenience method to check that the stylesheet element is at the top level
      Throws:
        `javax.xml.transform.TransformerConfigurationException` - if not at top level

    - #### checkNotTopLevel

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

      Convenience method to check that the stylesheet element is not at the top level
      Throws:
        `javax.xml.transform.TransformerConfigurationException` - if it is at the top level

    - #### checkEmpty

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

      Convenience method to check that the stylesheet element is empty
      Throws:
        `javax.xml.transform.TransformerConfigurationException` - if it is not empty

    - #### reportAbsence

          public void reportAbsence(java.lang.String attribute)
                             throws javax.xml.transform.TransformerConfigurationException

      Convenience method to report the absence of a mandatory attribute
      Throws:
        `javax.xml.transform.TransformerConfigurationException` - if the attribute is missing

    - #### process

          public abstract void process(Context context)
                                throws javax.xml.transform.TransformerException

      Process: called to do the real work of this stylesheet element. This method must be implemented in each subclass.
      Parameters:
        `context` - The context in the source XML document, giving access to the current node, the current variables, etc.
      Throws:
        `javax.xml.transform.TransformerException`

    - #### processChildren

          public void processChildren(Context context)
                               throws javax.xml.transform.TransformerException

      Process the children of this node in the stylesheet
      Parameters:
        `context` - The context in the source XML document, giving access to the current node, the current variables, etc.
      Throws:
        `javax.xml.transform.TransformerException`

    - #### fallbackProcessing

          protected void fallbackProcessing(StyleElement instruction,
                                Context context)
                                     throws javax.xml.transform.TransformerException

      Perform fallback processing
      Throws:
        `javax.xml.transform.TransformerException`

    - #### handleSortKeys

          protected Expression handleSortKeys(Expression select)
                                       throws javax.xml.transform.TransformerConfigurationException

      Modify the "select" expression to include any sort keys specified. Used in XSLForEach and XSLApplyTemplates
      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### findAttributeSets

          protected void findAttributeSets(java.lang.String use)
                                    throws javax.xml.transform.TransformerConfigurationException

      Determine the list of attribute-sets associated with this element. This is used for xsl:element, xsl:copy, xsl:attribute-set, and on literal result elements
      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### processAttributeSets

          protected void processAttributeSets(Context context)
                                       throws javax.xml.transform.TransformerException

      Expand the attribute sets referenced in this element's use-attribute-sets attribute
      Throws:
        `javax.xml.transform.TransformerException`

    - #### styleError

          protected javax.xml.transform.TransformerException styleError(javax.xml.transform.TransformerException error)

      Construct an exception with diagnostic information

    - #### styleError

          protected javax.xml.transform.TransformerException styleError(java.lang.String message)

    - #### compileError

          protected void compileError(javax.xml.transform.TransformerException error)
                               throws javax.xml.transform.TransformerConfigurationException

      Construct an exception with diagnostic information
      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### compileError

          protected void compileError(java.lang.String message)
                               throws javax.xml.transform.TransformerConfigurationException

      Throws:
        `javax.xml.transform.TransformerConfigurationException`

    - #### isTopLevel

          public boolean isTopLevel()

      Test whether this is a top-level element

    - #### bindVariable

          public Binding bindVariable(int fingerprint)
                               throws XPathException

      Bind a variable used in this element to the XSLVariable element in which it is declared
      Parameters:
        `fingerprint` - The fingerprint of the name of the variable
      Returns:
        a Binding for the variable
      Throws:
        `XPathException` - if the variable has not been declared

    - #### getVariableBinding

          public Binding getVariableBinding(int fprint)

      Bind a variable used in this element to the XSLVariable element in which it is declared
      Parameters:
        `fprint` - The absolute name of the variable (as a namepool fingerprint)
      Returns:
        a Binding for the variable, or null if it has not been declared

    - #### getVariableNames

          public java.util.Enumeration[] getVariableNames()

      List the variables that are in scope for this stylesheet element. Designed for a debugger, not used by the processor.
      Returns:
        two Enumeration of Strings, the global ones [0] and the local ones [1]

    - #### getStyleSheetFunction

          public Function getStyleSheetFunction(int fingerprint)

      Get a Function declared using a saxon:function element in the stylesheet
      Parameters:
        `fingerprint` - the fingerprint of the name of the function
      Returns:
        the Function object represented by this saxon:function; or null if not found

    - #### getSequenceNumber

          protected final long getSequenceNumber()

      Get the node sequence number (in document order). Sequence numbers are monotonic but not consecutive. In the current implementation, parent nodes (elements and roots) have a zero least-significant word, while namespaces, attributes, text nodes, comments, and PIs have the top word the same as their owner and the bottom half reflecting their relative position.
      Overrides:
        `getSequenceNumber` in class `NodeImpl`

    - #### hasChildNodes

          public final boolean hasChildNodes()

      Determine if the node has any children.
      Specified by:
        `hasChildNodes` in interface `NodeInfo`
      Specified by:
        `hasChildNodes` in interface `org.w3c.dom.Node`
      Overrides:
        `hasChildNodes` in class `NodeImpl`
      Returns:
        `true` if the node has any children, `false` if the node has no children.

    - #### enumerateChildren

          public final AxisEnumeration enumerateChildren(NodeTest test)

      Get an enumeration of the children of this node

    - #### getFirstChild

          public final org.w3c.dom.Node getFirstChild()

      Get the first child node of the element
      Specified by:
        `getFirstChild` in interface `org.w3c.dom.Node`
      Overrides:
        `getFirstChild` in class `NodeImpl`
      Returns:
        the first child node of the required type, or null if there are no children

    - #### getLastChild

          public final org.w3c.dom.Node getLastChild()

      Get the last child node of the element
      Specified by:
        `getLastChild` in interface `org.w3c.dom.Node`
      Overrides:
        `getLastChild` in class `NodeImpl`
      Returns:
        the last child of the element, or null if there are no children

    - #### getChildNodes

          public final org.w3c.dom.NodeList getChildNodes()

      Return a `NodeList` that contains all children of this node. If there are no children, this is a `NodeList` containing no nodes.
      Specified by:
        `getChildNodes` in interface `org.w3c.dom.Node`
      Overrides:
        `getChildNodes` in class `NodeImpl`

    - #### getNthChild

          protected final NodeImpl getNthChild(int n)

      Get the nth child node of the element (numbering from 0)
      Returns:
        the last child of the element, or null if there is no n'th child

    - #### getStringValue

          public java.lang.String getStringValue()

      Return the string-value of the node, that is, the concatenation of the character content of all descendent elements and text nodes.
      Returns:
        the accumulated character content of the element, including descendant elements.

    - #### copyStringValue

          public void copyStringValue(Outputter out)
                               throws javax.xml.transform.TransformerException

      Copy the string-value of this node to a given outputter
      Specified by:
        `copyStringValue` in interface `NodeInfo`
      Overrides:
        `copyStringValue` in class `AbstractNode`
      Throws:
        `javax.xml.transform.TransformerException`

    - #### useChildrenArray

          public void useChildrenArray(NodeImpl[] array)

      Supply an array to be used for the array of children. For system use only.

    - #### addChild

          public void addChild(NodeImpl node,
                      int index)

      Add a child node to this node. For system use only. Note: normalizing adjacent text nodes is the responsibility of the caller.

    - #### removeChild

          public void removeChild(int index)

      Remove node at given index. Will always be followed by a renumberChildren().

    - #### renumberChildren

          public void renumberChildren()

      Renumber the children of a given parent node. For system use only

    - #### dropChildren

          public void dropChildren()

      Drop a branch of the tree. The target element remains in the tree, but its children are disconnected from the parent. Unless there are other references to the children (e.g. in a variable) they will be deleted from memory next time the garbage collector comes round.

    - #### compact

          public void compact(int size)

      Compact the space used by this node

    - #### getNodeValue

          public java.lang.String getNodeValue()

      Get the node value as defined in the DOM. This is not the same as the XPath string-value.
      Specified by:
        `getNodeValue` in interface `org.w3c.dom.Node`
      Overrides:
        `getNodeValue` in class `AbstractNode`