/** * Add a representation of this expression to a PathMap. The PathMap captures a map of the nodes * visited by an expression in a source tree. * * <p> * * <p>The default implementation of this method assumes that an expression does no navigation * other than the navigation done by evaluating its subexpressions, and that the subexpressions * are evaluated in the same context as the containing expression. The method must be overridden * for any expression where these assumptions do not hold. For example, implementations exist for * AxisExpression, ParentExpression, and RootExpression (because they perform navigation), and for * the doc(), document(), and collection() functions because they create a new navigation root. * Implementations also exist for PathExpression and FilterExpression because they have * subexpressions that are evaluated in a different context from the calling expression. * * @param pathMap the PathMap to which the expression should be added * @param pathMapNodeSet the PathMapNodeSet to which the paths embodied in this expression should * be added * @return the pathMapNodeSet representing the points in the source document that are both * reachable by this expression, and that represent possible results of this expression. For * an expression that does navigation, it represents the end of the arc in the path map that * describes the navigation route. For other expressions, it is the same as the input * pathMapNode. */ public PathMap.PathMapNodeSet addToPathMap( PathMap pathMap, PathMap.PathMapNodeSet pathMapNodeSet) { PathMap.PathMapNodeSet varPath = sequence.addToPathMap(pathMap, pathMapNodeSet); pathMap.registerPathForVariable(this, varPath); return action.addToPathMap(pathMap, pathMapNodeSet); }