odk-xpath

0.0.1-beta.0 • Public • Published

Openrosa XForms Evaluator

Wrapper for browsers' XPath evaluator with added support for OpenRosa extensions.

For more info on extended XPath expressions/bindings supported by XForms/OpenRosa/OpenDataKit (ODK) see:

TODO

Check that UUID generation is correct (random? UUID vX?)

Limitations

Any expression made requesting a node-type result will be delegated to the underlying xpath evaluator.

Also, the expression parser is currently very basic and will fail for some xpath expressions. Some examples of expressions that are and are not supported follow.

Supported XPath expressions:

  • /model/instance[1]//*
  • /model/instance[1]/*/meta/*
  • ./author
  • author
  • first.name
  • /bookstore
  • //author
  • author/first-name
  • bookstore//title
  • bookstore/*/title
  • bookstore//book/excerpt//emph
  • .//title
  • author/*
  • book/*/last-name
  • @style
  • price/@exchange
  • price/@exchange/total
  • book[@style]
  • book/@style
  • ./first-name
  • first-name
  • author[1]
  • author[first-name][3]
  • my:book
  • x/y[1]
  • x[1]/y[2]
  • book[excerpt]
  • book[excerpt]/title
  • book[excerpt]/author[degree]
  • book[author/degree]
  • author[degree][award]
  • ancestor::book[1]
  • ancestor::book[author][1]
  • ancestor::author[parent::book][1]
  • */*
  • *[@specialty]
  • @*
  • @my:*
  • my:*
  • author[degree and award]
  • author[(degree or award) and publication]
  • author[degree and not(publication)]
  • author[not(degree or award) and publication]
  • author[. = "Matthew Bob"]
  • author[last-name = "Bob" and ../price > 50]
  • author[not(last-name = "Bob")]
  • author[first-name = "Bob"]
  • author[last-name = "Bob" and first-name = "Joe"]
  • author[* = "Bob"]
  • author[last-name = "Bob"]
  • author[last-name[1] = "Bob"]
  • author[last-name [position()=1]= "Bob"]
  • book[last()]
  • book/author[last()]
  • book[position() <= 3]
  • book[/bookstore/@specialty=@style]
  • degree[position() < 3]
  • degree[@from != "Harvard"]
  • p/text()[2]
  • price[@intl = "Canada"]
  • x/y[position() = 1]
  • (book/author)[last()]
  • (x/y)[1]

Unsupported XPath expressions:

(Add any examples of known-unsupported expressions here and to test/extended-xpath.spec.js.)

Dependents (0)

Package Sidebar

Install

npm i odk-xpath

Weekly Downloads

0

Version

0.0.1-beta.0

License

Apache-2.0

Unpacked Size

139 kB

Total Files

18

Last publish

Collaborators

  • vimagox