org.apache.xalan.templates
Class StylesheetRoot

java.lang.Object
  extended byorg.apache.xml.utils.UnImplNode
      extended byorg.apache.xalan.templates.ElemTemplateElement
          extended byorg.apache.xalan.templates.Stylesheet
              extended byorg.apache.xalan.templates.StylesheetComposed
                  extended byorg.apache.xalan.templates.StylesheetRoot
All Implemented Interfaces:
org.w3c.dom.Document, org.w3c.dom.Element, ExpressionNode, org.w3c.dom.Node, org.w3c.dom.NodeList, PrefixResolver, Serializable, javax.xml.transform.SourceLocator, javax.xml.transform.Templates, WhitespaceStrippingElementMatcher, XSLTVisitable

public class StylesheetRoot
extends StylesheetComposed
implements Serializable, javax.xml.transform.Templates

This class represents the root object of the stylesheet tree.

See Also:
Serialized Form

Nested Class Summary
(package private)  class StylesheetRoot.ComposeState
          Class to track state global state during the compose() operation.
 
Field Summary
private  Hashtable m_attrSets
          Composed set of all included and imported attribute set properties.
private  Hashtable m_availElems
          The schema used when creating this StylesheetRoot
private  StylesheetRoot.ComposeState m_composeState
           
private  Hashtable m_decimalFormatSymbols
          Table of DecimalFormatSymbols, keyed by QName.
private  ElemTemplate m_defaultRootRule
           The default template to use for the root if we don't find anything else.
private  ElemTemplate m_defaultRule
           The default template to use if we don't find anything else.
private  ElemTemplate m_defaultTextRule
           The default template to use for text nodes if we don't find anything else.
private  ExtensionNamespacesManager m_extNsMgr
           
private  StylesheetComposed[] m_globalImportList
          The combined list of imports.
private  Vector m_keyDecls
          A list of all key declarations visible from this stylesheet and all lesser stylesheets.
private  Hashtable m_namespaceAliasComposed
          Composed set of all namespace aliases.
private  boolean m_outputMethodSet
          Flag indicating whether an output method has been set by the user.
private  OutputProperties m_outputProperties
          This will be set up with the default values, and then the values will be set as stylesheets are encountered.
(package private)  XPath m_selectDefault
          Used for default selection.
private  ElemTemplate m_startRule
           The start rule to kick off the transformation.
private  TemplateList m_templateList
          The "xsl:template" properties.
private  Vector m_variables
          Composed set of all variables and params.
private  TemplateList m_whiteSpaceInfoList
          A list of properties that specify how to do space stripping.
 
Fields inherited from class org.apache.xalan.templates.StylesheetComposed
 
Fields inherited from class org.apache.xalan.templates.Stylesheet
m_DecimalFormatDeclarations, STYLESHEET_EXT
 
Fields inherited from class org.apache.xalan.templates.ElemTemplateElement
m_docOrderNumber, m_firstChild, m_hasVariableDecl, m_nextSibling, m_parentNode, m_prefixTable
 
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
 
Constructor Summary
StylesheetRoot(javax.xml.transform.ErrorListener errorListener)
          Uses an XSL stylesheet document.
StylesheetRoot(XSLTSchema schema, javax.xml.transform.ErrorListener listener)
          Creates a StylesheetRoot and retains a pointer to the schema used to create this StylesheetRoot.
 
Method Summary
protected  void addImports(Stylesheet stylesheet, boolean addToList, Vector importList)
          Add the imports in the given sheet to the working importList vector.
 boolean canStripWhiteSpace()
          Get information about whether or not whitespace can be stripped.
private  void clearComposeState()
          Clear the compose state.
(package private)  void composeTemplates(ElemTemplateElement templ)
          Call the compose function for each ElemTemplateElement.
 Vector getAttributeSetComposed(QName name)
          Get a list "xsl:attribute-set" properties that match the qname.
 Hashtable getAvailableElements()
          Get the hashtable of available elements.
