net.sf.saxon.trans
Class RuleManager

java.lang.Object
  extended by net.sf.saxon.trans.RuleManager
All Implemented Interfaces:
Serializable

public final class RuleManager
extends Object
implements Serializable

RuleManager maintains a set of template rules, one set for each mode

Version:
10 December 1999: carved out of the old Controller class
Author:
Michael H. Kay
See Also:
Serialized Form

Constructor Summary
RuleManager()
          create a RuleManager and initialise variables.
 
Method Summary
 void computeRankings()
          Allocate rankings to the rules within each mode.
 void explainTemplateRules(ExpressionPresenter presenter)
          Explain (that is, output the expression tree) all template rules
 Mode getDefaultMode()
          Get the mode object for the default (unnamed) mode
 Mode getMode(StructuredQName modeName, boolean createIfAbsent)
          Get the Mode object for a named mode.
 Rule getNextMatchHandler(NodeInfo node, Mode mode, Rule currentRule, XPathContext c)
          Get the next-match handler after the current one
 int getRecoveryPolicy()
          Get the policy for handling recoverable errors.
 Rule getTemplateRule(NodeInfo node, Mode mode, int min, int max, XPathContext c)
          Get a template rule whose import precedence is in a particular range.
 Rule getTemplateRule(NodeInfo node, Mode mode, XPathContext c)
          Find the template rule registered for a particular node in a specific mode.
 void invertStreamableTemplates(Optimizer opt)
          Invert streamable templates in all streamable modes
 void resetHandlers()
          Set up a new table of handlers.
 void setHandler(Pattern pattern, Template eh, Mode mode, int precedence)
          Register a handler for a particular pattern.
 void setHandler(Pattern pattern, Template eh, Mode mode, int precedence, double priority)
          Register a template for a particular pattern.
 void setRecoveryPolicy(int policy)
          Set the policy for handling recoverable errrors.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RuleManager

public RuleManager()
create a RuleManager and initialise variables.

Method Detail

setRecoveryPolicy

public void setRecoveryPolicy(int policy)
Set the policy for handling recoverable errrors. Note that for some errors the decision can be made at run-time, but for the "ambiguous template match" error, the decision is (since 9.2) fixed at compile time.

Parameters:
policy - the recovery policy to be used. The options are Configuration.RECOVER_SILENTLY, Configuration.RECOVER_WITH_WARNINGS, or Configuration.DO_NOT_RECOVER.
Since:
9.2

getRecoveryPolicy

public int getRecoveryPolicy()
Get the policy for handling recoverable errors. Note that for some errors the decision can be made at run-time, but for the "ambiguous template match" error, the decision is (since 9.2) fixed at compile time.

Returns:
the current policy.
Since:
9.2

resetHandlers

public void resetHandlers()
Set up a new table of handlers.


getDefaultMode

public Mode getDefaultMode()
Get the mode object for the default (unnamed) mode


getMode

public Mode getMode(StructuredQName modeName,
                    boolean createIfAbsent)
Get the Mode object for a named mode. If there is not one already registered. a new Mode is created.

Parameters:
modeName - The name of the mode. Supply null to get the default mode or Mode.ALL_MODES to get the Mode object containing "mode=all" rules
createIfAbsent - if true, then if the mode does not already exist it will be created. If false, then if the mode does not already exist the method returns null.
Returns:
the Mode with this name

setHandler

public void setHandler(Pattern pattern,
                       Template eh,
                       Mode mode,
                       int precedence)
Register a handler for a particular pattern. The priority of the rule is the default priority for the pattern, which depends on the syntax of the pattern suppllied.

Parameters:
pattern - A match pattern
eh - The Template to be used
mode - The processing mode
precedence - The import precedence (use 0 by default)

setHandler

public void setHandler(Pattern pattern,
                       Template eh,
                       Mode mode,
                       int precedence,
                       double priority)
Register a template for a particular pattern.

Parameters:
pattern - Must be a valid Pattern.
eh - The Template to be used
mode - The processing mode to which this template applies
precedence - The import precedence of this rule
priority - The priority of the rule: if an element matches several patterns, the one with highest priority is used
See Also:
Pattern

getTemplateRule

public Rule getTemplateRule(NodeInfo node,
                            Mode mode,
                            XPathContext c)
                     throws XPathException
Find the template rule registered for a particular node in a specific mode.

Parameters:
node - The NodeInfo for the relevant node
mode - The processing mode
c - The controller for this transformation
Returns:
The template rule that will process this node Returns null if there is no specific handler registered.
Throws:
XPathException

getTemplateRule

public Rule getTemplateRule(NodeInfo node,
                            Mode mode,
                            int min,
                            int max,
                            XPathContext c)
                     throws XPathException
Get a template rule whose import precedence is in a particular range. This is used to support the xsl:apply-imports function

Parameters:
node - The node to be matched
mode - The mode for which a rule is required
min - The minimum import precedence that the rule must have
max - The maximum import precedence that the rule must have
c - The Controller for the transformation
Returns:
The template rule to be invoked
Throws:
XPathException

getNextMatchHandler

public Rule getNextMatchHandler(NodeInfo node,
                                Mode mode,
                                Rule currentRule,
                                XPathContext c)
                         throws XPathException
Get the next-match handler after the current one

Parameters:
node - The node to be matched
mode - The processing mode
currentRule - The current template rule
c - The dynamic context for the transformation
Returns:
The template rule to be executed
Throws:
XPathException

computeRankings

public void computeRankings()
                     throws XPathException
Allocate rankings to the rules within each mode. This method must be called when all the rules in each mode are known

Throws:
XPathException

invertStreamableTemplates

public void invertStreamableTemplates(Optimizer opt)
                               throws XPathException
Invert streamable templates in all streamable modes

Throws:
XPathException

explainTemplateRules

public void explainTemplateRules(ExpressionPresenter presenter)
Explain (that is, output the expression tree) all template rules



Copyright (c) Saxonica Limited. All rights reserved.