Package org.apache.xalan.templates
Class RedundentExprEliminator
java.lang.Object
org.apache.xpath.XPathVisitor
org.apache.xalan.templates.XSLTVisitor
org.apache.xalan.templates.RedundentExprEliminator
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
FieldsModifier and TypeFieldDescriptionstatic final booleanstatic final booleanstatic final boolean -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoideleminateRedundentGlobals(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.booleanVisit an XSLT instruction.booleanvisitLocationPath(ExpressionOwner owner, LocPathIterator path) Visit a LocationPath.booleanvisitPredicate(ExpressionOwner owner, Expression pred) Visit a predicate within a location path.booleanVisit an XSLT top-level instruction.Methods inherited from class org.apache.xalan.templates.XSLTVisitor
visitAVT, visitExtensionElement, visitLiteralResultElement, visitStylesheet, visitTopLevelVariableOrParamDecl, visitVariableOrParamDeclMethods inherited from class org.apache.xpath.XPathVisitor
visitBinaryOperation, visitFunction, visitMatchPattern, visitNumberLiteral, visitStep, visitStringLiteral, visitUnaryOperation, visitUnionPath, visitUnionPattern, visitVariableRef
-
Field Details
-
DEBUG
public static final boolean DEBUG- See Also:
-
DIAGNOSE_NUM_PATHS_REDUCED
public static final boolean DIAGNOSE_NUM_PATHS_REDUCED- See Also:
-
DIAGNOSE_MULTISTEPLIST
public static final boolean DIAGNOSE_MULTISTEPLIST- See Also:
-
-
Constructor Details
-
RedundentExprEliminator
public RedundentExprEliminator()Construct a RedundentExprEliminator.
-
-
Method Details
-
eleminateRedundentLocals
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
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
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
Visit a LocationPath.- Overrides:
visitLocationPathin classXPathVisitor- 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
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:
visitPredicatein classXPathVisitor- 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
Visit an XSLT top-level instruction.- Overrides:
visitTopLevelInstructionin classXSLTVisitor- Parameters:
elem- The xsl instruction element object.- Returns:
- true if the sub expressions should be traversed.
-
visitInstruction
Visit an XSLT instruction. Any element that isn't called by one of the other visit methods, will be called by this method.- Overrides:
visitInstructionin classXSLTVisitor- Parameters:
elem- The xsl instruction element object.- Returns:
- true if the sub expressions should be traversed.
-