org.apache.xalan.templates
Class RedundentExprEliminator

java.lang.Object
  |
  +--org.apache.xpath.XPathVisitor
        |
        +--org.apache.xalan.templates.XSLTVisitor
              |
              +--org.apache.xalan.templates.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 Summary
static boolean DEBUG
           
static boolean DIAGNOSE_MULTISTEPLIST
           
static boolean DIAGNOSE_NUM_PATHS_REDUCED
           
 
Constructor Summary
RedundentExprEliminator()
          Construct a RedundentExprEliminator.
 
Method Summary
 void eleminateRedundentGlobals(StylesheetRoot stylesheet)
          Method to be called after the all global expressions within a stylesheet have been collected.
 void eleminateRedundentLocals(ElemTemplateElement psuedoVarRecipient)
          Method to be called after the all expressions within an node context have been visited.
 boolean isAbsolute(LocPathIterator path)
          Tell if the given LocPathIterator is relative to an absolute path, i.e.
 boolean visitLocationPath(ExpressionOwner owner, LocPathIterator path)
          Visit a LocationPath.
 boolean visitPredicate(ExpressionOwner owner, Expression pred)
          Visit a predicate within a location path.
 
Methods inherited from class org.apache.xpath.XPathVisitor
visitBinaryOperation, visitFunction, visitMatchPattern, visitNumberLiteral, visitStep, visitStringLiteral, visitUnaryOperation, visitUnionPath, visitUnionPattern, visitVariableRef
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEBUG

public static boolean DEBUG

DIAGNOSE_NUM_PATHS_REDUCED

public static boolean DIAGNOSE_NUM_PATHS_REDUCED

DIAGNOSE_MULTISTEPLIST

public static boolean DIAGNOSE_MULTISTEPLIST
Constructor Detail

RedundentExprEliminator

public RedundentExprEliminator()
Construct a RedundentExprEliminator.
Parameters:
absPathsList - Vector to which absolute paths will be inserted. The vector may be null, if the caller does not wish to collect absolute paths.
Method Detail

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.
Parameters:
psuedoVarRecipient - The recipient of the psuedo vars. The variables will be inserted as first children of the element, before any existing variables.

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.
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.
Overrides:
visitLocationPath in class XPathVisitor

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.
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.
Overrides:
visitPredicate in class XPathVisitor


Copyright © 2003 Apache XML Project. All Rights Reserved.