| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| <script src="xpath-test-pre.js"></script> |
| </head> |
| <body> |
| <p>This tests that XPath expressions with prefixes work correctly.</p> |
| <div id="console"></div> |
| <script> |
| var xmlString = '<ns:foo xmlns:ns="http://www.example.org" xmlns:foo="urn:foobar"/>'; |
| |
| var doc = (new DOMParser()).parseFromString(xmlString, "text/xml"); |
| var contextNode = doc.documentElement; |
| var nsResolver = document.createNSResolver(contextNode); |
| |
| var expr = doc.createExpression("/ns:foo", nsResolver); |
| var result = expr.evaluate(contextNode, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); |
| checkSnapshot("/ns:foo", result, [doc.documentElement]); |
| |
| var expr = doc.createExpression("/ns:*", nsResolver); |
| var result = expr.evaluate(contextNode, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); |
| checkSnapshot("/ns:*", result, [doc.documentElement]); |
| |
| var expr = doc.createExpression("/foo:*", nsResolver); |
| var result = expr.evaluate(contextNode, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); |
| checkSnapshot("/foo:*", result, []); |
| |
| // Now try a resolver originating from the function |
| var namespaces = { xmpl: "http://www.example.org" }; |
| var mapResolver = function(prefix) { return namespaces[prefix]; }; |
| |
| var expr = doc.createExpression("/xmpl:*", mapResolver); |
| var result = expr.evaluate(contextNode, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); |
| checkSnapshot("/xmpl:*", result, [doc.documentElement]); |
| |
| var evaluator = new XPathEvaluator(); |
| var result = evaluator.evaluate("/xmpl:*", doc, mapResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); |
| checkSnapshot("/xmpl:*", result, [doc.documentElement]); |
| |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |