Class CompoundMode

All Implemented Interfaces:
SourceLocator, ExpressionOwner, Location, Locator

public class CompoundMode extends Mode
A CompoundMode is a mode representing the templates contained within an xsl:override element in a using package together with the rules in the corresponding mode of the base package.
  • Constructor Details

    • CompoundMode

      public CompoundMode(Mode base, SimpleMode overrides)
      Create a compound Mode
      Parameters:
      base - the mode from the base (used) package
      overrides - the mode containing (only) the overriding template rules from the using package
  • Method Details

    • getBuiltInRuleSet

      public BuiltInRuleSet getBuiltInRuleSet()
      Get the built-in template rules to be used with this Mode in the case where there is no explicit template rule
      Specified by:
      getBuiltInRuleSet in class Mode
      Returns:
      the built-in rule set, defaulting to the TextOnlyCopyRuleSet if no other rule set has been supplied
    • getActivePart

      public SimpleMode getActivePart()
      Get the active component of this mode. For a simple mode this is the mode itself; for a compound mode it is the "overriding" part
      Specified by:
      getActivePart in class Mode
    • isEmpty

      public boolean isEmpty()
      Ask whether there are any template rules in this mode (a mode could exist merely because it is referenced in apply-templates)
      Specified by:
      isEmpty in class Mode
      Returns:
      true if no template rules exist in this mode
    • getMaxPrecedence

      public int getMaxPrecedence()
      Get the maximum precedence of the rules in this mode
      Specified by:
      getMaxPrecedence in class Mode
    • getMaxRank

      public int getMaxRank()
      Get the highest rank of the rules in this mode
      Specified by:
      getMaxRank in class Mode
      Returns:
      the highest rank
    • computeRankings

      public void computeRankings(int start) throws XPathException
      Compute a rank for each rule, as a combination of the precedence and priority, to allow rapid comparison. This method also checks that there are no conflicts for property values in different xsl:mode declarations
      Specified by:
      computeRankings in class Mode
      Parameters:
      start - the lowest rank to use
      Throws:
      XPathException - if an error occurs processing the rules
    • processRules

      public void processRules(Mode.RuleAction action) throws XPathException
      Walk over all the rules, applying a specified action to each one.
      Specified by:
      processRules in class Mode
      Parameters:
      action - an action that is to be applied to all the rules in this Mode
      Throws:
      XPathException - if an error occurs processing any of the rules
    • getExplicitNamespaces

      public Set<NamespaceUri> getExplicitNamespaces(NamePool pool)
      Get the "explicit namespaces" matched by this mode. Returns a set containing all the namespaces matched by specific template rules in this mode
      Specified by:
      getExplicitNamespaces in class Mode
      Parameters:
      pool - the NamePool for the configuration
      Returns:
      the set of all namespace URIs of names explicitly matched by rules in this mode
    • allocateAllBindingSlots

      public void allocateAllBindingSlots(StylesheetPackage pack)
      Allocate slot numbers to all the external component references in this component
      Overrides:
      allocateAllBindingSlots in class Actor
      Parameters:
      pack - the containing package
    • getRule

      public Rule getRule(Item item, XPathContext context) throws XPathException
      Get the rule corresponding to a given item, by finding the best pattern match.
      Specified by:
      getRule in class Mode
      Parameters:
      item - the item to be matched
      context - the XPath dynamic evaluation context
      Returns:
      the best matching rule, if any (otherwise null).
      Throws:
      XPathException - if an error occurs matching a pattern
    • getStackFrameSlotsNeeded

      public int getStackFrameSlotsNeeded()
      Specified by:
      getStackFrameSlotsNeeded in class Mode
    • getRule

      public Rule getRule(Item item, XPathContext context, Predicate<Rule> filter) throws XPathException
      Get the rule corresponding to a given item, by finding the best Pattern match.
      Specified by:
      getRule in class Mode
      Parameters:
      item - the item to be matched
      context - the XPath dynamic evaluation context
      filter - a filter to select which rules should be considered
      Returns:
      the best matching rule, if any (otherwise null).
      Throws:
      XPathException - if an error occurs
    • exportTemplateRules

      public void exportTemplateRules(ExpressionPresenter presenter) throws XPathException
      Export expression structure. The abstract expression tree is written to the supplied outputstream.
      Specified by:
      exportTemplateRules in class Mode
      Parameters:
      presenter - the expression presenter used to generate the XML representation of the structure
      Throws:
      XPathException
    • explainTemplateRules

      public void explainTemplateRules(ExpressionPresenter presenter) throws XPathException
      Explain expression structure. The abstract expression tree is written to the supplied outputstream.
      Specified by:
      explainTemplateRules in class Mode
      Parameters:
      presenter - the expression presenter used to generate the XML representation of the structure
      Throws:
      XPathException