UNPKG

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
# 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/'; } } } }); ```