(package private)  StylesheetRoot.ComposeState getComposeState()
          Return class to track state global state during the compose() operation.
 DecimalFormatSymbols getDecimalFormatComposed(QName name)
          Given a valid element decimal-format name, return the decimalFormatSymbols with that name.
 Properties getDefaultOutputProps()
           
 ElemTemplate getDefaultRootRule()
           Get the default template for a root node.
 ElemTemplate getDefaultRule()
           Get the default template for elements.
 ElemTemplate getDefaultTextRule()
           Get the default template for text.
 ExtensionNamespacesManager getExtensionNamespacesManager()
          Only instantiate an ExtensionNamespacesManager if one is called for (i.e., if the stylesheet contains extension functions and/or elements).
 Vector getExtensions()
          Get the vector of extension namespaces.
 StylesheetComposed getGlobalImport(int i)
          Get a stylesheet from the global import list.
 int getGlobalImportCount()
          Get the total number of imports in the global import list.
 int getImportNumber(StylesheetComposed sheet)
          Given a stylesheet, return the number of the stylesheet in the global import list.
 Vector getKeysComposed()
          Get the composed "xsl:key" properties.
 NamespaceAlias getNamespaceAliasComposed(String uri)
          Get the "xsl:namespace-alias" property.
 OutputProperties getOutputComposed()
          Get the combined "xsl:output" property with the properties combined from the included stylesheets.
 Properties getOutputProperties()
          Get the static properties for xsl:output.
 ElemTemplate getStartRule()
           Get the default template for a root node.
 ElemTemplate getTemplateComposed(QName qname)
          Get an "xsl:template" property.
 ElemTemplate getTemplateComposed(XPathContext xctxt, int targetNode, QName mode, boolean quietConflictWarnings, DTM dtm)
          Get an "xsl:template" property by node match.
 ElemTemplate getTemplateComposed(XPathContext xctxt, int targetNode, QName mode, int maxImportLevel, int endImportLevel, boolean quietConflictWarnings, DTM dtm)
          Get an "xsl:template" property by node match.
 TemplateList getTemplateListComposed()
          Accessor method to retrieve the TemplateList associated with this StylesheetRoot.
 ElemVariable getVariableOrParamComposed(QName qname)
          Get an "xsl:variable" property.
 Vector getVariablesAndParamsComposed()
          Get all global "xsl:variable" properties in scope for this stylesheet.
 WhiteSpaceInfo getWhiteSpaceInfo(XPathContext support, int targetElement, DTM dtm)
          Get information about whether or not an element should strip whitespace.
(package private)  void initComposeState()
          Initialize a new ComposeState.
private  void initDefaultRule(javax.xml.transform.ErrorListener errorListener)
          Create the default rule if needed.
 boolean isOutputMethodSet()
           Find out if an output method has been set by the user.
 boolean isRoot()
          Tell if this is the root of the stylesheet tree.
 javax.xml.transform.Transformer newTransformer()
          Create a new transformation context for this Templates object.
private  void QuickSort2(Vector v, int lo0, int hi0)
          This is a generic version of C.A.R Hoare's Quick Sort algorithm.
 void recompose()
          Recompose the values of all "composed" properties, meaning properties that need to be combined or calculated from the combination of imported and included stylesheets.
(package private)  void recomposeAttributeSets(ElemAttributeSet attrSet)
          Recompose the attribute-set declarations.
(package private)  void recomposeDecimalFormats(DecimalFormatProperties dfp)
          Recompose the decimal-format declarations.
(package private)  void recomposeKeys(KeyDeclaration keyDecl)
          Recompose the key declarations.
(package private)  void recomposeNamespaceAliases(NamespaceAlias nsAlias)
          Recompose the namespace-alias declarations.
(package private)  void recomposeOutput(OutputProperties oprops)
          Recompose the output format object from the included elements.
(package private)  void recomposeTemplates(ElemTemplate template)
          Recompose the template declarations.
(package private)  void recomposeVariables(ElemVariable elemVar)
          Recompose the top level variable and parameter declarations.
(package private)  void recomposeWhiteSpaceInfo(WhiteSpaceInfo wsi)
          Recompose the strip-space and preserve-space declarations.
 void setTemplateListComposed(TemplateList templateList)
          Mutator method to set the TemplateList associated with this StylesheetRoot.
 boolean shouldCheckWhitespace()
          Check to see if the caller should bother with check for whitespace nodes.
 boolean shouldStripWhiteSpace(XPathContext support, int targetElement)
          Get information about whether or not an element should strip whitespace.
 
Methods inherited from class org.apache.xalan.templates.StylesheetComposed
getEndImportCountComposed, getImportComposed, getImportCountComposed, getIncludeComposed, getIncludeCountComposed, isAggregatedType, recompose, recomposeImports, recomposeIncludes, recomposeTemplates
 
Methods inherited from class org.apache.xalan.templates.Stylesheet
accept, callChildVisitors, containsExcludeResultPrefix, containsExtensionElementURI, getAttributeSet, getAttributeSetCount, getDecimalFormat, getDecimalFormat, getDecimalFormatCount, getExcludeResultPrefix, getExcludeResultPrefixCount, getExtensionElementPrefix, getExtensionElementPrefixCount, getHref, getId, getImport, getImportCount, getInclude, getIncludeCount, getKey, getKeyCount, getNamespaceAlias, getNamespaceAliasCount, getNodeName, getNodeType, getNonXslTopLevel, getOutput, getOutputCount, getParam, getPreserveSpace, getPreserveSpaceCount, getStripSpace, getStripSpaceCount, getStylesheet, getStylesheetComposed, getStylesheetParent, getStylesheetRoot, getTemplate, getTemplateCount, getVariable, getVariableOrParam, getVariableOrParam, getVariableOrParamCount, getVersion, getXmlnsXsl, getXSLToken, replaceTemplate, setAttributeSet, setDecimalFormat, setExcludeResultPrefixes, setExtensionElementPrefixes, setHref, setId, setImport, setInclude, setKey, setLocaterInfo, setNamespaceAlias, setNonXslTopLevel, setOutput, setParam, setPreserveSpaces, setStripSpaces, setStylesheetParent, setStylesheetRoot, setTemplate, setVariable, setVersion, setXmlnsXsl
 
Methods inherited from class org.apache.xalan.templates.ElemTemplateElement
addOrReplaceDecls, appendChild, appendChild, callChildVisitors, callVisitors, canAcceptVariables, compareTo, compose, endCompose, error, error, execute, executeNSDecls, executeNSDecls, exprAddChild, exprGetChild, exprGetNumChildren, exprGetParent, exprSetParent, getBaseIdentifier, getChildNodes, getColumnNumber, getDeclaredPrefixes, getDOMBackPointer, getFirstChild, getFirstChildElem, getLastChild, getLastChildElem, getLength, getLineNumber, getLocalName, getNamespaceForPrefix, getNamespaceForPrefix, getNextSibling, getNextSiblingElem, getOwnerDocument, getOwnerXSLTemplate, getParentElem, getParentNode, getParentNodeElem, getPrefixes, getPreviousSibling, getPreviousSiblingElem, getPublicId, getSystemId, getTagName, getUid, getXmlSpace, handlesNullPrefixes, hasChildNodes, hasTextLitOnly, hasVariableDecl, insertBefore, isCompiledTemplate, isValidNCName, item, needToCheckExclude, recompose, removeChild, replaceChild, replaceChild, resolvePrefixTables, runtimeInit, setDOMBackPointer, setParentElem, setPrefixes, setPrefixes, setUid, setXmlSpace, shouldStripWhiteSpace, unexecuteNSDecls, unexecuteNSDecls
 
Methods inherited from class org.apache.xml.utils.UnImplNode
adoptNode, appendData, cloneNode, createAttribute, createAttributeNS, createCDATASection, createComment, createDocumentFragment, createElement, createElementNS, createEntityReference, createProcessingInstruction, createTextNode, deleteData, getAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getAttributes, getDoctype, getDocumentElement, getElementById, getElementsByTagName, getElementsByTagNameNS, getEncoding, getImplementation, getNamespaceURI, getNodeValue, getOwnerElement, getPrefix, getSpecified, getStandalone, getStrictErrorChecking, hasAttribute, hasAttributeNS, hasAttributes, importNode, insertData, isSupported, normalize, removeAttribute, removeAttributeNode, removeAttributeNS, removeChild, replaceData, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS, setData, setEncoding, setNodeValue, setPrefix, setStandalone, setStrictErrorChecking, setValue, splitText, substringData
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_availElems

private Hashtable m_availElems
The schema used when creating this StylesheetRoot


m_extNsMgr

private ExtensionNamespacesManager m_extNsMgr

