/** * Creates a parsed XPath expression with resolved namespaces. This is * useful when an expression will be reused in an application since it * makes it possible to compile the expression string into a more * efficient internal form and preresolve all namespace prefixes which * occur within the expression. * * @param expression The XPath expression string to be parsed. * @param resolver The <code>resolver</code> permits translation of * prefixes within the XPath expression into appropriate namespace URIs * . If this is specified as <code>null</code>, any namespace prefix * within the expression will result in <code>DOMException</code> * being thrown with the code <code>NAMESPACE_ERR</code>. * @return The compiled form of the XPath expression. * @exception XPathException * INVALID_EXPRESSION_ERR: Raised if the expression is not legal * according to the rules of the <code>XPathEvaluator</code>i * @exception DOMException * NAMESPACE_ERR: Raised if the expression contains namespace prefixes * which cannot be resolved by the specified * <code>XPathNSResolver</code>. * * @see org.w3c.dom.xpath.XPathEvaluator#createExpression(String, XPathNSResolver) */ public XPathExpression createExpression( String expression, XPathNSResolver resolver) throws XPathException, DOMException { try { // If the resolver is null, create a dummy prefix resolver XPath xpath = new XPath(expression,null, ((null == resolver) ? new DummyPrefixResolver() : ((PrefixResolver)resolver)), XPath.SELECT); return new XPathExpressionImpl(xpath, m_doc); } catch (TransformerException e) { // Need to pass back exception code DOMException.NAMESPACE_ERR also. // Error found in DOM Level 3 XPath Test Suite. if(e instanceof XPathStylesheetDOM3Exception) throw new DOMException(DOMException.NAMESPACE_ERR,e.getMessageAndLocation()); else throw new XPathException(XPathException.INVALID_EXPRESSION_ERR,e.getMessageAndLocation()); } }
DomXPathExpression(DomDocument doc, String expression, XPathNSResolver resolver) throws XPathException { this.doc = doc; this.resolver = resolver; XPathFactory factory = XPathFactory.newInstance(); XPath xpath = factory.newXPath(); if (resolver != null) { xpath.setNamespaceContext(new DomNSResolverContext(resolver)); } try { this.expression = xpath.compile(expression); } catch (XPathExpressionException e) { throw new XPathException(XPathException.INVALID_EXPRESSION_ERR, e.getMessage ()); } }
/** * <b>DOM</b>: Implements * {@link org.w3c.dom.xpath.XPathEvaluator#evaluate(String,Node,XPathNSResolver,short,Object)}. */ public Object evaluate(String expression, Node contextNode, XPathNSResolver resolver, short type, Object result) throws XPathException, DOMException { XPathExpression xpath = createExpression(expression, resolver); return xpath.evaluate(contextNode, type, result); }
/** * Creates a new XPathExpr object. */ public XPathExpr(String expr, XPathNSResolver res) throws DOMException, XPathException { resolver = res; prefixResolver = new NSPrefixResolver(); try { xpath = new XPath(expr, null, prefixResolver, XPath.SELECT); context = new XPathContext(); } catch (javax.xml.transform.TransformerException te) { throw createXPathException (XPathException.INVALID_EXPRESSION_ERR, "xpath.invalid.expression", new Object[] { expr, te.getMessage() }); } }
public Object evaluate(String expression, Node contextNode, XPathNSResolver resolver, short type, Object result) throws XPathException, DOMException { XPathExpression xpe = new DomXPathExpression(this, expression, resolver); return xpe.evaluate(contextNode, type, result); }
@Override public final native XPathExpression createExpression(String expression, XPathNSResolver resolver) throws XPathException, DOMException /*-{ try { return this.createExpression(expression, resolver); } catch (e) { @com.github.xose.xml.xpath.gwt.XPathExceptionUtil::raise(*)(e); } }-*/;
@Override public final native Object evaluate(String expression, Node contextNode, XPathNSResolver resolver, short type, Object result) throws XPathException, DOMException /*-{ try { return this.evaluate(expression, contextNode, resolver, type, result); } catch (e) { @com.github.xose.xml.xpath.gwt.XPathExceptionUtil::raise(*)(e); } }-*/;
/** * <b>DOM</b>: Implements * {@link org.w3c.dom.xpath.XPathEvaluator#createExpression(String,XPathNSResolver)}. */ public XPathExpression createExpression(String expression, XPathNSResolver resolver) throws DOMException, XPathException { return new XPathExpr(expression, resolver); }
GnomeXPathExpression (GnomeDocument doc, String expression, XPathNSResolver resolver) { expr = init (expression); // TODO resolver }
public XPathExpression createExpression(String expression, XPathNSResolver resolver) throws XPathException, DOMException { return new GnomeXPathExpression(this, expression, resolver); }
public XPathNSResolver createNSResolver(Node nodeResolver) { return new GnomeXPathNSResolver(nodeResolver); }
public native Object evaluate(String expression, Node contextNode, XPathNSResolver resolver, short type, Object result) throws XPathException, DOMException;
public XPathExpression createExpression(String expression, XPathNSResolver resolver) throws XPathException, DOMException { return new DomXPathExpression(this, expression, resolver); }
public XPathNSResolver createNSResolver(Node nodeResolver) { return new DomXPathNSResolver(nodeResolver); }
DomNSResolverContext(XPathNSResolver resolver) { this.resolver = resolver; }