Package com.icl.saxon.style
Class XSLStyleSheet
-
- All Implemented Interfaces:
NodeInfo
,DOMLocator
,Source
,SourceLocator
,Element
,NamedNodeMap
,Node
,Locator
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 Modifier and Type Field Description protected int
sequence
-
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
-
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_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
Constructors Constructor Description XSLStyleSheet()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addChild(NodeImpl node, int index)
Add a child node to this node.void
allocateLocalSlots(int n)
Ensure there is enuogh space for local variables or parameters in any templateint
allocateSlotNumber()
Allocate a slot number for a global variable or parametervoid
compact(int size)
Compact the space used by this nodevoid
copyStringValue(Outputter out)
Copy the string-value of this node to a given outputtervoid
dropChildren()
Drop a branch of the tree.AxisEnumeration
enumerateChildren(NodeTest test)
Get an enumeration of the children of this nodevoid
gatherOutputProperties(Properties details)
Update an output properties object using the xsl:output elements in the stylesheet.NodeList
getChildNodes()
Return aNodeList
that contains all children of this node.DecimalFormatManager
getDecimalFormatManager()
Get the DecimalFormatManager which handles decimal-format definitionsClass
getExternalJavaClass(String uri)
Get a Java class for a given namespace URI, if possible.Node
getFirstChild()
Get the first child node of the elementXSLStyleSheet
getImporter()
Get the StyleSheet that included or imported this one.KeyManager
getKeyManager()
Get the KeyManager which handles key definitionsNode
getLastChild()
Get the last child node of the elementint
getMinImportPrecedence()
Get the minimum import precedence of this stylesheet, that is, the lowest precedence of any stylesheet imported by this oneprotected short
getNamespaceAlias(short uriCode)
Get the declared namespace alias for a given namespace URI code if there is one.String
getNodeValue()
Get the node value as defined in the DOM.protected NodeImpl
getNthChild(int n)
Get the nth child node of the element (numbering from 0)int
getPrecedence()
Get the import precedence of this stylesheetPreparedStyleSheet
getPreparedStyleSheet()
Get the owning PreparedStyleSheet objectPreviewManager
getPreviewManager()
Get the PreviewManager which handles saxon:preview element definitionsRuleManager
getRuleManager()
Get the RuleManager which handles template rulesprotected long
getSequenceNumber()
Get the node sequence number (in document order).String
getStringValue()
Return the string-value of the node, that is, the concatenation of the character content of all descendent elements and text nodes.protected Mode
getStripperRules()
Get the rules determining which nodes are to be stripped from the treeVector
getTopLevel()
Get the top level elements in this stylesheet, after applying include/importboolean
hasChildNodes()
Determine if the node has any children.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 modeStripper
newStripper()
Create a Stripper which handles whitespace stripping definitionsvoid
prepareAttributes()
Prepare the attributes on the stylesheet elementvoid
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 stylesheetprotected void
processVersionAttribute(int nc)
Process the version attribute - mandatory on this element (but checked elsewhere)void
removeChild(int index)
Remove node at given index.void
renumberChildren()
Renumber the children of a given parent node.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 onevoid
setPrecedence(int prec)
Set the import precedence of this stylesheetvoid
setPreparedStyleSheet(PreparedStyleSheet sheet)
Create link to the owning PreparedStyleSheet objectvoid
setPreviewManager(PreviewManager pm)
Set the preview managervoid
setWasIncluded()
Indicate that this stylesheet was included (by its "importer") using an xsl:include statement as distinct from xsl:importvoid
spliceIncludes()
Process xsl:include and xsl:import elements.boolean
stripsWhitespace()
Determine whether this stylesheet does any whitespace strippingvoid
updateOutputProperties(Properties details, Context context)
Update an output properties object using the xsl:output elements in the stylesheet.void
useChildrenArray(NodeImpl[] array)
Supply an array to be used for the array of children.void
validate()
Validate this elementboolean
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
copy, generateId, getBaseURI, getDocumentRoot, getLineNumber, getNameCode, getNodeType, getSystemId, makeNameCode, setLineNumber, setNameCode, setSystemId
-
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.w3c.dom.Element
getElementsByTagName, getElementsByTagNameNS, getSchemaTypeInfo, getTagName, setIdAttribute, setIdAttributeNode, setIdAttributeNS
-
Methods inherited from interface org.xml.sax.Locator
getColumnNumber, getLineNumber, getPublicId, getSystemId
-
Methods inherited from interface org.w3c.dom.Node
appendChild, cloneNode, compareDocumentPosition, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setNodeValue, setPrefix, setTextContent, setUserData
-
-
-
-
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 classStyleElement
- 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 classStyleElement
-
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 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 classStyleElement
- Throws:
TransformerConfigurationException
-
processVersionAttribute
protected void processVersionAttribute(int nc)
Process the version attribute - mandatory on this element (but checked elsewhere)- Overrides:
processVersionAttribute
in classStyleElement
- 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 classStyleElement
- 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 classStyleElement
- Throws:
TransformerConfigurationException
-
spliceIncludes
public void spliceIncludes() throws TransformerConfigurationException
Process xsl:include and xsl:import elements.
-
hasNamespaceAliases
protected boolean hasNamespaceAliases()
-
processAllAttributes
public void processAllAttributes() throws TransformerConfigurationException
Process the attributes of every node in the stylesheet- Overrides:
processAllAttributes
in classStyleElement
- 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(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(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 Class getExternalJavaClass(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 classStyleElement
- Parameters:
context
- The context in the source XML document, giving access to the current node, the current variables, etc.- Throws:
TransformerException
-
getSequenceNumber
protected final long getSequenceNumber()
Get the node sequence number (in document order). Sequence numbers are monotonic but not consecutive. In the current implementation, parent nodes (elements and roots) have a zero least-significant word, while namespaces, attributes, text nodes, comments, and PIs have the top word the same as their owner and the bottom half reflecting their relative position.- Overrides:
getSequenceNumber
in classNodeImpl
-
hasChildNodes
public final boolean hasChildNodes()
Determine if the node has any children.- Specified by:
hasChildNodes
in interfaceNode
- Specified by:
hasChildNodes
in interfaceNodeInfo
- Overrides:
hasChildNodes
in classNodeImpl
- Returns:
true
if the node has any children,false
if the node has no children.
-
enumerateChildren
public final AxisEnumeration enumerateChildren(NodeTest test)
Get an enumeration of the children of this node
-
getFirstChild
public final Node getFirstChild()
Get the first child node of the element- Specified by:
getFirstChild
in interfaceNode
- Overrides:
getFirstChild
in classNodeImpl
- Returns:
- the first child node of the required type, or null if there are no children
-
getLastChild
public final Node getLastChild()
Get the last child node of the element- Specified by:
getLastChild
in interfaceNode
- Overrides:
getLastChild
in classNodeImpl
- Returns:
- the last child of the element, or null if there are no children
-
getChildNodes
public final NodeList getChildNodes()
Return aNodeList
that contains all children of this node. If there are no children, this is aNodeList
containing no nodes.- Specified by:
getChildNodes
in interfaceNode
- Overrides:
getChildNodes
in classNodeImpl
-
getNthChild
protected final NodeImpl getNthChild(int n)
Get the nth child node of the element (numbering from 0)- Returns:
- the last child of the element, or null if there is no n'th child
-
getStringValue
public String getStringValue()
Return the string-value of the node, that is, the concatenation of the character content of all descendent elements and text nodes.- Returns:
- the accumulated character content of the element, including descendant elements.
-
copyStringValue
public void copyStringValue(Outputter out) throws TransformerException
Copy the string-value of this node to a given outputter- Specified by:
copyStringValue
in interfaceNodeInfo
- Overrides:
copyStringValue
in classAbstractNode
- Throws:
TransformerException
-
useChildrenArray
public void useChildrenArray(NodeImpl[] array)
Supply an array to be used for the array of children. For system use only.
-
addChild
public void addChild(NodeImpl node, int index)
Add a child node to this node. For system use only. Note: normalizing adjacent text nodes is the responsibility of the caller.
-
removeChild
public void removeChild(int index)
Remove node at given index. Will always be followed by a renumberChildren().
-
renumberChildren
public void renumberChildren()
Renumber the children of a given parent node. For system use only
-
dropChildren
public void dropChildren()
Drop a branch of the tree. The target element remains in the tree, but its children are disconnected from the parent. Unless there are other references to the children (e.g. in a variable) they will be deleted from memory next time the garbage collector comes round.
-
compact
public void compact(int size)
Compact the space used by this node
-
getNodeValue
public String getNodeValue()
Get the node value as defined in the DOM. This is not the same as the XPath string-value.- Specified by:
getNodeValue
in interfaceNode
- Overrides:
getNodeValue
in classAbstractNode
-
-