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
Written for BaseX 8.5. BaseX may have changed since: please check the current documentation.
⚡Generated with XQuery