org.apache.xalan.templates
Class StylesheetComposed

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

public class StylesheetComposed
extends Stylesheet

Represents a stylesheet that has methods that resolve includes and imports. It has methods on it that return "composed" properties, which mean that:

  1. Properties that are aggregates, like OutputProperties, will be composed of properties declared in this stylsheet and all included stylesheets.
  2. Properties that aren't found, will be searched for first in the includes, and, if none are located, will be searched for in the imports.
  3. Properties in that are not atomic on a stylesheet will have the form getXXXComposed. Some properties, like version and id, are not inherited, and so won't have getXXXComposed methods.

In some cases getXXXComposed methods may calculate the composed values dynamically, while in other cases they may store the composed values.

See Also:
Serialized Form

Field Summary
private  int m_endImportCountComposed
           
private  int m_importCountComposed
          The precedence of this stylesheet in the global import list.
private  int m_importNumber
          Order in import chain.
private  java.util.Vector m_includesComposed
          The combined list of includes.
(package private) static long serialVersionUID
           
 
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
 
Fields inherited from class org.apache.xml.utils.UnImplNode
actualEncoding, fDocumentURI
 
Fields inherited from interface org.w3c.dom.Node
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
 
Fields inherited from interface org.w3c.dom.Node
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
 
Fields inherited from interface org.w3c.dom.Node
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
 
Constructor Summary
StylesheetComposed(Stylesheet parent)
          Uses an XSL stylesheet document.
 
Method Summary
 int getEndImportCountComposed()
          Get the number of import in this stylesheet's composed list.
 StylesheetComposed getImportComposed(int i)
          Get a stylesheet from the "import" list.
 int getImportCountComposed()
          Get the precedence of this stylesheet in the global import list.
 Stylesheet getIncludeComposed(int i)
          Get an "xsl:include" property.
 int getIncludeCountComposed()
          Get the number of included stylesheets.
 boolean isAggregatedType()
          Tell if this can be cast to a StylesheetComposed, meaning, you can ask questions from getXXXComposed functions.
 void recompose(java.util.Vector recomposableElements)
          Adds all recomposable values for this precedence level into the recomposableElements Vector that was passed in as the first parameter.
(package private)  void recomposeImports()
          Recalculate the precedence of this stylesheet in the global import list.
(package private)  void recomposeIncludes(Stylesheet including)
          Recompose the value of the composed include list.
 void recomposeTemplates(boolean flushFirst)
          For compilation support, we need the option of overwriting (rather than appending to) previous composition.
 
Methods inherited from class org.apache.xalan.templates.Stylesheet
accept, callChildVisitors, containsExcludeResultPrefix, containsExtensionElementURI, getAttributeSet, getAttributeSetCount, getCompatibleMode, 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, isRoot, 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, canStripWhiteSpace, compareTo, compose, endCompose, error, error, execute, executeNSDecls, executeNSDecls, exprAddChild, exprGetChild, exprGetNumChildren, exprGetParent, exprSetParent, getBaseIdentifier, getChildNodes, getColumnNumber, getDeclaredPrefixes, getDOMBackPointer, getEndColumnNumber, getEndLineNumber, getFirstChild, getFirstChildElem, getLastChild, getLastChildElem, getLength, getLineNumber, getLocalName, getNamespaceForPrefix, getNamespaceForPrefix, getNextSibling, getNextSiblingElem, getOwnerDocument, getOwnerXSLTemplate, getParentElem, getParentNode, getParentNodeElem, getPrefixTable, getPreviousSibling, getPreviousSiblingElem, getPublicId, getSystemId, getTagName, getUid, getXmlSpace, handlesNullPrefixes, hasChildNodes, hasTextLitOnly, hasVariableDecl, insertBefore, isCompiledTemplate, item, needToCheckExclude, recompose, removeChild, replaceChild, replaceChild, resolvePrefixTables, runtimeInit, setDOMBackPointer, setEndLocaterInfo, setParentElem, setPrefixes, setPrefixes, setPrefixTable, setUid, setXmlSpace, shouldStripWhiteSpace, unexecuteNSDecls, unexecuteNSDecls
 
