#include <iostream>
#include <xercesc/dom/DOM.hpp>
#include <xercesc/framework/StdOutFormatTarget.hpp>
#include <xqilla/xqilla-dom3.hpp>
XERCES_CPP_NAMESPACE_USE;
int main(int argc, char *argv[]) {
XQillaPlatformUtils::initialize();
DOMImplementation *xqillaImplementation =
DOMImplementationRegistry::getDOMImplementation(X("XPath2 3.0"));
try {
AutoRelease<DOMLSParser> parser(xqillaImplementation->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS, 0));
parser->getDomConfig()->setParameter(XMLUni::fgDOMNamespaces, true);
parser->getDomConfig()->setParameter(XMLUni::fgXercesSchema, true);
parser->getDomConfig()->setParameter(XMLUni::fgDOMValidateIfSchema, true);
DOMDocument *document = parser->parseURI("foo.xml");
if(document == 0) {
std::cerr << "Document not found." << std::endl;
return 1;
}
AutoRelease<DOMXPathExpression> expression(document->createExpression(X("foo/bar/@baz"), 0));
AutoRelease<DOMXPathResult> result(expression->evaluate(document, DOMXPathResult::ITERATOR_RESULT_TYPE, 0));
AutoRelease<DOMLSSerializer> serializer(xqillaImplementation->createLSSerializer());
AutoRelease<DOMLSOutput> output(xqillaImplementation->createLSOutput());
StdOutFormatTarget target;
output->setByteStream(&target);
while(result->iterateNext()) {
serializer->write(result->getNodeValue(), output);
std::cout << std::endl;
}
}
catch(XQillaException &e) {
std::cerr << "XQillaException: " << UTF8(e.getString()) << std::endl;
return 1;
}
XQillaPlatformUtils::terminate();
return 0;
}