Olivier,

As Gareth mentioned in your JIRA post, what's happening is that the <report> and <account_number> elements are still bound to the "http://www.mydomain.com/report"; namespace, even though they are not using a namespace prefix. Your XML is using a declared default namespace of "http://www.mydomain.com/report";.

Therefore your XPath query will not return anything because it is asking for <report> and <account_number> elements that are in no namespace (because you haven't defined a namespace context), but your input XML only contains elements in the "http://www.mydomain.com/report"; namespace.

If you can't control your input XML, then you need to set your namespace context so that the XPath query knows you are looking for <report> and <account_number> in the "http://www.mydomain.com/report"; namespace. These pages should provide good instructions and hints:

http://xml.apache.org/xalan-j/xpath_apis.html#namespacecontext
http://www.edankert.com/defaultnamespaces.html

Good luck,
Nathan

Olivier Roger wrote:
Hi, I am having difficulties to use XPath query on a XML dataset having its root element with an *xmlns attribute with no prefix*. In that specific case, the XPath query does not return the value. Since I have no prefix for the namespace I simply can get the value. It this a known issue or am I simply doing something wrong ? Here is my XML : {noformat:title=default-ns.xml} <?xml version="1.0" encoding="UTF-8"?> <report xmlns="http://www.mydomain.com/report";> <account_number>123</account_number> </report> {noformat}
Here is my test method:

{code} @Test public void xPathDefaultNS() throws XPathExpressionException { javax.xml.xpath.XPathFactory factory = javax.xml.xpath.XPathFactory.newInstance(); javax.xml.xpath.XPath xpath = factory.newXPath(); javax.xml.xpath.XPathExpression expression = xpath.compile("/report/account_number"); String result = expression.evaluate(new org.xml.sax.InputSource(this.getClass().getResourceAsStream("default-ns.xml"))); Assert.assertTrue("123".equals(result)); } {code}

From what Gareth responded on the Jira issue
(https://issues.apache.org/jira/browse/XALANJ-2549) there seems to be a
missing step (resolving the namespace). How I that done exactly ?

--
Nathan Nadeau
n...@gleim.com
Software Development
Gleim Publications, Inc.
http://www.gleim.com

Reply via email to