XPath query with special char & fails

Friday, 19 August 2016 · 2 messages
MM
Martin Manthey19 Aug 2016 10:29 #

Dear all,

we use BaseX version 7.9

BaseX nodes and the XPath query of the getNodes()-method contains the char "&" and an exception is thrown.

Example:

//File[@originalLocation='E:\data\bugs\prom-9366\file & codemodel']/CopiedLocations/CopiedLocation

If we use JDOM Nodes the query does not fail in this case.

Why JDom can execute this query and BaseX cannot?

Is there a general possibility to avoid this special char in a BaseX query, except masked it, or could it be solved in a higher version of BaseX?

best regards

CG
Christian Grün19 Aug 2016 11:09 #

Hi Martin,

In BaseX, all queries are XQuery expressions. As a consequence, ampersands must always be escaped:

//File[@originalLocation='E:\data\bugs\prom-9366\file & codemodel']/CopiedLocations/CopiedLocation

In more recent versions of BaseX (...later than 7.9...), you can take advantage of the XQuery 3.1 string constructor [1]:

//File[@originalLocation=``[E:\data\bugs\prom-9366\file & codemodel]``]/CopiedLocations/CopiedLocation

Quoted text · Martin Manthey · 3 lines
> If we use JDOM Nodes the query does not fail in this case. > > Why JDom can execute this query and BaseX cannot?

I know too less about JDom, but I assume that it only provides support for basic XPath 1.0 expressions?

Cheers, Christian

[1] http://docs.basex.org/wiki/XQuery_3.1#String_Constructor


⚡Generated with XQuery