Methods inherited from class org.apache.xml.utils.UnImplNode
adoptNode, appendData, cloneNode, compareDocumentPosition, createAttribute, createAttributeNS, createCDATASection, createComment, createDocumentFragment, createElement, createElementNS, createEntityReference, createProcessingInstruction, createTextNode, deleteData, getActualEncoding, getAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getAttributes, getBaseURI, getDoctype, getDocumentElement, getDocumentURI, getDomConfig, getElementById, getElementsByTagName, getElementsByTagNameNS, getFeature, getImplementation, getInputEncoding, getNamespaceURI, getNodeValue, getOwnerElement, getPrefix, getSchemaTypeInfo, getSpecified, getStrictErrorChecking, getTextContent, getUserData, getWholeText, getXmlEncoding, getXmlStandalone, getXmlVersion, hasAttribute, hasAttributeNS, hasAttributes, importNode, insertData, isDefaultNamespace, isEqualNode, isId, isSameNode, isSupported, isWhitespaceInElementContent, lookupNamespaceURI, lookupPrefix, normalize, normalizeDocument, removeAttribute, removeAttributeNode, removeAttributeNS, removeChild, renameNode, replaceData, replaceWholeText, setActualEncoding, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS, setData, setDocumentURI, setIdAttribute, setIdAttribute, setIdAttributeNode, setIdAttributeNS, setInputEncoding, setNodeValue, setPrefix, setStrictErrorChecking, setTextContent, setUserData, setValue, setXmlEncoding, setXmlStandalone, setXmlVersion, splitText, substringData
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

serialVersionUID

static final long serialVersionUID
See Also:
Constant Field Values

m_importNumber

private int m_importNumber
Order in import chain.


m_importCountComposed

private int m_importCountComposed
The precedence of this stylesheet in the global import list. The lowest precedence stylesheet is 0. A higher number has a higher precedence.


m_endImportCountComposed

private int m_endImportCountComposed

m_includesComposed

private transient java.util.Vector m_includesComposed
The combined list of includes.

Constructor Detail

StylesheetComposed

public StylesheetComposed(Stylesheet parent)
Uses an XSL stylesheet document.

Parameters:
parent - The including or importing stylesheet.
Method Detail

isAggregatedType

public boolean isAggregatedType()
Tell if this can be cast to a StylesheetComposed, meaning, you can ask questions from getXXXComposed functions.

Overrides:
isAggregatedType in class Stylesheet
Returns:
True since this is a StylesheetComposed

recompose

public void recompose(java.util.Vector recomposableElements)
               throws javax.xml.transform.TransformerException
Adds all recomposable values for this precedence level into the recomposableElements Vector that was passed in as the first parameter. All elements added to the recomposableElements vector should extend ElemTemplateElement.

Parameters:
recomposableElements - a Vector of ElemTemplateElement objects that we will add all of our recomposable objects to.
Throws:
javax.xml.transform.TransformerException

recomposeImports

void recomposeImports()
Recalculate the precedence of this stylesheet in the global import list. The lowest precedence stylesheet is 0. A higher number has a higher precedence.


getImportComposed

public StylesheetComposed getImportComposed(int i)
                                     throws java.lang.ArrayIndexOutOfBoundsException
Get a stylesheet from the "import" list.

Parameters:
i - Index of stylesheet in import list
Returns:
The stylesheet at the given index
Throws:
java.lang.ArrayIndexOutOfBoundsException
See Also:
import in XSLT Specification

getImportCountComposed

public int getImportCountComposed()
Get the precedence of this stylesheet in the global import list. The lowest precedence is 0. A higher number has a higher precedence.

Returns:
the precedence of this stylesheet in the global import list.
See Also:
import in XSLT Specification

getEndImportCountComposed

public int getEndImportCountComposed()
Get the number of import in this stylesheet's composed list.

Returns:
the number of imports in this stylesheet's composed list.

recomposeIncludes

void recomposeIncludes(Stylesheet including)
Recompose the value of the composed include list. Builds a composite list of all stylesheets included by this stylesheet to any depth.

Parameters:
including - Stylesheet to recompose

getIncludeComposed

public Stylesheet getIncludeComposed(int i)
                              throws java.lang.ArrayIndexOutOfBoundsException
Get an "xsl:include" property.

Parameters:
i - Index of stylesheet in "include" list
Returns:
The stylesheet at the given index in the "include" list
Throws:
java.lang.ArrayIndexOutOfBoundsException
See Also:
include in XSLT Specification

getIncludeCountComposed

public int getIncludeCountComposed()
Get the number of included stylesheets.

Returns:
the number of included stylesheets.
See Also:
import in XSLT Specification

recomposeTemplates

public void recomposeTemplates(boolean flushFirst)
                        throws javax.xml.transform.TransformerException
For compilation support, we need the option of overwriting (rather than appending to) previous composition. We could phase out the old API in favor of this one, but I'm holding off until we've made up our minds about compilation. ADDED 9/5/2000 to support compilation experiment. NOTE: GLP 29-Nov-00 I've left this method in so that CompilingStylesheetHandler will compile. However, I'm not sure why it's needed or what it does and I've commented out the body.

Parameters:
flushFirst - Flag indicating the option of overwriting (rather than appending to) previous composition.
Throws:
javax.xml.transform.TransformerException
See Also:
section-Defining-Template-Rules in XSLT Specification