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.)

Dependencies (0)

    Dev Dependencies (18)

    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