m_globalImportList

private StylesheetComposed[] m_globalImportList
The combined list of imports. The stylesheet with the highest import precedence will be at element 0. The one with the lowest import precedence will be at element length - 1.


m_outputProperties

private OutputProperties m_outputProperties
This will be set up with the default values, and then the values will be set as stylesheets are encountered.


m_outputMethodSet

private boolean m_outputMethodSet
Flag indicating whether an output method has been set by the user.


m_attrSets

private Hashtable m_attrSets
Composed set of all included and imported attribute set properties. Each entry is a vector of ElemAttributeSet objects.


m_decimalFormatSymbols

private Hashtable m_decimalFormatSymbols
Table of DecimalFormatSymbols, keyed by QName.


m_keyDecls

private Vector m_keyDecls
A list of all key declarations visible from this stylesheet and all lesser stylesheets.


m_namespaceAliasComposed

private Hashtable m_namespaceAliasComposed
Composed set of all namespace aliases.


m_templateList

private TemplateList m_templateList
The "xsl:template" properties.


m_variables

private Vector m_variables
Composed set of all variables and params.


m_whiteSpaceInfoList

private TemplateList m_whiteSpaceInfoList
A list of properties that specify how to do space stripping. This uses the same exact mechanism as Templates.


m_defaultTextRule

private ElemTemplate m_defaultTextRule
The default template to use for text nodes if we don't find anything else. This is initialized in initDefaultRule().


m_defaultRule

private ElemTemplate m_defaultRule
The default template to use if we don't find anything else. This is initialized in initDefaultRule().


m_defaultRootRule

private ElemTemplate m_defaultRootRule
The default template to use for the root if we don't find anything else. This is initialized in initDefaultRule(). We kind of need this because the defaultRule isn't good enough because it doesn't supply a document context. For now, I default the root document element to "HTML". Don't know if this is really a good idea or not. I suspect it is not.


m_startRule

private ElemTemplate m_startRule
The start rule to kick off the transformation.


m_selectDefault

XPath m_selectDefault
Used for default selection.


m_composeState

private StylesheetRoot.ComposeState m_composeState
Constructor Detail

StylesheetRoot

public StylesheetRoot(javax.xml.transform.ErrorListener errorListener)
               throws javax.xml.transform.TransformerConfigurationException
Uses an XSL stylesheet document.

Throws:
javax.xml.transform.TransformerConfigurationException - if the baseIdentifier can not be resolved to a URL.

StylesheetRoot

public StylesheetRoot(XSLTSchema schema,
                      javax.xml.transform.ErrorListener listener)
               throws javax.xml.transform.TransformerConfigurationException
Creates a StylesheetRoot and retains a pointer to the schema used to create this StylesheetRoot. The schema may be needed later for an element-available() function call.

Parameters:
schema - The schema used to create this stylesheet
Throws:
javax.xml.transform.TransformerConfigurationException - if the baseIdentifier can not be resolved to a URL.
Method Detail

isRoot

public boolean isRoot()
Tell if this is the root of the stylesheet tree.

Overrides:
isRoot in class Stylesheet
Returns:
True since this is the root of the stylesheet tree.

getAvailableElements

public Hashtable getAvailableElements()
Get the hashtable of available elements.

Returns:
table of available elements, keyed by qualified names, and with values of the same qualified names.

getExtensionNamespacesManager

public ExtensionNamespacesManager getExtensionNamespacesManager()
Only instantiate an ExtensionNamespacesManager if one is called for (i.e., if the stylesheet contains extension functions and/or elements).


getExtensions

public Vector getExtensions()
Get the vector of extension namespaces. Used to provide the extensions table access to a list of extension namespaces encountered during composition of a stylesheet.


newTransformer

public javax.xml.transform.Transformer newTransformer()
Create a new transformation context for this Templates object.

Specified by:
newTransformer in interface javax.xml.transform.Templates
Returns:
A Transformer instance, never null.

getDefaultOutputProps

public Properties getDefaultOutputProps()

getOutputProperties

public Properties getOutputProperties()
Get the static properties for xsl:output. The object returned will be a clone of the internal values, and thus it can be mutated without mutating the Templates object, and then handed in to the process method.

