An XPath Parser/Generator for JavaScript using the Jison parser/generator.
See the xpath.html file for a very simple usage for parsing xpath expressions.
First include the libraries and xpath.js and models.js files in your document. Then try the following to get started.
var expr = "/some/xpath/expression"
var parsed = xpath.parse(expr);
var regenerated = parsed.toXPath();
For examples of supported expressions, see the tests!
models.js
provides a default xpathmodels which does not support the hashtag preprocessor. If you want to support hashtags within xpaths, you can use:
hashtagConfig = {
isValidNamespace: function(namespace),
hashtagToXPath: function(hashtag),
toHashtag: function(expr)
}
xPathModels = XPathModels(hashtagConfig)
hashtags use the format #namespace/arbitrarily/long/path
and do not support filtering
- Open
test/tests.html
to run tests (must be serving all files in the library). - Individual tests are found in
test/parserTests.js
andtest/generatorTests.js
- Filter expressions are not supported due to a known bug in jison.
- See the failing tests for examples of expressions that are known not to work.
File | Content |
---|---|
dist/ | contains a browser-ready build of the parser |
src/jison/ | contains the jison parser files. |
src/lib/ | external libraries that the parser depends on. |
src/main.js | the entry point for non-browser users. |
src/models.js | the underlying models used in parsing. |
src/parser.js | the jison built parser file, do not edit manually. |
test/ | qunit tests for the parser and generator. |
This is built using jison. To build the parser file yourself run:
$ npm run build
- This will build both the distribution (browserify
) package in dist/ and rebuild the Jison parser (src/parser.js
) from the src/jison/
files.
$ npm run jison
- Rebuild parser.js
from the Jison specification files.
$ npm run dist
- Rebuild the browser friendly distribution from the current source files.
For more information on jison see the jison project website at: http://zaach.github.com/jison/.