net.sf.saxon.instruct
Class Template

java.lang.Object
  extended by net.sf.saxon.instruct.Procedure
      extended by net.sf.saxon.instruct.Template
All Implemented Interfaces:
Serializable, SourceLocator, LocationProvider, SaxonLocator, Container, InstructionInfo, RuleTarget, Locator

public class Template
extends Procedure
implements RuleTarget

An xsl:template element in the style sheet.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class net.sf.saxon.instruct.Procedure
body
 
Constructor Summary
Template()
          Create a template
 
Method Summary
 void apply(XPathContextMajor context)
          Process the template, without returning any tail calls.
 TailCall applyLeavingTail(XPathContextMajor context)
          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.
 void explain(ExpressionPresenter presenter)
          Output diagnostic explanation to an ExpressionPresenter
 int getConstructType()
          Get the type of construct.
 LocalParam getLocalParam(int id)
          Get the local parameter with a given parameter id
 Pattern getMatchPattern()
          Get the match pattern used with this template
 int getMinImportPrecedence()
          Get the minimum import precedence used by xsl:apply-imports
 StructuredQName getObjectName()
          Get a name identifying the object of the expression, for example a function name, template name, variable name, key name, element name, etc.
 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
 boolean isStreamable()
          Ask whether or not this template is declared as streamable
 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 setMatchPattern(Pattern pattern)
          Set the match pattern used with this template
 void setRequiredType(SequenceType type)
          Set the required type to be returned by this template
 void setStreamable(boolean streamable)
          Say whether or not this template is declared as streamable
 
Methods inherited from class net.sf.saxon.instruct.Procedure
getBody, getColumnNumber, getColumnNumber, getContainerGranularity, getExecutable, getHostLanguage, getLineNumber, getLineNumber, getLocationProvider, getProperties, getProperty, getPublicId, getStackFrameMap, getSystemId, getSystemId, setExecutable, setHostLanguage, setLineNumber, setStackFrameMap, setSystemId
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Template

public Template()
Create a template

Method Detail

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

setMatchPattern

public void setMatchPattern(Pattern pattern)
Set the match pattern used with this template

Parameters:
pattern - the match pattern (may be null for a named template)

getMatchPattern

public Pattern getMatchPattern()
Get the match pattern used with this template

Returns:
the match pattern, or null if this is a named template with no match pattern

setBody

public void setBody(Expression body)
Set the expression that forms the body of the template

Overrides:
setBody in class Procedure
Parameters:
body - the body of the template

getTemplateName

public StructuredQName getTemplateName()
Get the name of the template (if it is named)

Returns:
the template name, or null if unnamed

getObjectName

public StructuredQName getObjectName()
Get a name identifying the object of the expression, for example a function name, template name, variable name, key name, element name, etc. This is used only where the name is known statically.

Specified by:
getObjectName in interface InstructionInfo
Returns:
the QName of the object declared or manipulated by this instruction or expression

getPrecedence

public int getPrecedence()
Get the import precedence of the template

Returns:
the import precedence (a higher number means a higher precedence)

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

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

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

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

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

setStreamable

public void setStreamable(boolean streamable)
Say whether or not this template is declared as streamable

Parameters:
streamable - true if the template belongs to a streamable mode

isStreamable

public boolean isStreamable()
Ask whether or not this template is declared as streamable

Returns:
true if the template belongs to a streamable mode

getLocalParam

public LocalParam getLocalParam(int id)
Get the local parameter with a given parameter id

Parameters:
id - the parameter id
Returns:
the local parameter with this id if found, otherwise null

apply

public void apply(XPathContextMajor context)
           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,
Throws:
XPathException

applyLeavingTail

public TailCall applyLeavingTail(XPathContextMajor context)
                          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
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
Throws:
XPathException

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
Throws:
XPathException

getConstructType

public int getConstructType()
Get the type of construct. This will either be the fingerprint of a standard XSLT instruction name (values in StandardNames: all less than 1024) or it will be a constant in class Location.

Specified by:
getConstructType in interface InstructionInfo
Returns:
an integer identifying the kind of construct

explain

public void explain(ExpressionPresenter presenter)
Output diagnostic explanation to an ExpressionPresenter

Specified by:
explain in interface RuleTarget


Copyright (c) Saxonica Limited. All rights reserved.