com.icl.saxon.style
Class XSLStyleSheet

java.lang.Object
  extended bycom.icl.saxon.om.AbstractNode
      extended bycom.icl.saxon.tree.NodeImpl
          extended bycom.icl.saxon.tree.ParentNodeImpl
              extended bycom.icl.saxon.tree.ElementImpl
                  extended bycom.icl.saxon.tree.ElementWithAttributes
                      extended bycom.icl.saxon.style.StyleElement
                          extended bycom.icl.saxon.style.XSLStyleSheet
All Implemented Interfaces:
DOMLocator, org.w3c.dom.Element, org.xml.sax.Locator, org.w3c.dom.NamedNodeMap, org.w3c.dom.Node, NodeInfo, Source, 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, 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, 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 TransformerConfigurationException
Prepare the attributes on the stylesheet element

Specified by:
prepareAttributes in class StyleElement
Throws:
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 TransformerConfigurationException
Validate this element

Overrides:
validate in class StyleElement
Throws:
TransformerConfigurationException

preprocess

public void preprocess()
                throws 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
Throws:
TransformerConfigurationException

spliceIncludes

public void spliceIncludes()
                    throws TransformerConfigurationException
Process xsl:include and xsl:import elements.

Throws:
TransformerConfigurationException

hasNamespaceAliases

protected boolean hasNamespaceAliases()

processAllAttributes

public void processAllAttributes()
                          throws TransformerConfigurationException
Process the attributes of every node in the stylesheet

Overrides:
processAllAttributes in class StyleElement
Throws:
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 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.

Throws:
TransformerException

getExternalJavaClass

public java.lang.Class getExternalJavaClass(java.lang.String uri)
                                     throws TransformerException
Get a Java class for a given namespace URI, if possible. return null if none is found.

Throws:
TransformerException - if a class is found but cannot be loaded

process

public void process(Context context)
             throws 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.
Throws:
TransformerException