XQuery IntelliJ Plugin 1.3

10 Nov 2018

  1. Added support for the eXist-db XQuery database.
  2. Initial support for running queries on the BaseX, eXist-db, MarkLogic and Saxon XQuery processors.
  3. Support for Saxon 9.9 and BaseX 9.1 syntax extensions (see below).
  4. Support for the BaseX and Saxon built-in functions. Thanks to Bridger Dyson-Smith for adding these.
  5. Improved resolving imported modules, names, and functions (see below).

Saxon Vendor Extensions:

  1. Recognise Saxon UnionType constructs in TypedMapTest sequence types.
  2. Support TupleType constructs with names only, not associated sequence types.
  3. Support Saxon 9.8 simple inline function expressions.
  4. Support Saxon 9.9 orElse and andAlso logical expressions.
  5. Support Saxon 9.9 optional field names for tuples, and extensible tuples.
  6. Support NCName and URIQualifiedName types in the union() syntax.

BaseX Vendor Extensions:

  1. Support the BaseX 9.1 TernaryIfExpr conditional expressions.
  2. Support the BaseX 9.1 ElvisExpr conditional expressions.
  3. Support the BaseX 9.1 if expressions without else branches.

XQuery Working Draft 02 May 2003 and MarkLogic 0.9-ml Support:

  1. Support empty() syntax for empty-sequence().

Invalid Syntax Recovery:

  1. Recover parsing when the CompElemConstructor, CompAttrConstructor, CompPIConstructor, or CompNamespaceConstructor tag name is a StringLiteral.
  2. Recover parsing when a SequenceType is used in a ParenthesizedItemType.

Static Context:

  1. Add the sql namespace to the MarkLogic static context, added in MarkLogic 7.0.
  2. Add support for the BaseX built-in functions and static context. Thanks to Bridger Dyson-Smith for providing the built-in function definitions.
  3. Add support for the Saxon built-in functions and static context. Thanks to Bridger Dyson-Smith for providing the built-in function definitions.
  4. Add support for EXPath and EXQuery module functions used by BaseX and Saxon as built-in functions and importable modules.

Module Import Resolution:

  1. Use project source roots to resolve module import URIs.
  2. Locate built-in definitions from http://-based URILiteral nodes.
  3. Resolve all location URIs in a ModuleImport, not just the first valid location.
  4. Resolve ModuleImport declarations that don’t specify at paths.

EQName Resolution:

  1. Expand NCName-based EQName nodes, using the default element or function namespaces where appropriate.
  2. Resolve EQNames bound to NamespaceDecl declarations.
  3. Resolve EQNames bound to DefaultNamespaceDecl declarations.
  4. Resolve EQNames bound to DirAttributeList attributes.

Function Resolution:

  1. Matching statically-known functions against expanded QNames.
  2. Search the MainModule/LibraryModule prolog for function declarations.

Inspections:

  1. IJVS0001: Report warnings for constructs that require a different XQuery version.