Reputation: 41
I am looking for a library for XPath 2.0 c++ minGW.
libXML2 only supports 1.1. Saxon doesn't run under minGW.
Upvotes: 0
Views: 180
Reputation: 41
In the original post I stated that SaxonC is not running under minGW and Qt6. This is not completely correct. After playing around I got it going:
Adding to the .pro file:
INCLUDEPATH += $$PWD/pathTo/libsaxon-HEC-windows-amd64-v12.4.2
LIBS += -L$$PWD/pathTo/libsaxon-HEC-windows-amd64-v12.4.2\libs\win
LIBS += -llibsaxon-hec-12.4.2
SOURCES += \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/DocumentBuilder.cpp \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/SaxonApiException.cpp \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/SaxonCGlue.c \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/SaxonCProcessor.c \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/SaxonCXPath.c \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/SaxonProcessor.cpp \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/SchemaValidator.cpp \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XPathProcessor.cpp \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XQueryProcessor.cpp \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XdmArray.cpp \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XdmAtomicValue.cpp \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XdmFunctionItem.cpp \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XdmItem.cpp \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XdmMap.cpp \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XdmNode.cpp \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XdmValue.cpp \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/Xslt30Processor.cpp \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XsltExecutable.cpp \
HEADERS += \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/DocumentBuilder.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/SaxonApiException.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/SaxonCGlue.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/SaxonCProcessor.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/SaxonCXPath.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/SaxonProcessor.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/SchemaValidator.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XPathProcessor.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XQueryProcessor.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XdmArray.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XdmAtomicValue.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XdmFunctionItem.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XdmItem.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XdmMap.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XdmNode.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XdmValue.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/Xslt30Processor.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/XsltExecutable.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/graalvm/graal_isolate.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/graalvm/graal_isolate_dynamic.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/graalvm/libsaxon-hec-12.4.2.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/graalvm/libsaxon-hec-12.4.2_dynamic.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/libsaxon-hec-12.4.2.h \
../Shared_External/libsaxon-HEC-windows-amd64-v12.4.2/Saxon.C.API/libsaxon-hec-12.4.2_dynamic.h \
Now I was able to compile. With this code I am now able to do what I need
QString xml = m_document.toString(1);
QString xslFilename = "path/xslFilename.xsl";
SaxonProcessor* saxonProcessor = new SaxonProcessor();
Xslt30Processor* xslt30Processor = saxonProcessor->newXslt30Processor();
DocumentBuilder* documentBuilder = saxonProcessor->newDocumentBuilder();
XdmNode* xdmNodeDocument = documentBuilder->parseXmlFromString(xml.toStdString().c_str());
QString partId = "<partid>";
partId.append(ProjectManager::instance()->selectedBase()->properties()->namedProperty("id")->value().toString());
partId.append("</partid>");
XdmNode* xdmNodeParam = documentBuilder->parseXmlFromString(partId.toStdString().c_str());
XdmValue* xdmValue = (XdmValue*)xdmNodeParam;
xslt30Processor->setParameter("partId", xdmValue);
xslt30Processor->setXsltLanguageVersion("3.0");
XsltExecutable* xsltExecutable = xslt30Processor->compileFromFile(xslFilename.toStdString().c_str());
return xsltExecutable->transformToString(xdmNodeDocument);
Upvotes: 2
Reputation: 7287
saxon-c runs under MinGW-w64: https://www.saxonica.com/html/saxon-c/
it claims to support XPath 3.1
Upvotes: 1