Spec-Zone.ru › Qt 5.14

Класс QXmlSchemaValidator

Класс QXmlSchemaValidator валидирует XML-документы-экземпляры по отношению к схеме XML W3C. Подробнее...

Заголовок: #include <QXmlSchemaValidator>
qmake: QT += xmlpatterns
С момента: Qt 4.6

Этот класс был представлен в Qt 4.6.

  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются перевключительно доступными.

Открытые функции

QXmlSchemaValidator(const QXmlSchema &schema)
QXmlSchemaValidator()
~QXmlSchemaValidator()
QAbstractMessageHandler * messageHandler() const
QXmlNamePool namePool() const
QNetworkAccessManager * networkAccessManager() const
QXmlSchema schema() const
void setMessageHandler(QAbstractMessageHandler *handler)
void setNetworkAccessManager(QNetworkAccessManager *manager)
void setSchema(const QXmlSchema &schema)
void setUriResolver(const QAbstractUriResolver *resolver)
const QAbstractUriResolver * uriResolver() const
bool validate(const QUrl &source) const
bool validate(QIODevice *source, const QUrl &documentUri = QUrl()) const
bool validate(const QByteArray &data, const QUrl &documentUri = QUrl()) const

Подробное описание

Класс QXmlSchemaValidator загружает, анализирует XML-документ-экземпляр и валидирует его по отношению к схеме XML W3C, которая была скомпилирована с помощью QXmlSchema.

Следующий пример показывает, как загрузить схему XML из локального файла, проверить, является ли она допустимым XML-документом, и использовать ее для валидации XML-документа-экземпляра:

    QUrl schemaUrl("file:///home/user/schema.xsd");

    QXmlSchema schema;
    schema.load(schemaUrl);

    if (schema.isValid()) {
        QFile file("test.xml");
        file.open(QIODevice::ReadOnly);

        QXmlSchemaValidator validator(schema);
        if (validator.validate(&file, QUrl::fromLocalFile(file.fileName())))
            qDebug() << "instance document is valid";
        else
            qDebug() << "instance document is invalid";
    }

Версия XML-схемы

Этот класс реализует валидацию схемы в соответствии со спецификацией XML Schema 1.0. http://www.w3.org/XML/Schema.

См. также QXmlSchema и Пример валидации XML-схемы.

Документация по функциям-членам

QXmlSchemaValidator::QXmlSchemaValidator(const QXmlSchema &schema)

Создает валидатор схемы, который будет использовать schema для валидации. Если в валидатор передана пустая схема QXmlSchema, схема, используемая для валидации, должна быть указана в XML-документе-экземпляре через атрибут xsi:schemaLocation или xsi:noNamespaceSchemaLocation.

QXmlSchemaValidator::QXmlSchemaValidator()

Создает валидатор схемы. Схема, используемая для валидации, должна быть указана в XML-документе-экземпляре через атрибут xsi:schemaLocation или xsi:noNamespaceSchemaLocation.

QXmlSchemaValidator::~QXmlSchemaValidator()

Удаляет этот QXmlSchemaValidator.

QAbstractMessageHandler *QXmlSchemaValidator::messageHandler() const

Возвращает обработчик сообщений, который обрабатывает сообщения об анализе и валидации для этого QXmlSchemaValidator.

См. также setMessageHandler().

QXmlNamePool QXmlSchemaValidator::namePool() const

Возвращает пул имен, используемый этим QXmlSchemaValidator для построения имен. Обработчика пула имен нет, так как смешивание пулов имен приводит к ошибкам из-за конфликтов имен.

QNetworkAccessManager *QXmlSchemaValidator::networkAccessManager() const

Возвращает менеджер сети или 0, если он не был установлен.

См. также setNetworkAccessManager().

QXmlSchema QXmlSchemaValidator::schema() const

Возвращает схему, используемую для валидации.

См. также setSchema().

void QXmlSchemaValidator::setMessageHandler(QAbstractMessageHandler *handler)

Изменяет обработчик сообщений для этого QXmlSchemaValidator на handler. Валидатор схемы отправляет все сообщения об анализе и валидации этому обработчику сообщений. QXmlSchemaValidator не берет на себя владение handler.

