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.
    • Constructor Detail

      • RedundentExprEliminator

        public RedundentExprEliminator()
        Construct a RedundentExprEliminator.
    • 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.
      • 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.