summaryrefslogtreecommitdiffstats
path: root/src/xmlpatterns/api/qxmlschemavalidator.cpp
diff options
context:
space:
mode:
authorTobias Koenig <tokoe@kde.org>2009-05-16 10:30:25 (GMT)
committerTobias Koenig <tokoe@kde.org>2009-05-16 10:30:25 (GMT)
commit456463169c6d00b9938f0d975dbd7f398edea39d (patch)
tree13c1b245cffa15828ef1b12ac24c271c301221f2 /src/xmlpatterns/api/qxmlschemavalidator.cpp
parent135a028d9dc9a28a0a072665a7dc43b7e9e187be (diff)
downloadQt-456463169c6d00b9938f0d975dbd7f398edea39d.zip
Qt-456463169c6d00b9938f0d975dbd7f398edea39d.tar.gz
Qt-456463169c6d00b9938f0d975dbd7f398edea39d.tar.bz2
Various api, documentation and code cleanups
Diffstat (limited to 'src/xmlpatterns/api/qxmlschemavalidator.cpp')
-rw-r--r--src/xmlpatterns/api/qxmlschemavalidator.cpp38
1 files changed, 29 insertions, 9 deletions
diff --git a/src/xmlpatterns/api/qxmlschemavalidator.cpp b/src/xmlpatterns/api/qxmlschemavalidator.cpp
index aa80537..fcde49c 100644
--- a/src/xmlpatterns/api/qxmlschemavalidator.cpp
+++ b/src/xmlpatterns/api/qxmlschemavalidator.cpp
@@ -27,7 +27,7 @@
\brief The QXmlSchemaValidator class validates XML instance documents against a W3C XML Schema.
\reentrant
- \since 4.X
+ \since 4.6
\ingroup xml-tools
The QXmlSchemaValidator class loads, parses an XML instance document and validates it
@@ -35,6 +35,16 @@
*/
/*!
+ Constructs a schema validator.
+ The schema used for validation must be referenced in the XML instance document
+ via the xsi:schemaLocation attribute.
+ */
+QXmlSchemaValidator::QXmlSchemaValidator()
+ : d(new QXmlSchemaValidatorPrivate(QXmlSchema()))
+{
+}
+
+/*!
Constructs a schema validator that will use \a schema for validation.
*/
QXmlSchemaValidator::QXmlSchemaValidator(const QXmlSchema &schema)
@@ -65,7 +75,7 @@ void QXmlSchemaValidator::setSchema(const QXmlSchema &schema)
Returns \c true if the XML instance document is valid according the
schema, \c false otherwise.
*/
-bool QXmlSchemaValidator::validate(const QByteArray &data, const QUrl &documentUri)
+bool QXmlSchemaValidator::validate(const QByteArray &data, const QUrl &documentUri) const
{
QByteArray localData(data);
@@ -81,7 +91,7 @@ bool QXmlSchemaValidator::validate(const QByteArray &data, const QUrl &documentU
Returns \c true if the XML instance document is valid according the
schema, \c false otherwise.
*/
-bool QXmlSchemaValidator::validate(const QUrl &source)
+bool QXmlSchemaValidator::validate(const QUrl &source) const
{
d->m_context->setMessageHandler(messageHandler());
d->m_context->setUriResolver(uriResolver());
@@ -102,7 +112,7 @@ bool QXmlSchemaValidator::validate(const QUrl &source)
Returns \c true if the XML instance document is valid according the
schema, \c false otherwise.
*/
-bool QXmlSchemaValidator::validate(QIODevice *source, const QUrl &documentUri)
+bool QXmlSchemaValidator::validate(QIODevice *source, const QUrl &documentUri) const
{
if (!source) {
qWarning("A null QIODevice pointer cannot be passed.");
@@ -114,6 +124,8 @@ bool QXmlSchemaValidator::validate(QIODevice *source, const QUrl &documentUri)
return false;
}
+ const QUrl normalizedUri = QPatternist::XPathHelper::normalizeQueryURI(documentUri);
+
d->m_context->setMessageHandler(messageHandler());
d->m_context->setUriResolver(uriResolver());
d->m_context->setNetworkAccessManager(networkAccessManager());
@@ -125,7 +137,7 @@ bool QXmlSchemaValidator::validate(QIODevice *source, const QUrl &documentUri)
QPatternist::Item item;
try {
- item = loader.openDocument(source, documentUri, d->m_context);
+ item = loader.openDocument(source, normalizedUri, d->m_context);
} catch (QPatternist::Exception exception) {
return false;
}
@@ -135,7 +147,7 @@ bool QXmlSchemaValidator::validate(QIODevice *source, const QUrl &documentUri)
QPatternist::XsdValidatedXmlNodeModel *validatedModel = new QPatternist::XsdValidatedXmlNodeModel(model);
- QPatternist::XsdValidatingInstanceReader reader(validatedModel, documentUri, d->m_context);
+ QPatternist::XsdValidatingInstanceReader reader(validatedModel, normalizedUri, d->m_context);
if (d->m_schema)
reader.addSchema(d->m_schema, d->m_schemaDocumentUri);
try {
@@ -158,6 +170,14 @@ QXmlNamePool QXmlSchemaValidator::namePool() const
}
/*!
+ Returns the schema that is used for validation.
+ */
+QXmlSchema QXmlSchemaValidator::schema() const
+{
+ return d->m_originalSchema;
+}
+
+/*!
Changes the \l {QAbstractMessageHandler}{message handler} for this
QXmlSchemaValidator to \a handler. The schema validator sends all parsing and
validation messages to this message handler. QXmlSchemaValidator does not take
@@ -215,14 +235,14 @@ QAbstractMessageHandler *QXmlSchemaValidator::messageHandler() const
\sa uriResolver()
*/
-void QXmlSchemaValidator::setUriResolver(QAbstractUriResolver *resolver)
+void QXmlSchemaValidator::setUriResolver(const QAbstractUriResolver *resolver)
{
d->m_uriResolver = resolver;
}
/*!
Returns the schema's URI resolver. If no URI resolver has been set,
- QtXmlPatterns will use the URIs in queries as they are.
+ QtXmlPatterns will use the URIs in instance documents as they are.
The URI resolver provides a level of abstraction, or \e{polymorphic
URIs}. A resolver can rewrite \e{logical} URIs to physical ones, or
@@ -234,7 +254,7 @@ void QXmlSchemaValidator::setUriResolver(QAbstractUriResolver *resolver)
\sa setUriResolver()
*/
-QAbstractUriResolver *QXmlSchemaValidator::uriResolver() const
+const QAbstractUriResolver *QXmlSchemaValidator::uriResolver() const
{
return d->m_uriResolver;
}