org.apache.xalan.templates

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 Summary
static booleanDEBUG
static booleanDIAGNOSE_MULTISTEPLIST
static booleanDIAGNOSE_NUM_PATHS_REDUCED
Constructor Summary
RedundentExprEliminator()
Construct a RedundentExprEliminator.
Method Summary
voideleminateRedundentGlobals(StylesheetRoot stylesheet)
Method to be called after the all global expressions within a stylesheet have been collected.
voideleminateRedundentLocals(ElemTemplateElement psuedoVarRecipient)
Method to be called after the all expressions within an node context have been visited.
booleanisAbsolute(LocPathIterator path)
Tell if the given LocPathIterator is relative to an absolute path, i.e. in not dependent on the context.
booleanvisitInstruction(ElemTemplateElement elem)
Visit an XSLT instruction.
booleanvisitLocationPath(ExpressionOwner owner, LocPathIterator path)
Visit a LocationPath.
booleanvisitPredicate(ExpressionOwner owner, Expression pred)
Visit a predicate within a location path.
booleanvisitTopLevelInstruction(ElemTemplateElement elem)
Visit an XSLT top-level instruction.

Field Detail

DEBUG

public static final boolean DEBUG

DIAGNOSE_MULTISTEPLIST

public static final boolean DIAGNOSE_MULTISTEPLIST

DIAGNOSE_NUM_PATHS_REDUCED

public static final boolean DIAGNOSE_NUM_PATHS_REDUCED

Constructor Detail

RedundentExprEliminator

public RedundentExprEliminator()
Construct a RedundentExprEliminator.

Method Detail

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.

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.

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.

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.

Parameters: elem The xsl instruction element object.

Returns: true if the sub expressions should be traversed.

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.

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.

visitTopLevelInstruction

public boolean visitTopLevelInstruction(ElemTemplateElement elem)
Visit an XSLT top-level instruction.

Parameters: elem The xsl instruction element object.

Returns: true if the sub expressions should be traversed.

Copyright © 2005 Apache XML Project. All Rights Reserved.