xpath-ts2
Version:
DOM 3 and 4 XPath 1.0 implementation for browser and Node.js environment with support for typescript 5.
70 lines (55 loc) • 1.85 kB
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:
```typescript
const evaluator = xpath.parse('/bk:book/hp:characters');
const 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:
```typescript
const evaluator = xpath.parse('/bk:book/hp:characters');
const characters = evaluator.select({
node: myBookNode,
namespaces(prefix: string) {
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:
```typescript
const evaluator = xpath.parse('/bk:book/hp:characters');
const characters = evaluator.select({
node: myBookNode,
namespaces: {
getNamespace(prefix: string) {
if (prefix === 'bk') {
return 'http://sample.org/books/';
}
if (prefix === 'hp') {
return 'http://sample.org/books/';
}
}
}
});
```