For XSLT, Attribute Value Templates attribute values will be returned unexpanded (since there is no context at this point).

Specified by:
getOutputProperties in interface javax.xml.transform.Templates
Returns:
A Properties object, not null.

recompose

public void recompose()
               throws javax.xml.transform.TransformerException
Recompose the values of all "composed" properties, meaning properties that need to be combined or calculated from the combination of imported and included stylesheets. This method determines the proper import precedence of all imported stylesheets. It then iterates through all of the elements and properties in the proper order and triggers the individual recompose methods.

Throws:
javax.xml.transform.TransformerException

composeTemplates

void composeTemplates(ElemTemplateElement templ)
                throws javax.xml.transform.TransformerException
Call the compose function for each ElemTemplateElement.

Parameters:
templ - non-null reference to template element that will have the composed method called on it, and will have it's children's composed methods called.
Throws:
javax.xml.transform.TransformerException

addImports

protected void addImports(Stylesheet stylesheet,
                          boolean addToList,
                          Vector importList)
Add the imports in the given sheet to the working importList vector. The will be added from highest import precedence to least import precedence. This is a post-order traversal of the import tree as described in the XSLT Recommendation.

For example, suppose

stylesheet A imports stylesheets B and C in that order;

stylesheet B imports stylesheet D;

stylesheet C imports stylesheet E.

Then the order of import precedence (highest first) is A, C, E, B, D.

Parameters:
stylesheet - Stylesheet to examine for imports.
addToList - true if this template should be added to the import list
importList - The working import list. Templates are added here in the reverse order of priority. When we're all done, we'll reverse this to the correct priority in an array.

getGlobalImport

public StylesheetComposed getGlobalImport(int i)
Get a stylesheet from the global import list. TODO: JKESS PROPOSES SPECIAL-CASE FOR NO IMPORT LIST, TO MATCH COUNT.

Parameters:
i - Index of stylesheet to get from global import list
Returns:
The stylesheet at the given index

getGlobalImportCount

public int getGlobalImportCount()
Get the total number of imports in the global import list.

Returns:
The total number of imported stylesheets, including the root stylesheet, thus the number will always be 1 or greater. TODO: JKESS PROPOSES SPECIAL-CASE FOR NO IMPORT LIST, TO MATCH DESCRIPTION.

getImportNumber

public int getImportNumber(StylesheetComposed sheet)
Given a stylesheet, return the number of the stylesheet in the global import list.

Parameters:
sheet - The stylesheet which will be located in the global import list.
Returns:
The index into the global import list of the given stylesheet, or -1 if it is not found (which should never happen).

recomposeOutput

void recomposeOutput(OutputProperties oprops)
               throws javax.xml.transform.TransformerException
Recompose the output format object from the included elements.

Parameters:
oprops - non-null reference to xsl:output properties representation.
Throws:
javax.xml.transform.TransformerException

getOutputComposed

public OutputProperties getOutputComposed()
Get the combined "xsl:output" property with the properties combined from the included stylesheets. If a xsl:output is not declared in this stylesheet or an included stylesheet, look in the imports. Please note that this returns a reference to the OutputProperties object, not a cloned object, like getOutputProperties does.

Returns:
non-null reference to composed output properties object.
See Also:
output in XSLT Specification

isOutputMethodSet

public boolean isOutputMethodSet()
Find out if an output method has been set by the user.

Returns:
Value indicating whether an output method has been set by the user

recomposeAttributeSets

void recomposeAttributeSets(ElemAttributeSet attrSet)
Recompose the attribute-set declarations.

Parameters:
attrSet - An attribute-set to add to the hashtable of attribute sets.

getAttributeSetComposed

public Vector getAttributeSetComposed(QName name)
                               throws ArrayIndexOutOfBoundsException
Get a list "xsl:attribute-set" properties that match the qname.

Parameters:
name - Qualified name of attribute set properties to get
Returns:
A vector of attribute sets matching the given name
Throws:
ArrayIndexOutOfBoundsException
See Also:
attribute-sets in XSLT Specification

recomposeDecimalFormats

void recomposeDecimalFormats(DecimalFormatProperties dfp)
Recompose the decimal-format declarations.

Parameters:
dfp - A DecimalFormatProperties to add to the hashtable of decimal formats.

getDecimalFormatComposed

