Package net.sf.saxon.expr

Examples of net.sf.saxon.expr.PathMap


      return this.xQuery.usesContextItem();
    }
   
  public void useDocumentProjection(List<XMLTable.XMLColumn> columns, AnalysisRecord record) {
    this.contextRoot = null;
    PathMap map = this.xQuery.getPathMap();
    PathMapRoot parentRoot;
    try {
      parentRoot = map.getContextRoot();
    } catch (IllegalStateException e) {
      if (record.recordDebug()) {
        record.println("Document projection will not be used, since multiple context item exist."); //$NON-NLS-1$
      }
      return;
View Full Code Here


    for (XMLColumn xmlColumn : columns) {
      if (xmlColumn.isOrdinal()) {
        continue;
      }
        Expression internalExpression = xmlColumn.getPathExpression().getInternalExpression();
        PathMap subMap = new PathMap(internalExpression);
        PathMapRoot subContextRoot = null;
        for (PathMapRoot root : subMap.getPathMapRoots()) {
        if (root.getRootExpression() instanceof ContextItemExpression || root.getRootExpression() instanceof RootExpression) {
          if (subContextRoot != null) {
            if (record.recordDebug()) {
              record.println("Document projection will not be used, since multiple context items exist in column path " + xmlColumn.getPath()); //$NON-NLS-1$
            }
            return null;
          }
          subContextRoot = root;
        }
      }
        if (subContextRoot == null) {
          //special case for handling '.', which the pathmap logic doesn't consider as a root
          if (internalExpression instanceof ContextItemExpression) {
            addReturnedArcs(xmlColumn, finalNode);
          }
          continue;
        }
        for (PathMapArc arc : subContextRoot.getArcs()) {
        finalNode.createArc(arc.getStep(), arc.getTarget());
      }
        HashSet<PathMapNode> subFinalNodes = new HashSet<PathMapNode>();
      getReturnableNodes(subContextRoot, subFinalNodes);
        for (PathMapNode subNode : subFinalNodes) {
          addReturnedArcs(xmlColumn, subNode);
          }
    }
    //Workaround to rerun the reduction algorithm - by making a copy of the old version
    PathMap newMap = new PathMap(DUMMY_EXPRESSION);
    PathMapRoot newRoot = newMap.makeNewRoot(parentRoot.getRootExpression());
    if (parentRoot.isAtomized()) {
      newRoot.setAtomized();
    }
    if (parentRoot.isReturnable()) {
      newRoot.setReturnable(true);
    }
    if (parentRoot.hasUnknownDependencies()) {
      newRoot.setHasUnknownDependencies();
    }
    for (PathMapArc arc : parentRoot.getArcs()) {
      newRoot.createArc(arc.getStep(), arc.getTarget());
    }
    return newMap.reduceToDownwardsAxes(newRoot);
  }
View Full Code Here

            if (!exp.usesContextItem()) {
                System.err.println("Source document ignored - query does not access the context item");
                sourceInput = null;

            } else if (projection) {
                PathMap map = exp.getPathMap();
                PathMap.PathMapRoot contextRoot = map.getContextRoot();
                if (explain) {
                    System.err.println("DOCUMENT PROJECTION: PATH MAP");
                    map.diagnosticDump(System.err);
                }
                if (contextRoot != null) {
                    if (contextRoot.hasUnknownDependencies()) {
                        System.err.println("Document projection for the context document is not possible, " +
                                "because the query uses paths that defy analysis");
View Full Code Here

            if ((!exp.usesContextItem())) {
                System.err.println("Source document ignored - query does not access the context item");
                sourceInput = null;

            } else if (projection) {
                PathMap map = exp.getPathMap();
                PathMap.PathMapRoot contextRoot = map.getContextRoot();
                if (explain) {
                    System.err.println("DOCUMENT PROJECTION: PATH MAP");
                    map.diagnosticDump(System.err);
                }
                if (contextRoot != null) {
                    if (contextRoot.hasUnknownDependencies()) {
                        System.err.println("Document projection for the context document is not possible, " +
                                "because the query uses paths that defy analysis");
View Full Code Here

TOP

Related Classes of net.sf.saxon.expr.PathMap

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.