Class RedundentExprEliminator


public class RedundentExprEliminator extends XSLTVisitor
This class eleminates redundent XPaths from a given subtree, and also collects all absolute paths within the subtree. First it must be called as a visitor to the subtree, and then eleminateRedundent must be called.
  • Field Details

  • Constructor Details

    • RedundentExprEliminator

      public RedundentExprEliminator()
      Construct a RedundentExprEliminator.
  • Method Details

    • eleminateRedundentLocals

      public void eleminateRedundentLocals(ElemTemplateElement psuedoVarRecipient)
      Method to be called after the all expressions within an node context have been visited. It eliminates redundent expressions by creating a variable in the psuedoVarRecipient for each redundent expression, and then rewriting the redundent expression to be a variable reference.
      Parameters:
      psuedoVarRecipient - The recipient of the psuedo vars. The variables will be inserted as first children of the element, before any existing variables.
    • eleminateRedundentGlobals

      public void eleminateRedundentGlobals(StylesheetRoot stylesheet)
      Method to be called after the all global expressions within a stylesheet have been collected. It eliminates redundent expressions by creating a variable in the psuedoVarRecipient for each redundent expression, and then rewriting the redundent expression to be a variable reference.
    • isAbsolute

      public boolean isAbsolute(LocPathIterator path)
      Tell if the given LocPathIterator is relative to an absolute path, i.e. in not dependent on the context.
      Returns:
      true if the LocPathIterator is not dependent on the context node.
    • visitLocationPath

      public boolean visitLocationPath(ExpressionOwner owner, LocPathIterator path)
      Visit a LocationPath.
      Overrides:
      visitLocationPath in class XPathVisitor
      Parameters:
      owner - The owner of the expression, to which the expression can be reset if rewriting takes place.
      path - The LocationPath object.
      Returns:
      true if the sub expressions should be traversed.
    • visitPredicate

      public boolean visitPredicate(ExpressionOwner owner, Expression pred)
      Visit a predicate within a location path. Note that there isn't a proper unique component for predicates, and that the expression will be called also for whatever type Expression is.
      Overrides:
      visitPredicate in class XPathVisitor
      Parameters:
      owner - The owner of the expression, to which the expression can be reset if rewriting takes place.
      pred - The predicate object.
      Returns:
      true if the sub expressions should be traversed.
    • visitTopLevelInstruction

      public boolean visitTopLevelInstruction(ElemTemplateElement elem)
      Visit an XSLT top-level instruction.
      Overrides:
      visitTopLevelInstruction in class XSLTVisitor
      Parameters:
      elem - The xsl instruction element object.
      Returns:
      true if the sub expressions should be traversed.
    • visitInstruction

      public boolean visitInstruction(ElemTemplateElement elem)
      Visit an XSLT instruction. Any element that isn't called by one of the other visit methods, will be called by this method.
      Overrides:
      visitInstruction in class XSLTVisitor
      Parameters:
      elem - The xsl instruction element object.
      Returns:
      true if the sub expressions should be traversed.