public DecimalFormatSymbols getDecimalFormatComposed(QName name)
Given a valid element decimal-format name, return the decimalFormatSymbols with that name.

It is an error to declare either the default decimal-format or a decimal-format with a given name more than once (even with different import precedence), unless it is declared every time with the same value for all attributes (taking into account any default values).

Which means, as far as I can tell, the decimal-format properties are not additive.

Parameters:
name - Qualified name of the decimal format to find
Returns:
DecimalFormatSymbols object matching the given name or null if name is not found.

recomposeKeys

void recomposeKeys(KeyDeclaration keyDecl)
Recompose the key declarations.

Parameters:
keyDecl - A KeyDeclaration to be added to the vector of key declarations.

getKeysComposed

public Vector getKeysComposed()
Get the composed "xsl:key" properties.

Returns:
A vector of the composed "xsl:key" properties.
See Also:
key in XSLT Specification

recomposeNamespaceAliases

void recomposeNamespaceAliases(NamespaceAlias nsAlias)
Recompose the namespace-alias declarations.

Parameters:
nsAlias - A NamespaceAlias object to add to the hashtable of namespace aliases.

getNamespaceAliasComposed

public NamespaceAlias getNamespaceAliasComposed(String uri)
Get the "xsl:namespace-alias" property. Return the NamespaceAlias for a given namespace uri.

Parameters:
uri - non-null reference to namespace that is to be aliased.
Returns:
NamespaceAlias that matches uri, or null if no match.
See Also:
literal-result-element in XSLT Specification

recomposeTemplates

void recomposeTemplates(ElemTemplate template)
Recompose the template declarations.

Parameters:
template - An ElemTemplate object to add to the template list.

getTemplateListComposed

public final TemplateList getTemplateListComposed()
Accessor method to retrieve the TemplateList associated with this StylesheetRoot.

Returns:
The composed TemplateList.

setTemplateListComposed

public final void setTemplateListComposed(TemplateList templateList)
Mutator method to set the TemplateList associated with this StylesheetRoot. This method should only be used by the compiler. Normally, the template list is built during the recompose process and should not be altered by the user.

Parameters:
templateList - The new TemplateList for this StylesheetRoot.

getTemplateComposed

public ElemTemplate getTemplateComposed(XPathContext xctxt,
                                        int targetNode,
                                        QName mode,
                                        boolean quietConflictWarnings,
                                        DTM dtm)
                                 throws javax.xml.transform.TransformerException
Get an "xsl:template" property by node match. This looks in the imports as well as this stylesheet.

Parameters:
xctxt - non-null reference to XPath runtime execution context.
targetNode - non-null reference of node that the template must match.
mode - qualified name of the node, or null.
quietConflictWarnings - true if conflict warnings should not be reported.
Returns:
reference to ElemTemplate that is the best match for targetNode, or null if no match could be made.
Throws:
javax.xml.transform.TransformerException
See Also:
section-Defining-Template-Rules in XSLT Specification

getTemplateComposed

public ElemTemplate getTemplateComposed(XPathContext xctxt,
                                        int targetNode,
                                        QName mode,
                                        int maxImportLevel,
                                        int endImportLevel,
                                        boolean quietConflictWarnings,
                                        DTM dtm)
                                 throws javax.xml.transform.TransformerException
Get an "xsl:template" property by node match. This looks in the imports as well as this stylesheet.

Parameters:
xctxt - non-null reference to XPath runtime execution context.
targetNode - non-null reference of node that the template must match.
mode - qualified name of the node, or null.
maxImportLevel - The maximum importCountComposed that we should consider or -1 if we should consider all import levels. This is used by apply-imports to access templates that have been overridden.
endImportLevel - The count of composed imports
quietConflictWarnings - true if conflict warnings should not be reported.
Returns:
reference to ElemTemplate that is the best match for targetNode, or null if no match could be made.
Throws:
javax.xml.transform.TransformerException
See Also:
section-Defining-Template-Rules in XSLT Specification

getTemplateComposed

public ElemTemplate getTemplateComposed(QName qname)
Get an "xsl:template" property. This looks in the imports as well as this stylesheet.

Parameters:
qname - non-null reference to qualified name of template.
Returns:
reference to named template, or null if not found.
See Also:
section-Defining-Template-Rules in XSLT Specification

