aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/ApiExtractor/xmlutils.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2019-04-18 12:41:14 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2019-04-25 11:53:15 +0000
commit21077bec48f2ca16ec0fed25e0c0af62317606d9 (patch)
tree8f3e8e6c636ce96c7385745a8b15959c01de426e /sources/shiboken2/ApiExtractor/xmlutils.cpp
parente336872828de86146059de0f62ed06afaaf64d8d (diff)
shiboken2: Enable documentation generation with libxml2/libxslt
As QtXmlPatterns is deprecated in Qt 5.14, the documentation build needs to be changed to work with libxml2/libxslt exclusively. Split the XML functionality into separate files for libxslt and Qt and provide an interface for XPATH queries and XSLT transformations in xmlutils.h. Adapt testmodifydocumentation to work on temporary files as libxslt cannot handle Qt resources. Change-Id: I923f5b2e7c1d2511f15788e4b80c7721daeb2bc3 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/shiboken2/ApiExtractor/xmlutils.cpp')
-rw-r--r--sources/shiboken2/ApiExtractor/xmlutils.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/sources/shiboken2/ApiExtractor/xmlutils.cpp b/sources/shiboken2/ApiExtractor/xmlutils.cpp
new file mode 100644
index 000000000..a179412a7
--- /dev/null
+++ b/sources/shiboken2/ApiExtractor/xmlutils.cpp
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt for Python.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "xmlutils.h"
+
+#include "xmlutils_qt.h"
+#include "xmlutils_libxslt.h"
+
+XQuery::XQuery() = default;
+
+XQuery::~XQuery() = default;
+
+QString XQuery::evaluate(QString xPathExpression, QString *errorMessage)
+{
+ // XQuery can't have invalid XML characters
+ xPathExpression.replace(QLatin1Char('&'), QLatin1String("&amp;"));
+ xPathExpression.replace(QLatin1Char('<'), QLatin1String("&lt;"));
+ return doEvaluate(xPathExpression, errorMessage);
+}
+
+QSharedPointer<XQuery> XQuery::create(const QString &focus, QString *errorMessage)
+{
+#if defined(HAVE_LIBXSLT)
+ return libXml_createXQuery(focus, errorMessage);
+#elif defined(HAVE_QTXMLPATTERNS)
+ return qt_createXQuery(focus, errorMessage);
+#else
+ *errorMessage = QLatin1String(__FUNCTION__) + QLatin1String(" is not implemented.");
+ return QSharedPointer<XQuery>();
+#endif
+}
+
+QString xsl_transform(const QString &xml, const QString &xsl, QString *errorMessage)
+{
+#if defined(HAVE_LIBXSLT)
+ return libXslt_transform(xml, xsl, errorMessage);
+#elif defined(HAVE_QTXMLPATTERNS)
+ return qt_xsl_transform(xml, xsl, errorMessage);
+#else
+ *errorMessage = QLatin1String(__FUNCTION__) + QLatin1String(" is not implemented.");
+ return xml;
+#endif
+}