## com.icl.saxon.style
Class StyleElement

    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

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:
  AbsentExtensionElement, LiteralResultElement, SAXONDoctype, SAXONEntityRef, SAXONFunction, SAXONItem, SAXONPreview, SAXONWhile, SQLClose, SQLConnect, SQLInsert, XSLApplyImports, XSLApplyTemplates, XSLAttributeSet, XSLCallTemplate, XSLChoose, XSLCopy, XSLCopyOf, XSLDecimalFormat, XSLElement, XSLFallback, XSLForEach, XSLGeneralIncorporate, com.icl.saxon.style.XSLGeneralOutput, XSLGeneralVariable, XSLIf, XSLKey, XSLMessage, XSLNamespaceAlias, XSLNumber, XSLOtherwise, 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
`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 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, 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
`StyleElement()` Constructor

Method Summary
`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
`protected void` `compileError(java.lang.String message)`
`protected void` `compileError(javax.xml.transform.TransformerException error)` Construct an exception with diagnostic information
`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.
`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
`XSLStyleSheet` `getContainingStyleSheet()` Get the containing XSLStyleSheet element
`int` `getPrecedence()` Get the import precedence of this stylesheet element.
`PreparedStyleSheet` `getPreparedStyleSheet()` Get the PreparedStyleSheet object.
`protected XSLStyleSheet` `getPrincipalStyleSheet()` Get the principal XSLStyleSheet node.
`StandardNames` `getStandardNames()` Get the StandardNames object
`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` `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` `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` `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
`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

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

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

    `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

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

    `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

    `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

    `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

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

    `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

    `javax.xml.transform.TransformerConfigurationException`

### validateSubtree

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

  Recursive walk through the stylesheet to validate all nodes

    `javax.xml.transform.TransformerConfigurationException`

### validateChildren

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

    `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.
    `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.
    `javax.xml.transform.TransformerException`

### fallbackProcessing

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

  Perform fallback processing

    `javax.xml.transform.TransformerException`

### handleSortKeys

    protected Expression handleSortKeys(Expression select)

  Modify the "select" expression to include any sort keys specified. Used in XSLForEach and XSLApplyTemplates

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

    `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

    `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

    `javax.xml.transform.TransformerConfigurationException`

### compileError

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

    `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
    `XPathException`

### getVariableBinding

    public Binding getVariableBinding(int fprint)

  Bind a variable used in this element to the XSLVariable element in which it is declared

  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