recomposeVariables

void recomposeVariables(ElemVariable elemVar)
Recompose the top level variable and parameter declarations.

Parameters:
elemVar - A top level variable or parameter to be added to the Vector.

getVariableOrParamComposed

public ElemVariable getVariableOrParamComposed(QName qname)
Get an "xsl:variable" property.

Parameters:
qname - Qualified name of variable or param
Returns:
The ElemVariable with the given qualified name
See Also:
top-level-variables in XSLT Specification

getVariablesAndParamsComposed

public Vector getVariablesAndParamsComposed()
Get all global "xsl:variable" properties in scope for this stylesheet.

Returns:
Vector of all variables and params in scope
See Also:
top-level-variables in XSLT Specification

recomposeWhiteSpaceInfo

void recomposeWhiteSpaceInfo(WhiteSpaceInfo wsi)
Recompose the strip-space and preserve-space declarations.

Parameters:
wsi - A WhiteSpaceInfo element to add to the list of WhiteSpaceInfo elements.

shouldCheckWhitespace

public boolean shouldCheckWhitespace()
Check to see if the caller should bother with check for whitespace nodes.

Returns:
Whether the caller should bother with check for whitespace nodes.

getWhiteSpaceInfo

public WhiteSpaceInfo getWhiteSpaceInfo(XPathContext support,
                                        int targetElement,
                                        DTM dtm)
                                 throws javax.xml.transform.TransformerException
Get information about whether or not an element should strip whitespace.

Parameters:
support - The XPath runtime state.
targetElement - Element to check
Returns:
WhiteSpaceInfo for the given element
Throws:
javax.xml.transform.TransformerException
See Also:
strip in XSLT Specification

shouldStripWhiteSpace

public boolean shouldStripWhiteSpace(XPathContext support,
                                     int targetElement)
                              throws javax.xml.transform.TransformerException
Get information about whether or not an element should strip whitespace.

Parameters:
support - The XPath runtime state.
targetElement - Element to check
Returns:
true if the whitespace should be stripped.
Throws:
javax.xml.transform.TransformerException
See Also:
strip in XSLT Specification

canStripWhiteSpace

public boolean canStripWhiteSpace()
Get information about whether or not whitespace can be stripped.

Specified by:
canStripWhiteSpace in interface WhitespaceStrippingElementMatcher
Overrides:
canStripWhiteSpace in class ElemTemplateElement
Returns:
true if the whitespace can be stripped.
See Also:
strip in XSLT Specification

getDefaultTextRule

public final ElemTemplate getDefaultTextRule()
Get the default template for text.

Returns:
the default template for text.

getDefaultRule

public final ElemTemplate getDefaultRule()
Get the default template for elements.

Returns:
the default template for elements.

getDefaultRootRule

public final ElemTemplate getDefaultRootRule()
Get the default template for a root node.

Returns:
The default template for a root node.

getStartRule

public final ElemTemplate getStartRule()
Get the default template for a root node.

Returns:
The default template for a root node.

initDefaultRule

private void initDefaultRule(javax.xml.transform.ErrorListener errorListener)
                      throws javax.xml.transform.TransformerException
Create the default rule if needed.

Throws:
javax.xml.transform.TransformerException

QuickSort2

private void QuickSort2(Vector v,
                        int lo0,
                        int hi0)
This is a generic version of C.A.R Hoare's Quick Sort algorithm. This will handle arrays that are already sorted, and arrays with duplicate keys. It was lifted from the NodeSorter class but should probably be eliminated and replaced with a call to Collections.sort when we migrate to Java2.
If you think of a one dimensional array as going from the lowest index on the left to the highest index on the right then the parameters to this function are lowest index or left and highest index or right. The first time you call this function it will be with the parameters 0, a.length - 1.

Parameters:
v - a vector of ElemTemplateElement elements
lo0 - left boundary of partition
hi0 - right boundary of partition

initComposeState

void initComposeState()
Initialize a new ComposeState.


getComposeState

StylesheetRoot.ComposeState getComposeState()
Return class to track state global state during the compose() operation.

Returns:
ComposeState reference, or null if endCompose has been called.

clearComposeState

private void clearComposeState()
Clear the compose state.