XPath 3.0 support in MorganaXProc

In addition to XPath 1.0 and 2.0 MorganaXProc now also supports XPath 3.0.

MorganaXProc's implementation of XPath 3.0 supports all features except schema awareness and higher order functions. It has been intensely tested against the test-suite and currently has a conformance of 99.xx%. However please keep in mind that these results are artificial and so please be careful when using the XPath  implementation in a production context.

Known issues:

  • Non-BMP codepoints are currently not supported in fn:format-decimal().
  • There are problems with the lower case representation of the Kelvin Sign (Unicode 8490): fn:lower-case() will not return a 'k' and fn:matches() will not return the correct result when used with flag 'i'.
  • The implementation of fn:analyze-string() currently does not produce the right result for some subtle pattern distinctions: Using the patterns "(b(x?))" and "(b)(x?)" delivers the same result, which is only right for the latter, but not for the former.

Enable XPath 3.0 support:

XPath 2.0 is still used as the default expression language in MorganaXProc. You have to use @xpath-version enable XPath 3.0. To change the default expression language, there is a new configuration option "DefaultXPathVersion" available. For details see here.