/**
   * Execute the function. The function must return a valid object.
   *
   * @param xctxt The current execution context.
   * @return A valid XObject.
   * @throws javax.xml.transform.TransformerException
   */
  public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException {

    SubContextList subContextList = xctxt.getCurrentNodeList();
    int currentNode = DTM.NULL;

    if (null != subContextList) {
      if (subContextList instanceof PredicatedNodeTest) {
        LocPathIterator iter = ((PredicatedNodeTest) subContextList).getLocPathIterator();
        currentNode = iter.getCurrentContextNode();
      } else if (subContextList instanceof StepPattern) {
        throw new RuntimeException(
            XSLMessages.createMessage(XSLTErrorResources.ER_PROCESSOR_ERROR, null));
      }
    } else {
      // not predicate => ContextNode == CurrentNode
      currentNode = xctxt.getContextNode();
    }
    return new XNodeSet(currentNode, xctxt.getDTMManager());
  }
Esempio n. 2
0
 /**
  * Process the LocPathIterator to see if it contains variables or functions that may make it
  * context dependent.
  *
  * @param path LocPathIterator that is assumed to be absolute, but needs checking.
  * @return true if the path is confirmed to be absolute, false if it may contain context
  *     dependencies.
  */
 public boolean checkAbsolute(LocPathIterator path) {
   m_isAbs = true;
   path.callVisitors(null, this);
   return m_isAbs;
 }