## net.sf.saxon.style
Class XSLTemplate

    java.lang.Object
      |
      +--net.sf.saxon.om.AbstractNode
            |
            +--net.sf.saxon.tree.NodeImpl
                  |
                  +--net.sf.saxon.tree.ParentNodeImpl
                        |
                        +--net.sf.saxon.tree.ElementImpl
                              |
                              +--net.sf.saxon.tree.ElementWithAttributes
                                    |
                                    +--net.sf.saxon.style.StyleElement
                                          |
                                          +--net.sf.saxon.style.XSLTemplate

All Implemented Interfaces:
  Container, javax.xml.transform.dom.DOMLocator, org.w3c.dom.Element, FingerprintedNode, InstructionInfo, Item, LocationProvider, org.xml.sax.Locator, org.w3c.dom.NamedNodeMap, org.w3c.dom.Node, NodeInfo, SaxonLocator, javax.xml.transform.Source, javax.xml.transform.SourceLocator, StylesheetProcedure

public final class XSLTemplate
extends StyleElement
implements StylesheetProcedure

An xsl:template element in the style sheet.

Field Summary

Fields inherited from class net.sf.saxon.style.StyleElement
`defaultXPathNamespace, extensionNamespaces, REPORT_ALWAYS, REPORT_IF_INSTANTIATED, REPORT_UNLESS_FORWARDS_COMPATIBLE, reportingCircumstances, staticContext, validationError, version`

Fields inherited from class net.sf.saxon.tree.ElementWithAttributes
`attributeList, namespaceList`

Fields inherited from class net.sf.saxon.tree.ElementImpl
`nameCode, root, sequence`

Fields inherited from class net.sf.saxon.tree.NodeImpl
`index, parent`

Fields inherited from class net.sf.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 net.sf.saxon.om.NodeInfo
`ALL_NAMESPACES, LOCAL_NAMESPACES, NO_NAMESPACES`

Constructor Summary
`XSLTemplate()`

Method Summary
`void` `allocateSlots(Expression exp)` Allocate space for range variables within predicates in the match pattern.
`Expression` `compile(Executable exec)` Compile: this registers the template with the rule manager, and ensures space is available for local variables
`Template` `getCompiledTemplate()` Get the compiled template
`int` `getConstructType()` Get the type of construct.
`protected ItemType` `getReturnedItemType()` Determine the type of item returned by this template
`SlotManager` `getSlotManager()` Get associated Procedure (for details of stack frame)
`int` `getTemplateFingerprint()` Return the fingerprint for the name of this template.
`void` `markTailCalls()` Mark tail-recursive calls on templates and functions.
`boolean` `mayContainSequenceConstructor()` Determine whether this type of element is allowed to contain a template-body
`void` `prepareAttributes()` Set the attribute list for the element.
`void` `validate()` Check that the stylesheet element is valid.

Methods inherited from class net.sf.saxon.style.StyleElement

`allocateLocationId, backwardsCompatibleModeIsEnabled, bindVariable, checkEmpty, checkSortComesFirst, checkTopLevel, checkUnknownAttribute, checkWithinTemplate, compileChildren, compileError, compileError, compileError, compileWarning, definesExcludedNamespace, definesExtensionElement, fallbackProcessing, fixupReferences, forwardsCompatibleModeIsEnabled, getAttributeSets, getAttributeValue, getCommonChildItemType, getConfiguration, getContainingSlotManager, getContainingStylesheet, getDefaultXPathNamespace, getExecutable, getInstructionFingerprint, getLastChildInstruction, getLineNumber, getLineNumber, getNamespaceResolver, getObjectFingerprint, getObjectNameCode, getPrecedence, getPreparedStylesheet, getPrincipalStylesheet, getProperties, getProperty, getSchemaType, getStaticContext, getStylesheetFunction, getSystemId, getTargetNamePool, getTypeAnnotation, getURIForPrefix, getVariableBinding, getVersion, getWithParamInstructions, isExcludedNamespace, isExtensionNamespace, isInstruction, issueWarning, issueWarning, isTopLevel, makeAttributeValueTemplate, makeExpression, makeNameCode, makeNamespaceContext, makePattern, makeSequenceType, makeSortKeys, makeTraceInstruction, mayContainFallback, postValidate, processAllAttributes, processAttributes, processDefaultXPathNamespaceAttribute, processExcludedNamespaces, processExtensionElementAttribute, processVersionAttribute, reportAbsence, setLineNumber, setObjectNameCode, setValidationError, substituteFor, typeCheck, typeCheck, validateChildren, validateSubtree`

Methods inherited from class net.sf.saxon.tree.ElementWithAttributes

`addNamespaceNodes, copy, getAttribute, getAttributeList, getAttributeNode, getAttributeNodeNS, getAttributeNS, getAttributes, 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 net.sf.saxon.tree.ElementImpl
`addChild, compact, enumerateChildren, generateId, getBaseURI, getDocumentRoot, getFirstChild, getLastChild, getNameCode, getNodeKind, getNodeValue, getNthChild, getRoot, getSequenceNumber, getStringValue, getSystemId, hasChildNodes, setNameCode, setSystemId, useChildrenArray`

Methods inherited from class net.sf.saxon.tree.NodeImpl
`compareOrder, copy, getDisplayName, getDocumentElement, getFingerprint, getLocalPart, getNamePool, getNextInDocument, getNextSibling, getOriginatingNode, getParent, getPrefix, getPreviousInDocument, getPreviousSibling, getURI, isSameNodeInfo, iterateAxis, iterateAxis`

Methods inherited from class net.sf.saxon.om.AbstractNode

`appendChild, appendData, cloneNode, compareDocumentPosition, createAttribute, createAttributeNS, createCDATASection, createComment, createDocumentFragment, createElement, createElementNS, createEntityReference, createProcessingInstruction, createTextNode, deleteData, disallowUpdate, getChildNodes, getColumnNumber, getData, getDoctype, getDocumentNumber, getElementById, getElementsByTagName, getElementsByTagNameNS, getFeature, getImplementation, getLocalName, getName, getNamespaceURI, getNodeName, getNodeType, getOwnerDocument, getOwnerElement, getParentNode, getPublicId, getSchemaTypeInfo, getSpecified, getTagName, getTextContent, getTypeAnnotation, getTypedValue, getUserData, getValue, importNode, insertBefore, insertData, isDefaultNamespace, isEqualNode, isId, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, replaceData, setData, setIdAttribute, setIdAttributeNode, setIdAttributeNS, setNodeValue, setPrefix, setTextContent, 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, getPublicId, getSystemId`

Methods inherited from interface javax.xml.transform.SourceLocator
`getColumnNumber, getPublicId, getSystemId`

Methods inherited from interface net.sf.saxon.trace.InstructionInfo
`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`

Constructor Detail

### XSLTemplate

    public XSLTemplate()

Method Detail

### mayContainSequenceConstructor

    public boolean mayContainSequenceConstructor()

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

  Overrides:
    `mayContainSequenceConstructor` 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. Note that this may be called before prepareAttributes has been called.

### getReturnedItemType

    protected ItemType getReturnedItemType()

  Determine the type of item returned by this template

  Overrides:
    `getReturnedItemType` in class `StyleElement`
  Returns:
    the item type returned

### prepareAttributes

    public void prepareAttributes()
                           throws javax.xml.transform.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`
    `javax.xml.transform.TransformerConfigurationException`

### validate

    public void validate()
                  throws javax.xml.transform.TransformerConfigurationException

  Description copied from class: `StyleElement`
  Check that the stylesheet 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`
    `javax.xml.transform.TransformerConfigurationException`

### markTailCalls

    public void markTailCalls()

  Mark tail-recursive calls on templates and functions.

  Overrides:
    `markTailCalls` in class `StyleElement`

### compile

    public Expression compile(Executable exec)
                       throws javax.xml.transform.TransformerConfigurationException

  Compile: this registers the template with the rule manager, and ensures space is available for local variables

  Specified by:
    `compile` in class `StyleElement`
  Returns:
    either an Instruction, or null. The value null is returned when compiling an instruction that returns a no-op, or when compiling a top-level object such as an xsl:template that compiles into something other than an instruction.
    `javax.xml.transform.TransformerConfigurationException`

### getSlotManager

    public SlotManager getSlotManager()

  Get associated Procedure (for details of stack frame)

  Specified by:
    `getSlotManager` in interface `StylesheetProcedure`
  Returns:
    the associated SlotManager object

### allocateSlots

    public void allocateSlots(Expression exp)

  Allocate space for range variables within predicates in the match pattern. The xsl:template element has no XPath expressions among its attributes, so if this method is called on this object it can only be because there are variables used in the match pattern. We work out how many slots are needed for the match pattern in each template rule, and then apply-templates can allocate a stack frame that is large enough for the most demanding match pattern in the entire stylesheet.

  Overrides:
    `allocateSlots` in class `StyleElement`
  Parameters:
    `exp` - The expression containing range variables. This will be a predicate within a match pattern, or possibly an argument to id() or key() used in a match pattern.

### getCompiledTemplate

    public Template getCompiledTemplate()

  Get the compiled template

### getConstructType

    public int getConstructType()

  Get the type of construct. This will be a constant in class `Location`. This method is part of the `InstructionInfo` interface

  Specified by:
    `getConstructType` in interface `InstructionInfo`
  Overrides:
    `getConstructType` in class `StyleElement`