net.sf.saxon.expr
Class XPathContextMajor

java.lang.Object
  extended bynet.sf.saxon.expr.XPathContextMinor
      extended bynet.sf.saxon.expr.XPathContextMajor
All Implemented Interfaces:
XPathContext

public class XPathContextMajor
extends XPathContextMinor

This class represents a "major context" in which an XPath expression is evaluated: a "major context" object allows all aspects of the dynamic context to change, whereas a "minor context" only allows changes to the focus and the destination for push output.


Nested Class Summary
protected static class XPathContextMajor.XSLTContext
          An XSLTContext object holds all the additional dynamic context items used in XSLT.
 
Constructor Summary
XPathContextMajor(Controller c)
          Constructor should only be called by the Controller, which acts as a XPathContext factory.
XPathContextMajor(Item item, Configuration config)
          Constructor for use in free-standing Java applications.
 
Method Summary
 ValueRepresentation evaluateLocalVariable(int slotnumber)
          Get the value of a local variable, identified by its slot number
 GroupIterator getCurrentGroupIterator()
          Get the current group iterator.
 Mode getCurrentMode()
          Get the current mode.
 net.sf.saxon.regex.RegexIterator getCurrentRegexIterator()
          Get the current regex iterator.
 Template getCurrentTemplate()
          Get the current template.
 ParameterSet getLocalParameters()
          Get the local parameters for the current template call.
 StackFrame getStackFrame()
          Get a reference to the local stack frame for variables.
 ParameterSet getTunnelParameters()
          Get the tunnel parameters for the current template call.
 XPathContextMajor.XSLTContext getXSLTContext()
          Get the XSLT-specific part of the context
 XPathContextMajor newContext()
          Construct a new context as a copy of another.
static XPathContextMajor newContext(XPathContextMinor p)
           
 void openStackFrame(int numberOfVariables)
          Create a new stack frame large enough to hold a given number of local variables, for which no stack frame map is available.
 void openStackFrame(SlotManager map)
          Create a new stack frame for local variables, using the supplied SlotManager to define the allocation of slots to individual variables
 void setCurrentGroupIterator(GroupIterator collection)
          Set the current grouping iterator.
 void setCurrentMode(Mode mode)
          Set the current mode.
 void setCurrentRegexIterator(net.sf.saxon.regex.RegexIterator currentJRegexIterator)
          Set the current regex iterator.
 void setCurrentTemplate(Template template)
          Set the current template.
 void setLocalParameters(ParameterSet localParameters)
          Set the local parameters for the current template call.
 void setLocalVariable(int slotnumber, ValueRepresentation value)
          Set the value of a local variable, identified by its slot number
 void setOrigin(InstructionInfoProvider expr)
          Set the creating expression (for use in diagnostics).
 void setStackFrame(SlotManager map, ValueRepresentation[] variables)
          Set the local stack frame.
 void setTunnelParameters(ParameterSet tunnelParameters)
          Set the tunnel parameters for the current template call.
 boolean useLocalParameter(int fingerprint, LocalParam binding, boolean isTunnel)
          Use local parameter.
 
Methods inherited from class net.sf.saxon.expr.XPathContextMinor
changeOutputDestination, getCaller, getCollation, getConfiguration, getContextItem, getContextPosition, getController, getCurrentIterator, getDefaultCollation, getImplicitTimezone, getLast, getNameChecker, getNamePool, getOrigin, getOriginatingConstructType, getReceiver, isAtLast, newCleanContext, newMinorContext, setCaller, setCurrentIterator, setOriginatingConstructType, setReceiver, setTemporaryReceiver
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XPathContextMajor

public XPathContextMajor(Controller c)
Constructor should only be called by the Controller, which acts as a XPathContext factory.


XPathContextMajor

public XPathContextMajor(Item item,
                         Configuration config)
Constructor for use in free-standing Java applications.

Method Detail

newContext

public XPathContextMajor newContext()
Construct a new context as a copy of another. The new context is effectively added to the top of a stack, and contains a pointer to the previous context

Specified by:
newContext in interface XPathContext
Overrides:
newContext in class XPathContextMinor

newContext

public static XPathContextMajor newContext(XPathContextMinor p)

getXSLTContext

public XPathContextMajor.XSLTContext getXSLTContext()
Get the XSLT-specific part of the context

Specified by:
getXSLTContext in interface XPathContext
Overrides:
getXSLTContext in class XPathContextMinor

getLocalParameters

public ParameterSet getLocalParameters()
Get the local parameters for the current template call.

Specified by:
getLocalParameters in interface XPathContext
Overrides:
getLocalParameters in class XPathContextMinor
Returns:
the supplied parameters

setLocalParameters

public void setLocalParameters(ParameterSet localParameters)
Set the local parameters for the current template call.

Parameters:
localParameters - the supplied parameters

getTunnelParameters

public ParameterSet getTunnelParameters()
Get the tunnel parameters for the current template call.

Specified by:
getTunnelParameters in interface XPathContext
Overrides:
getTunnelParameters in class XPathContextMinor
Returns:
the supplied tunnel parameters

