Package com.icl.saxon.style
Class XSLTemplate
-
- All Implemented Interfaces:
NodeHandler
,NodeInfo
,DOMLocator
,Source
,SourceLocator
,Element
,NamedNodeMap
,Node
,Locator
- Direct Known Subclasses:
SAXONHandler
public class XSLTemplate extends StyleElement implements NodeHandler
An xsl:template element in the style sheet.
-
-
Field Summary
Fields Modifier and Type Field Description protected Pattern
match
protected int
modeNameCode
protected boolean
needsStackFrame
protected double
priority
protected boolean
prioritySpecified
protected Procedure
procedure
protected int
sequence
protected int
templateFingerprint
-
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 XSLTemplate()
-
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.Binding
bindVariable(int fingerprint)
Disallow variable references in the match patternvoid
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 nodeprotected void
expand(Context context)
Expand the template.NodeList
getChildNodes()
Return aNodeList
that contains all children of this node.Node
getFirstChild()
Get the first child node of the elementNode
getLastChild()
Get the last child node of the elementint
getMinImportPrecedence()
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)Procedure
getProcedure()
Get associated Procedure (for details of stack frame)protected 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.int
getTemplateFingerprint()
Return the fingerprint for the name of this templateboolean
hasChildNodes()
Determine if the node has any children.boolean
mayContainTemplateBody()
Determine whether this type of element is allowed to contain a template-bodyboolean
needsStackFrame()
Optimization hint to allow a handler to declare that it needs no stack space for local variables and parametersvoid
prepareAttributes()
Set the attribute list for the element.void
preprocess()
Preprocess: this registers the template with the rule manager, and ensures space is available for local variablesvoid
process(Context context)
Process template.void
removeChild(int index)
Remove node at given index.void
renumberChildren()
Renumber the children of a given parent node.void
start(NodeInfo e, Context context)
Process a node in the source document.protected void
traceExpand(Context context)
Expand the template, with tracing.void
useChildrenArray(NodeImpl[] array)
Supply an array to be used for the array of children.void
validate()
Check that the element is valid.-
Methods inherited from class com.icl.saxon.style.StyleElement
checkEmpty, checkNotTopLevel, checkTopLevel, checkUnknownAttribute, checkWithinTemplate, compileError, compileError, definesExcludedNamespace, definesExtensionElement, doesPostProcessing, fallbackProcessing, findAttributeSets, forwardsCompatibleModeIsEnabled, getContainingStyleSheet, getPrecedence, getPreparedStyleSheet, getPrincipalStyleSheet, getStandardNames, getStyleSheetFunction, getVariableBinding, getVariableNames, getVersion, handleSortKeys, isExcludedNamespace, isExtensionNamespace, isInstruction, isTopLevel, makeAttributeValueTemplate, makeExpression, makePattern, processAllAttributes, processAttributes, processAttributeSets, processChildren, processExcludedNamespaces, processExtensionElementAttribute, processVersionAttribute, 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
-
-
-
-
Field Detail
-
modeNameCode
protected int modeNameCode
-
templateFingerprint
protected int templateFingerprint
-
match
protected Pattern match
-
prioritySpecified
protected boolean prioritySpecified
-
priority
protected double priority
-
procedure
protected Procedure procedure
-
needsStackFrame
protected boolean needsStackFrame
-
sequence
protected int sequence
-
-
Method Detail
-
mayContainTemplateBody
public boolean mayContainTemplateBody()
Determine whether this type of element is allowed to contain a template-body- Overrides:
mayContainTemplateBody
in classStyleElement
- Returns:
- true: yes, it may contain a template-body
-
getTemplateFingerprint
public int getTemplateFingerprint()
Return the fingerprint for the name of this template
-
getMinImportPrecedence
public int getMinImportPrecedence()
-
needsStackFrame
public boolean needsStackFrame()
Description copied from interface:NodeHandler
Optimization hint to allow a handler to declare that it needs no stack space for local variables and parameters- Specified by:
needsStackFrame
in interfaceNodeHandler
-
prepareAttributes
public void prepareAttributes() throws TransformerConfigurationException
Description copied from class:StyleElement
Set the attribute list for the element. This is called to process the attributes (note the distinction from processAttributes in the superclass). Must be supplied in a subclass- Specified by:
prepareAttributes
in classStyleElement
- Throws:
TransformerConfigurationException
-
validate
public void validate() throws TransformerConfigurationException
Description copied from class:StyleElement
Check that the element is valid. This is called once for each element, after the entire tree has been built. As well as validation, it can perform first-time initialisation. The default implementation does nothing; it is normally overriden in subclasses.- Overrides:
validate
in classStyleElement
- Throws:
TransformerConfigurationException
-
preprocess
public void preprocess() throws TransformerConfigurationException
Preprocess: this registers the template with the rule manager, and ensures space is available for local variables- Overrides:
preprocess
in classStyleElement
- Throws:
TransformerConfigurationException
-
process
public void process(Context context) throws TransformerException
Process template. This is called while all the top-level nodes are being processed in order, so it does nothing.- 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
-
start
public void start(NodeInfo e, Context context) throws TransformerException
Process a node in the source document. This is called when the template is invoked using xsl:apply-templates.- Specified by:
start
in interfaceNodeHandler
- Parameters:
e
- The NodeInfo object for the current node.- Throws:
TransformerException
- See Also:
NodeInfo
-
traceExpand
protected void traceExpand(Context context) throws TransformerException
Expand the template, with tracing. Called when the template is invoked either by xsl:apply-templates or from xsl:call-template- Throws:
TransformerException
-
expand
protected void expand(Context context) throws TransformerException
Expand the template. Called when the template is invoked either by xsl:apply-templates or from xsl:call-template- Throws:
TransformerException
-
bindVariable
public Binding bindVariable(int fingerprint) throws XPathException
Disallow variable references in the match pattern- Overrides:
bindVariable
in classStyleElement
- Parameters:
fingerprint
- The fingerprint of the name of the variable- Returns:
- a Binding for the variable
- Throws:
XPathException
- if the variable has not been declared
-
getProcedure
public Procedure getProcedure()
Get associated Procedure (for details of stack frame)
-
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
-
-