I need to create an XML xPath parser. All parsing has to happen on client side (using javascript). I created an javascript that does this, and everything looks OK until default namespaces come into play. I simply can't query XML that has default namespace.
I created an example code on fiddle. In xmlString is XML string received from server. In xPathString is query done on received XML.
Here are some scenarios:
Note that others will use this parser, so I would really like to avoid solutions like
var xPathString = "//*[local-name()='book']";
and enable them to parse it using simple xPath expressions. I wonder if it is possible to assign default namespace prefix in javascript?
Note: The example provided on fiddle will not work in IE.
I think there are three ways to do this:
//*[local-name()='book']
syntax for accessing nodesThis can be achieved like this:
function nsResolver(prefix) {
switch (prefix) {
case 'xhtml':
return 'http://www.w3.org/1999/xhtml';
case 'mathml':
return 'http://www.w3.org/1998/Math/MathML';
default:
return 'http://example.com/domain';
}
}
xml.evaluate('//myPrefix:book', xml, nsResolver, XPathResult.ANY_TYPE, null);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With