setTunnelParameters

public void setTunnelParameters(ParameterSet tunnelParameters)
Set the tunnel parameters for the current template call.

Parameters:
tunnelParameters - the supplied tunnel parameters

setOrigin

public void setOrigin(InstructionInfoProvider expr)
Set the creating expression (for use in diagnostics). The origin is generally set to "this" by the object that creates the new context. It's up to the debugger to determine whether this information is useful. The object will either be an InstructionInfoProvider, allowing information about the calling instruction to be obtained, or null.

Specified by:
setOrigin in interface XPathContext
Overrides:
setOrigin in class XPathContextMinor

getStackFrame

public StackFrame getStackFrame()
Get a reference to the local stack frame for variables. Note that it's the caller's job to make a local copy of this. This is used for creating a Closure containing a retained copy of the variables for delayed evaluation.

Specified by:
getStackFrame in interface XPathContext
Overrides:
getStackFrame in class XPathContextMinor
Returns:
array of variables.

setStackFrame

public void setStackFrame(SlotManager map,
                          ValueRepresentation[] variables)
Set the local stack frame. This method is used when creating a Closure to support delayed evaluation of expressions. The "stack frame" is actually on the Java heap, which means it can survive function returns and the like.


openStackFrame

public void openStackFrame(SlotManager map)
Create a new stack frame for local variables, using the supplied SlotManager to define the allocation of slots to individual variables

Parameters:
map - the SlotManager for the new stack frame

openStackFrame

public void openStackFrame(int numberOfVariables)
Create a new stack frame large enough to hold a given number of local variables, for which no stack frame map is available. This is used in particular when evaluating match patterns of template rules.

Parameters:
numberOfVariables - The number of local variables to be accommodated.

evaluateLocalVariable

public ValueRepresentation evaluateLocalVariable(int slotnumber)
Get the value of a local variable, identified by its slot number

Specified by:
evaluateLocalVariable in interface XPathContext
Overrides:
evaluateLocalVariable in class XPathContextMinor

setLocalVariable

public void setLocalVariable(int slotnumber,
                             ValueRepresentation value)
Set the value of a local variable, identified by its slot number

Specified by:
setLocalVariable in interface XPathContext
Overrides:
setLocalVariable in class XPathContextMinor

setCurrentMode

public void setCurrentMode(Mode mode)
Set the current mode.

Parameters:
mode - the new current mode

getCurrentMode

public Mode getCurrentMode()
Get the current mode.

Specified by:
getCurrentMode in interface XPathContext
Overrides:
getCurrentMode in class XPathContextMinor
Returns:
the current mode. May return null if the current mode is the default mode.

setCurrentTemplate

public void setCurrentTemplate(Template template)
Set the current template. This is used to support xsl:apply-imports. The caller is responsible for remembering the previous current template and resetting it after use.

Parameters:
template - the current template

getCurrentTemplate

public Template getCurrentTemplate()
Get the current template. This is used to support xsl:apply-imports

Specified by:
getCurrentTemplate in interface XPathContext
Overrides:
getCurrentTemplate in class XPathContextMinor
Returns:
the current template

setCurrentGroupIterator

public void setCurrentGroupIterator(GroupIterator collection)
Set the current grouping iterator. This supports the current-group() and current-grouping-key() functions in XSLT 2.0

Parameters:
collection - the new current GroupIterator

getCurrentGroupIterator

public GroupIterator getCurrentGroupIterator()
Get the current group iterator. This supports the current-group() and current-grouping-key() functions in XSLT 2.0

Specified by:
getCurrentGroupIterator in interface XPathContext
Overrides:
getCurrentGroupIterator in class XPathContextMinor
Returns:
the current grouped collection

setCurrentRegexIterator

public void setCurrentRegexIterator(net.sf.saxon.regex.RegexIterator currentJRegexIterator)
Set the current regex iterator. This supports the functionality of the regex-group() function in XSLT 2.0.

Parameters:
currentJRegexIterator - the current regex iterator

getCurrentRegexIterator

public net.sf.saxon.regex.RegexIterator getCurrentRegexIterator()
Get the current regex iterator. This supports the functionality of the regex-group() function in XSLT 2.0.

Specified by:
getCurrentRegexIterator in interface XPathContext
Overrides:
getCurrentRegexIterator in class XPathContextMinor
Returns:
the current regular expressions iterator

useLocalParameter

public boolean useLocalParameter(int fingerprint,
                                 LocalParam binding,
                                 boolean isTunnel)
                          throws XPathException
Use local parameter. This is called when a local xsl:param element is processed. If a parameter of the relevant name was supplied, it is bound to the xsl:param element. Otherwise the method returns false, so the xsl:param default will be evaluated

Specified by:
useLocalParameter in interface XPathContext
Overrides:
useLocalParameter in class XPathContextMinor
Parameters:
fingerprint - The fingerprint of the parameter name
binding - The XSLParam element to bind its value to
isTunnel - True if a tunnel parameter is required, else false
Returns:
true if a parameter of this name was supplied, false if not
Throws:
XPathException