70 lines
1.8 KiB
Markdown
70 lines
1.8 KiB
Markdown
|
# Namespace Resolvers
|
||
|
|
||
|
The methods on the [XPathEvaluator](XPathEvaluator.md) type can optionally take a namespace resolver to resolve
|
||
|
namespace references in the XPath expression being evaluated.
|
||
|
|
||
|
There are three ways to specify a namespace resolver and you can use any one of them depending on which is
|
||
|
most suited to your particular situation.
|
||
|
|
||
|
## Namespace Resolver Type 1: Plain object
|
||
|
|
||
|
A plain object with namespace prefixes as the keys and namespace URIs as the values:
|
||
|
|
||
|
Example usage:
|
||
|
|
||
|
```js
|
||
|
var evaluator = xpath.parse('/bk:book/hp:characters');
|
||
|
var characters = evaluator.select({
|
||
|
node: myBookNode,
|
||
|
namespaces: {
|
||
|
'bk': 'http://sample.org/books/',
|
||
|
'hp': 'http://sample.org/harrypotter/'
|
||
|
}
|
||
|
});
|
||
|
```
|
||
|
|
||
|
## Namespace Resolver Type 2: Function
|
||
|
|
||
|
A function that takes a namespace prefix as a parameter and returns the corresponding namespace URI.
|
||
|
|
||
|
Example usage:
|
||
|
|
||
|
```js
|
||
|
var evaluator = xpath.parse('/bk:book/hp:characters');
|
||
|
var characters = evaluator.select({
|
||
|
node: myBookNode,
|
||
|
namespaces: function (prefix) {
|
||
|
if (prefix === 'bk') {
|
||
|
return 'http://sample.org/books/';
|
||
|
}
|
||
|
if (prefix === 'hp') {
|
||
|
return 'http://sample.org/books/';
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
```
|
||
|
|
||
|
## Namespace Resolver Type 3: Object with `getNamespace` method
|
||
|
|
||
|
An object with a method named `getNamespace` that works in the same way as the function-based namespace resolver
|
||
|
described above.
|
||
|
|
||
|
Example usage:
|
||
|
|
||
|
```js
|
||
|
var evaluator = xpath.parse('/bk:book/hp:characters');
|
||
|
var characters = evaluator.select({
|
||
|
node: myBookNode,
|
||
|
namespaces: {
|
||
|
getNamespace: function (prefix) {
|
||
|
if (prefix === 'bk') {
|
||
|
return 'http://sample.org/books/';
|
||
|
}
|
||
|
if (prefix === 'hp') {
|
||
|
return 'http://sample.org/books/';
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
```
|