net.sf.saxon.instruct

Class Template

Implemented Interfaces:
Container, InstructionInfoProvider, Serializable, SourceLocator, LocationProvider

public class Template
extends Procedure
implements InstructionInfoProvider

An xsl:template element in the style sheet.

Field Summary

Fields inherited from class net.sf.saxon.instruct.Procedure

body

Constructor Summary

Template()
Create a template

Method Summary

void
apply(XPathContext context, Rule rule)
Process the template, without returning any tail calls.
TailCall
applyLeavingTail(XPathContext context, Rule rule)
Process this template, with the possibility of returning a tail call package if the template contains any tail calls that are to be performed by the caller.
TailCall
expand(XPathContext context)
Expand the template.
InstructionInfo
getInstructionInfo()
Get the InstructionInfo details about the construct.
int
getMinImportPrecedence()
Get the minimum import precedence used by xsl:apply-imports
int
getPrecedence()
Get the import precedence of the template
SequenceType
getRequiredType()
Get the required type to be returned by this template
StructuredQName
getTemplateName()
Get the name of the template (if it is named)
boolean
hasRequiredParams()
Ask whether this template has one or more required parameters
void
init(StructuredQName templateName, int precedence, int minImportPrecedence)
Initialize the template
void
setBody(Expression body)
Set the expression that forms the body of the template
void
setHasRequiredParams(boolean has)
Set whether this template has one or more required parameters
void
setRequiredType(SequenceType type)
Set the required type to be returned by this template

Methods inherited from class net.sf.saxon.instruct.Procedure

getBody, getColumnNumber, getExecutable, getHostLanguage, getLineNumber, getLineNumber, getLocationProvider, getPublicId, getStackFrameMap, getSystemId, getSystemId, replaceSubExpression, setBody, setExecutable, setHostLanguage, setLineNumber, setStackFrameMap, setSystemId

Constructor Details

Template

public Template()
Create a template

Method Details

apply

public void apply(XPathContext context,
                  Rule rule)
            throws XPathException
Process the template, without returning any tail calls. This path is used by xsl:apply-imports and xsl:next-match
Parameters:
context - The dynamic context, giving access to the current node,
rule - the template rule that caused this template to be invoked. When a template has a match pattern defined as a union, there can be more than one Rule referring to the same template, and further calls on next-match or apply-imports need to know which one in in force

applyLeavingTail

public TailCall applyLeavingTail(XPathContext context,
                                 Rule rule)
            throws XPathException
Process this template, with the possibility of returning a tail call package if the template contains any tail calls that are to be performed by the caller.
Parameters:
context - the XPath dynamic context
rule - the template rule that caused this template to be invoked. When a template has a match pattern defined as a union, there can be more than one Rule referring to the same template, and further calls on next-match or apply-imports need to know which one in in force
Returns:
null if the template exited normally; but if it was a tail call, details of the call that hasn't been made yet and needs to be made by the caller

expand

public TailCall expand(XPathContext context)
            throws XPathException
Expand the template. Called when the template is invoked using xsl:call-template. Invoking a template by this method does not change the current template.
Parameters:
context - the XPath dynamic context
Returns:
null if the template exited normally; but if it was a tail call, details of the call that hasn't been made yet and needs to be made by the caller

getInstructionInfo

public InstructionInfo getInstructionInfo()
Get the InstructionInfo details about the construct. This information isn't used for tracing, but it is available when inspecting the context stack.
Specified by:
getInstructionInfo in interface InstructionInfoProvider

getMinImportPrecedence

public int getMinImportPrecedence()
Get the minimum import precedence used by xsl:apply-imports
Returns:
the minimum import precedence of templates that are candidates for calling by apply-imports

getPrecedence

public int getPrecedence()
Get the import precedence of the template
Returns:
the import precedence (a higher number means a higher precedence)

getRequiredType

public SequenceType getRequiredType()
Get the required type to be returned by this template
Returns:
the required type as defined in the "as" attribute on the xsl:template element

getTemplateName

public StructuredQName getTemplateName()
Get the name of the template (if it is named)
Returns:
the template name, or null if unnamed

hasRequiredParams

public boolean hasRequiredParams()
Ask whether this template has one or more required parameters
Returns:
true if this template has at least one required parameter

init

public void init(StructuredQName templateName,
                 int precedence,
                 int minImportPrecedence)
Initialize the template
Parameters:
templateName - the name of the template (if any)
precedence - the import precedence
minImportPrecedence - the minimum import precedence to be considered in the search performed by apply-imports

setBody

public void setBody(Expression body)
Set the expression that forms the body of the template
Overrides:
setBody in interface Procedure
Parameters:
body - the body of the template

setHasRequiredParams

public void setHasRequiredParams(boolean has)
Set whether this template has one or more required parameters
Parameters:
has - true if the template has at least one required parameter

setRequiredType

public void setRequiredType(SequenceType type)
Set the required type to be returned by this template
Parameters:
type - the required type as defined in the "as" attribute on the xsl:template element