Класс QXmlSchema
Класс QXmlSchema предоставляет загрузку и валидацию схемы XML W3C. Подробнее...
| Заголовок: | #include <QXmlSchema> |
| qmake: | QT += xmlpatterns |
| С тех пор: | Qt 4.6 |
Этот класс был представлен в Qt 4.6.
Примечание: Все функции в этом классе являются реентерабельными.
Открытые функции
| QXmlSchema(const QXmlSchema &other) | |
| QXmlSchema() | |
| QXmlSchema & | operator=(const QXmlSchema &other) |
| ~QXmlSchema() | |
| QUrl | documentUri() const |
| bool | isValid() const |
| bool | load(const QUrl &source) |
| bool | load(QIODevice *source, const QUrl &documentUri = QUrl()) |
| bool | load(const QByteArray &data, const QUrl &documentUri = QUrl()) |
| QAbstractMessageHandler * | messageHandler() const |
| QXmlNamePool | namePool() const |
| QNetworkAccessManager * | networkAccessManager() const |
| void | setMessageHandler(QAbstractMessageHandler *handler) |
| void | setNetworkAccessManager(QNetworkAccessManager *manager) |
| void | setUriResolver(const QAbstractUriResolver *resolver) |
| const QAbstractUriResolver * | uriResolver() const |
Подробное описание
Класс QXmlSchema загружает, компилирует и проверяет файлы схем XML W3C, которые могут быть использованы для дальнейшей проверки XML-документов экземпляров с помощью QXmlSchemaValidator.
Следующий пример демонстрирует, как загрузить файл схемы XML из сети и проверить, является ли это допустимым документом схемы:
QUrl url("http://www.schema-example.org/myschema.xsd");
QXmlSchema schema;
if (schema.load(url) == true)
qDebug() << "schema is valid";
else
qDebug() << "schema is invalid"; Версия XML-схемы
Этот класс используется для представления схем, которые соответствуют спецификации XML Schema 1.0 .
См. также QXmlSchemaValidator и Пример валидации XML-схемы.
Документация по членам-функциям
QXmlSchema::QXmlSchema(const QXmlSchema &other)
Создает QXmlSchema, который является копией other. Новый экземпляр будет совместно использовать ресурсы с существующей схемой в максимально возможной степени.
QXmlSchema::QXmlSchema()
Создает недопустимую, пустую схему, которую нельзя использовать, пока не будет вызван load().
QXmlSchema &QXmlSchema::operator=(const QXmlSchema &other)
Копирует ресурсы other в этот экземпляр, совместно используя их в максимально возможной степени.
Эта функция была представлена в Qt 5.4.
QXmlSchema::~QXmlSchema()
Уничтожает эту QXmlSchema.
QUrl QXmlSchema::documentUri() const
Возвращает URI документа схемы или пустой URI, если схема не задана.
bool QXmlSchema::isValid() const
Возвращает true, если эта схема допустима. Примеры недопустимых схем — схемы, содержащие синтаксические ошибки или не соответствующие спецификации XML Schema W3C.
bool QXmlSchema::load(const QUrl &source)
Устанавливает эту QXmlSchema на схему, загруженную из URI source.
Если схема недопустима, возвращается false и поведение неопределено.
Пример:
QUrl url("http://www.schema-example.org/myschema.xsd");
QXmlSchema schema;
if (schema.load(url) == true)
qDebug() << "schema is valid";
else
qDebug() << "schema is invalid"; См. также isValid().
bool QXmlSchema::load(QIODevice *source, const QUrl &documentUri = QUrl())
Устанавливает эту QXmlSchema на схему, прочитанную из устройства source. Устройство должно быть открыто как минимум с QIODevice::ReadOnly.
documentUri представляет схему, полученную из устройства source. Это базовый URI схемы, который используется для разрешения относительных URI, которые появляются в схеме, а также для сообщения об ошибках.
Если source null или не доступен для чтения, или если documentUri не является допустимым URI, поведение неопределено.
Если схема недопустима, возвращается false и поведение неопределено.
Пример:
QFile file("myschema.xsd");
file.open(QIODevice::ReadOnly);
QXmlSchema schema;
schema.load(&file, QUrl::fromLocalFile(file.fileName()));
if (schema.isValid())
qDebug() << "schema is valid";
else
qDebug() << "schema is invalid"; См. также isValid().
bool QXmlSchema::load(const QByteArray &data, const QUrl &documentUri = QUrl())
Устанавливает эту QXmlSchema на схему, прочитанную из data
documentUri представляет схему, полученную из data. Это базовый URI схемы, который используется для разрешения относительных URI, которые появляются в схеме, а также для сообщения об ошибках.
Если documentUri не является допустимым URI, поведение неопределено.
Если схема недопустима, возвращается false и поведение неопределено.
Пример:
QByteArray data( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
"<xsd:schema"
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""
" xmlns=\"http://www.qt-project.org/xmlschematest\""
" targetNamespace=\"http://www.qt-project.org/xmlschematest\""
" version=\"1.0\""
" elementFormDefault=\"qualified\">"
"</xsd:schema>" );
QXmlSchema schema;
schema.load(data);
if (schema.isValid())
qDebug() << "schema is valid";
else
qDebug() << "schema is invalid"; См. также isValid() и isValid().
QAbstractMessageHandler *QXmlSchema::messageHandler() const
Возвращает обработчик сообщений, который обрабатывает сообщения о компиляции и валидации для этой QXmlSchema.
См. также setMessageHandler().
QXmlNamePool QXmlSchema::namePool() const
Возвращает пул имен, используемый этой QXmlSchema для создания имен. Обработчик пула имен отсутствует, поскольку смешивание пулов имен приводит к ошибкам из-за конфликтов имен.
QNetworkAccessManager *QXmlSchema::networkAccessManager() const
Возвращает менеджер сети или 0, если он не был установлен.
См. также setNetworkAccessManager().
void QXmlSchema::setMessageHandler(QAbstractMessageHandler *handler)
Изменяет обработчик сообщений для этой QXmlSchema на handler. Схема отправляет все сообщения о компиляции и валидации этому обработчику сообщений. QXmlSchema не принимает владения handler.
Обычно, стандартный обработчик сообщений является достаточным. Он записывает сообщения компиляции и валидации в stderr. Стандартный обработчик сообщений включает цветовые коды, если stderr может отображать цвета.
Когда QXmlSchema вызывает QAbstractMessageHandler::message(), аргументы следующие:
| message() аргумент | Семантика |
|---|---|
| тип QtMsgType | Используются только QtWarningMsg и QtFatalMsg. Первый идентифицирует предупреждение, а второй — ошибку. |
| const QString & description | Документ XHTML, представляющий фактическое сообщение. Он переводится на текущий язык. |
| const QUrl &identifier | Идентифицирует ошибку с помощью URI, где фрагмент — код ошибки, а остальная часть URI — пространство имен ошибки. |
| const QSourceLocation & sourceLocation | Указывает место возникновения ошибки. |
См. также messageHandler().
void QXmlSchema::setNetworkAccessManager(QNetworkAccessManager *manager)
Устанавливает сетевой менеджер в manager. QXmlSchema не берет на себя владение manager.
См. также networkAccessManager().
void QXmlSchema::setUriResolver(const QAbstractUriResolver *resolver)
Устанавливает разрешитель URI в resolver. QXmlSchema не берет на себя владение resolver.
См. также uriResolver().
const QAbstractUriResolver *QXmlSchema::uriResolver() const
Возвращает разрешитель URI схемы. Если разрешитель URI не задан, Qt XML Patterns будет использовать URI в схемах как есть.
Разрешитель URI обеспечивает уровень абстракции или полиморфные URI. Разрешитель может переписать логические URI на физические или перевести устаревшие или недопустимые URI в допустимые.
Когда Qt XML Patterns вызывает QAbstractUriResolver::resolve(), абсолютный URI — это URI, предписанный спецификацией схемы, а относительный URI — это URI, указанный пользователем.
См. также setUriResolver().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qxmlschema.html