## com.icl.saxon.style
Class XSLStyleSheet

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

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

public class XSLStyleSheet
extends StyleElement

An xsl:stylesheet or xsl:transform element in the stylesheet.
Note this element represents a stylesheet module, not necessarily the whole stylesheet.

Field Summary

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
`XSLStyleSheet()`

Method Summary
`void` `allocateLocalSlots(int n)` Ensure there is enuogh space for local variables or parameters in any template
`int` `allocateSlotNumber()` Allocate a slot number for a global variable or parameter
`void` `gatherOutputProperties(java.util.Properties details)` Update an output properties object using the xsl:output elements in the stylesheet.
`DecimalFormatManager` `getDecimalFormatManager()` Get the DecimalFormatManager which handles decimal-format definitions
`java.lang.Class` `getExternalJavaClass(java.lang.String uri)` Get a Java class for a given namespace URI, if possible.
`XSLStyleSheet` `getImporter()` Get the StyleSheet that included or imported this one.
`KeyManager` `getKeyManager()` Get the KeyManager which handles key definitions
`int` `getMinImportPrecedence()` Get the minimum import precedence of this stylesheet, that is, the lowest precedence of any stylesheet imported by this one
`protected short` `getNamespaceAlias(short uriCode)` Get the declared namespace alias for a given namespace URI code if there is one.
`int` `getPrecedence()` Get the import precedence of this stylesheet
`PreparedStyleSheet` `getPreparedStyleSheet()` Get the owning PreparedStyleSheet object
`PreviewManager` `getPreviewManager()` Get the PreviewManager which handles saxon:preview element definitions
`RuleManager` `getRuleManager()` Get the RuleManager which handles template rules
`protected Mode` `getStripperRules()` Get the rules determining which nodes are to be stripped from the tree
`java.util.Vector` `getTopLevel()` Get the top level elements in this stylesheet, after applying include/import
`protected boolean` `hasNamespaceAliases()`
`void` `initialiseBindery(Bindery bindery)` Allocate space in bindery for all the variables needed This has to be done early to accommodate preview mode
`Stripper` `newStripper()` Create a Stripper which handles whitespace stripping definitions
`void` `prepareAttributes()` Prepare the attributes on the stylesheet element
`void` `preprocess()` Preprocess does all the processing possible before the source document is available.
`void` `process(Context context)` Process() is called once the source document is available.
`void` `processAllAttributes()` Process the attributes of every node in the stylesheet
`protected void` `processVersionAttribute(int nc)` Process the version attribute - mandatory on this element (but checked elsewhere)
`void` `setImporter(XSLStyleSheet importer)` Set the StyleSheet that included or imported this one.
`void` `setMinImportPrecedence(int precedence)` Set the minimum import precedence of this stylesheet, that is, the lowest precedence of any stylesheet imported by this one
`void` `setPrecedence(int prec)` Set the import precedence of this stylesheet
`void` `setPreparedStyleSheet(PreparedStyleSheet sheet)` Create link to the owning PreparedStyleSheet object
`void` `setPreviewManager(PreviewManager pm)` Set the preview manager
`void` `setWasIncluded()` Indicate that this stylesheet was included (by its "importer") using an xsl:include statement as distinct from xsl:import
`void` `spliceIncludes()` Process xsl:include and xsl:import elements.
`boolean` `stripsWhitespace()` Determine whether this stylesheet does any whitespace stripping
`void` `updateOutputProperties(java.util.Properties details, Context context)` Update an output properties object using the xsl:output elements in the stylesheet.
`void` `validate()` Validate this element
`boolean` `wasIncluded()` Determine whether this stylesheet was included (by its "importer") using an xsl:include statement as distinct from xsl:import.

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

`bindVariable, checkEmpty, checkNotTopLevel, checkTopLevel, checkUnknownAttribute, checkWithinTemplate, compileError, compileError, definesExcludedNamespace, definesExtensionElement, doesPostProcessing, fallbackProcessing, findAttributeSets, forwardsCompatibleModeIsEnabled, getContainingStyleSheet, getPrincipalStyleSheet, getStandardNames, getStyleSheetFunction, getVariableBinding, getVariableNames, getVersion, handleSortKeys, isExcludedNamespace, isExtensionNamespace, isInstruction, isTopLevel, makeAttributeValueTemplate, makeExpression, makePattern, mayContainTemplateBody, processAttributes, processAttributeSets, processChildren, processExcludedNamespaces, processExtensionElementAttribute, 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`

Constructor Detail

### XSLStyleSheet

    public XSLStyleSheet()

Method Detail

### setPreparedStyleSheet

    public void setPreparedStyleSheet(PreparedStyleSheet sheet)

  Create link to the owning PreparedStyleSheet object

### getPreparedStyleSheet

    public PreparedStyleSheet getPreparedStyleSheet()

  Get the owning PreparedStyleSheet object

  Overrides:
    `getPreparedStyleSheet` in class `StyleElement`
  Returns:
    the PreparedStyleSheet to which this stylesheet element belongs

### getRuleManager

    public RuleManager getRuleManager()

  Get the RuleManager which handles template rules

