/** * 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()); }
/** * 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; }