From: Vladimir L. <vlo...@op...> - 2010-02-16 18:54:12
|
Hi John, Here is the code: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #include <iostream> #include <xercesc/dom/DOM.hpp> #include <xercesc/framework/StdOutFormatTarget.hpp> #include <xqilla/xqilla-dom3.hpp> XERCES_CPP_NAMESPACE_USE; using namespace std; int main(int argc, char *argv[]) { XQillaPlatformUtils::initialize(); try { DOMImplementation* xqillaImplementation = DOMImplementationRegistry::getDOMImplementation(X("XPath2 3.0")); AutoRelease<DOMLSParser> parser(xqillaImplementation->createLSParser(DOMImplementationLS::MODE_SY NCHRONOUS, 0)); parser->getDomConfig()->setParameter(XMLUni::fgDOMNamespaces, true); parser->getDomConfig()->setParameter(XMLUni::fgXercesSchema, true); parser->getDomConfig()->setParameter(XMLUni::fgDOMValidateIfSchema, true); DOMDocument *document = parser->parseURI("C:\\tempXML\\xqilla.xml"); AutoRelease<DOMXPathNSResolver> resolver(document->createNSResolver(document->getDocumentElement())); const char* expression2 = "/metadata"; AutoRelease<DOMXPathExpression> parsedExpression(document->createExpression(X(expression2), resolver)); AutoRelease<DOMXPathResult> iteratorResult(parsedExpression->evaluate(document->getDocumentElement() , DOMXPathResult::SNAPSHOT_RESULT_TYPE, 0)); XMLSize_t sz = iteratorResult->getSnapshotLength(); assert (sz != 0); } catch(DOMException &e) { cerr << "DOMException: " << UTF8(e.getMessage()) << endl; return 1; } XQillaPlatformUtils::terminate(); return 0; } >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>> You are right that "document uses a namespace, but your XPath expression selects elements that aren't in a namespace.". So question is how to add a namespace to XPath expression select elements? Regards, Vladimir. -----Original Message----- From: John Snelson [mailto:joh...@or...] Sent: February 15, 2010 8:48 To: xqi...@li... Subject: Re: [XQilla-user] Problem using XPATH2 expression on XML document with default namespace. Hi Vladimir, Please give an example of the code you are using. This is likely to be because your XML document uses a namespace, but your XPath expression selects elements that aren't in a namespace. John Vladimir Loubenski wrote: > Hi, > I tried to run XPATH2 expression "/metadata" > on XML document: > > <?xml version='1.0' encoding='utf-8' ?> > <metadata xmlns='urn:DocMan.service.livelink.opentext.com'/> > > > I've got empty DOMXPathResult. > If I remove default namespace from the root node it works like I > expected - return in DOMXPathResult root node. > I used DOM-resolver project for test. > > Any suggestion? > Thanks a lot in advance for any hint. > Best Regards, > Vladimir Loubenski > > > ------------------------------------------------------------------------ ------ > SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, > Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW > http://p.sf.net/sfu/solaris-dev2dev > _______________________________________________ > XQilla-user mailing list > XQi...@li... > https://lists.sourceforge.net/lists/listinfo/xqilla-user -- John Snelson, Oracle Corporation http://snelson.org.uk/john Berkeley DB XML: http://oracle.com/database/berkeley-db/xml XQilla: http://xqilla.sourceforge.net ------------------------------------------------------------------------ ------ SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW http://p.sf.net/sfu/solaris-dev2dev _______________________________________________ XQilla-user mailing list XQi...@li... https://lists.sourceforge.net/lists/listinfo/xqilla-user |