### getStripperRules

    protected Mode getStripperRules()

  Get the rules determining which nodes are to be stripped from the tree

### newStripper

    public Stripper newStripper()

  Create a Stripper which handles whitespace stripping definitions

### stripsWhitespace

    public boolean stripsWhitespace()

  Determine whether this stylesheet does any whitespace stripping

### getKeyManager

    public KeyManager getKeyManager()

  Get the KeyManager which handles key definitions

### getDecimalFormatManager

    public DecimalFormatManager getDecimalFormatManager()

  Get the DecimalFormatManager which handles decimal-format definitions

### getPreviewManager

    public PreviewManager getPreviewManager()

  Get the PreviewManager which handles saxon:preview element definitions

  Returns:
    null if there are no saxon:preview elements

### setPreviewManager

    public void setPreviewManager(PreviewManager pm)

  Set the preview manager

### setPrecedence

    public void setPrecedence(int prec)

  Set the import precedence of this stylesheet

### getPrecedence

    public int getPrecedence()

  Get the import precedence of this stylesheet

  Overrides:
    `getPrecedence` in class `StyleElement`

### getMinImportPrecedence

    public int getMinImportPrecedence()

  Get the minimum import precedence of this stylesheet, that is, the lowest precedence of any stylesheet imported by this one

### setMinImportPrecedence

    public void setMinImportPrecedence(int precedence)

  Set the minimum import precedence of this stylesheet, that is, the lowest precedence of any stylesheet imported by this one

### setImporter

    public void setImporter(XSLStyleSheet importer)

  Set the StyleSheet that included or imported this one.

### getImporter

    public XSLStyleSheet getImporter()

  Get the StyleSheet that included or imported this one.

  Returns:
    null if this is the principal stylesheet

### setWasIncluded

    public void setWasIncluded()

  Indicate that this stylesheet was included (by its "importer") using an xsl:include statement as distinct from xsl:import

### wasIncluded

    public boolean wasIncluded()

  Determine whether this stylesheet was included (by its "importer") using an xsl:include statement as distinct from xsl:import.

### getTopLevel

    public java.util.Vector getTopLevel()

  Get the top level elements in this stylesheet, after applying include/import

### allocateSlotNumber

    public int allocateSlotNumber()

  Allocate a slot number for a global variable or parameter

### allocateLocalSlots

    public void allocateLocalSlots(int n)

  Ensure there is enuogh space for local variables or parameters in any template

### prepareAttributes

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

  Prepare the attributes on the stylesheet element

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

### processVersionAttribute

    protected void processVersionAttribute(int nc)

  Process the version attribute - mandatory on this element (but checked elsewhere)

  Overrides:
    `processVersionAttribute` in class `StyleElement`
  Parameters:
    `nc` - the name code of the attribute required

### getNamespaceAlias

    protected short getNamespaceAlias(short uriCode)

  Get the declared namespace alias for a given namespace URI code if there is one. If there is more than one, we get the last.

  Parameters:
    `uriCode` - The code of the uri used in the stylesheet.
  Returns:
    The code of the result uri to be used: return the stylesheet uri unchanged if no alias is defined

### validate

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

  Validate this element

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

### preprocess

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

  Preprocess does all the processing possible before the source document is available. It is done once per stylesheet, so the stylesheet can be reused for multiple source documents.

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

### spliceIncludes

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

  Process xsl:include and xsl:import elements.

    `javax.xml.transform.TransformerConfigurationException`

### hasNamespaceAliases

    protected boolean hasNamespaceAliases()

### processAllAttributes

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

  Process the attributes of every node in the stylesheet

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

### initialiseBindery

    public void initialiseBindery(Bindery bindery)

  Allocate space in bindery for all the variables needed This has to be done early to accommodate preview mode

### gatherOutputProperties

    public void gatherOutputProperties(java.util.Properties details)

  Update an output properties object using the xsl:output elements in the stylesheet. This method can be called before the source document is available; all properties will be returned as written, with attribute value templates and namespace prefixes unexpanded, and no validation performed.

### updateOutputProperties

    public void updateOutputProperties(java.util.Properties details,
                                       Context context)
                                throws javax.xml.transform.TransformerException

  Update an output properties object using the xsl:output elements in the stylesheet. Note, as xsl:output now allows attribute value templates, this cannot be called until the source document is available.

    `javax.xml.transform.TransformerException`

### getExternalJavaClass

    public java.lang.Class getExternalJavaClass(java.lang.String uri)
                                         throws javax.xml.transform.TransformerException

  Get a Java class for a given namespace URI, if possible. return null if none is found.

  Throws:
    `javax.xml.transform.TransformerException` - if a class is found but cannot be loaded

### process

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

  Process() is called once the source document is available. It activates those top-level stylesheet elements that were not dealt with at preprocessing stage, notably global variables and parameters, and xsl:output elements

  Specified by:
    `process` in class `StyleElement`
  Parameters:
    `context` - The context in the source XML document, giving access to the current node, the current variables, etc.
    `javax.xml.transform.TransformerException`