Обычно достаточен обработчик сообщений по умолчанию. Он записывает сообщения об ошибках и валидации в stderr. Обработчик сообщений по умолчанию включает цветовые коды, если stderr может отображать цвета.

Когда QXmlSchemaValidator вызывает QAbstractMessageHandler::message(), аргументы имеют следующий вид:

Аргумент message() Семантика
QtMsgType type Используются только QtWarningMsg и QtFatalMsg. Первый указывает предупреждение, второй — ошибку.
const QString & description XHTML-документ, представляющий фактическое сообщение. Он переводится на текущий язык.
const QUrl &identifier Идентифицирует ошибку с помощью URI, где фрагмент — код ошибки, а остальная часть URI — пространство имен ошибки.
const QSourceLocation & sourceLocation Указывает, где произошла ошибка.

См. также messageHandler().

void QXmlSchemaValidator::setNetworkAccessManager(QNetworkAccessManager *manager)

Устанавливает менеджер сети на manager. QXmlSchemaValidator не берет на себя владение manager.

См. также networkAccessManager().

void QXmlSchemaValidator::setSchema(const QXmlSchema &schema)

Устанавливает schema, которая будет использоваться для дальнейшей валидации. Если схема пуста, схема, используемая для валидации, должна быть указана в XML-документе-экземпляре через атрибут xsi:schemaLocation или xsi:noNamespaceSchemaLocation.

См. также schema().

void QXmlSchemaValidator::setUriResolver(const QAbstractUriResolver *resolver)

Устанавливает разрешитель URI на resolver. QXmlSchemaValidator не берет на себя владение resolver.

См. также uriResolver().

const QAbstractUriResolver *QXmlSchemaValidator::uriResolver() const

Возвращает разрешитель URI схемы. Если разрешитель URI не задан, Qt XML Patterns будет использовать URI в документах-экземплярах как есть.

Разрешитель URI предоставляет уровень абстракции или полиморфные URI. Разрешитель может переписать логические URI на физические или преобразовать устаревшие или недопустимые URI в допустимые.

Когда Qt XML Patterns вызывает QAbstractUriResolver::resolve(), абсолютный URI — это URI, предписанный спецификацией схемы, а относительный URI — URI, указанный пользователем.

См. также setUriResolver().

END_OF_DOCUMENT_MARKER ```

bool QXmlSchemaValidator::validate(const QUrl &source) const

Проверяет XML-документ-экземпляр, прочитанный из source, на соответствие схеме.

Возвращает true если XML-документ-экземпляр соответствует схеме, false в противном случае.

Пример:

    const QXmlSchema schema = getSchema();

    const QUrl url("http://www.schema-example.org/test.xml");

    QXmlSchemaValidator validator(schema);
    if (validator.validate(url))
        qDebug() << "instance document is valid";
    else
        qDebug() << "instance document is invalid";

bool QXmlSchemaValidator::validate(QIODevice *source, const QUrl &documentUri = QUrl()) const

Проверяет XML-документ-экземпляр, прочитанный из source с указанным documentUri, на соответствие схеме.

Возвращает true если XML-документ-экземпляр соответствует схеме, false в противном случае.

Пример:

    const QXmlSchema schema = getSchema();

    QFile file("test.xml");
    file.open(QIODevice::ReadOnly);

    QXmlSchemaValidator validator(schema);
    if (validator.validate(&file, QUrl::fromLocalFile(file.fileName())))
        qDebug() << "instance document is valid";
    else
        qDebug() << "instance document is invalid";

bool QXmlSchemaValidator::validate(const QByteArray &data, const QUrl &documentUri = QUrl()) const

Проверяет XML-документ-экземпляр, прочитанный из data с указанным documentUri, на соответствие схеме.

Возвращает true если XML-документ-экземпляр соответствует схеме, false в противном случае.

Пример:

    const QXmlSchema schema = getSchema();

    QByteArray data("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
                    "<test></test>");

    QBuffer buffer(&data);
    buffer.open(QIODevice::ReadOnly);

    QXmlSchemaValidator validator(schema);
    if (validator.validate(&buffer))
        qDebug() << "instance document is valid";
    else
        qDebug() << "instance document is invalid";

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qxmlschemavalidator.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API