Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
3.2.0
-
None
-
None
Description
The following code:
std::unique_ptr<XercesDOMParser> parser(new XercesDOMParser()); /** init **/ DOMDocument *doc = (*parser).getDocument(); XMLCh* xpathStr=XMLString::transcode("/root/foo[@id=\"123\"]"); DOMElement* root = doc->getDocumentElement(); try { DOMXPathNSResolver* resolver=doc->createNSResolver(root); DOMXPathResult* result=doc->evaluate( xpathStr, root, resolver, DOMXPathResult::ORDERED_NODE_SNAPSHOT_TYPE, NULL); result->release(); resolver->release(); } catch(const DOMXPathException& e) { XERCES_STD_QUALIFIER cerr << "Error:" << XERCES_STD_QUALIFIER endl << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; }
Results in an exception XPath_TokenNotSupported being thrown from XPathScannerForSchema::addToken. The latest being called in XPathScanner::scanExpression.
The XPathScannerForSchema object is created in XercesXPath::parseExpression.
I don't know if this is an unwanted behavior as the XPath expression is valid according to https://www.w3.org/TR/xpath/#path-abbrev or if the XPath parsing ins't fully implemented and this syntax isn't supported yet (therefore this issue should rather be an improvement request). Anyway this is a bit annoying.