/** * Dereference the variable, and return the reference value. Note that lazy evaluation will occur. * If a variable within scope is not found, a warning will be sent to the error listener, and an * empty nodeset will be returned. * * @param xctxt The runtime execution context. * @return The evaluated variable, or an empty nodeset if not found. * @throws javax.xml.transform.TransformerException */ public XObject execute(XPathContext xctxt, boolean destructiveOK) throws javax.xml.transform.TransformerException { XNodeSet xns = (XNodeSet) super.execute(xctxt, destructiveOK); DTMManager dtmMgr = xctxt.getDTMManager(); int context = xctxt.getContextNode(); if (dtmMgr.getDTM(xns.getRoot()).getDocument() != dtmMgr.getDTM(context).getDocument()) { Expression expr = (Expression) xns.getContainedIter(); xns = (XNodeSet) expr.asIterator(xctxt, context); } return xns; }