## com.icl.saxon.style
Class XSLTemplate

    java.lang.Object
      com.icl.saxon.om.AbstractNode
          com.icl.saxon.tree.NodeImpl
              com.icl.saxon.tree.ParentNodeImpl
                  com.icl.saxon.tree.ElementImpl
                      com.icl.saxon.tree.ElementWithAttributes
                          com.icl.saxon.style.StyleElement
                              com.icl.saxon.style.XSLTemplate

All Implemented Interfaces:
  DOMLocator, org.w3c.dom.Element, org.xml.sax.Locator, org.w3c.dom.NamedNodeMap, org.w3c.dom.Node, NodeHandler, NodeInfo, Source, SourceLocator

Direct Known Subclasses:
  SAXONHandler

public class XSLTemplate
extends StyleElement
implements NodeHandler

An xsl:template element in the style sheet.

Field Summary
`protected Pattern` `match`
`protected int` `modeNameCode`
`protected boolean` `needsStackFrame`
`protected double` `priority`
`protected boolean` `prioritySpecified`
`protected Procedure` `procedure`
`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, 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
`XSLTemplate()`

Method Summary
`Binding` `bindVariable(int fingerprint)` Disallow variable references in the match pattern
`protected void` `expand(Context context)` Expand the template.
`int` `getMinImportPrecedence()`
`Procedure` `getProcedure()` Get associated Procedure (for details of stack frame)
`int` `getTemplateFingerprint()` Return the fingerprint for the name of this template
`boolean` `mayContainTemplateBody()` Determine whether this type of element is allowed to contain a template-body
`boolean` `needsStackFrame()` Optimization hint to allow a handler to declare that it needs no stack space for local variables and parameters
`void` `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 variables
`void` `process(Context context)` Process template.
`void` `start(NodeInfo e, Context context)` Process a node in the source document.
`protected void` `traceExpand(Context context)` Expand the template, with tracing.
`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
`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`

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

Constructor Detail

### XSLTemplate

    public XSLTemplate()

Method Detail

### mayContainTemplateBody

    public boolean mayContainTemplateBody()

  Determine whether this type of element is allowed to contain a template-body

  Overrides:
    `mayContainTemplateBody` in class `StyleElement`
  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 interface `NodeHandler`

### 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 class `StyleElement`
  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 class `StyleElement`
  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 class `StyleElement`
  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 class `StyleElement`
  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 interface `NodeHandler`
  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 class `StyleElement`
  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)