Russian Qt Forum
Май 03, 2024, 17:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QXmlSchema для работы со схемой, содержащей import  (Прочитано 8363 раз)
Maxa
Гость
« : Июль 06, 2016, 10:50 »

Пытаюсь прочитать схему с помощью QXmlSchema.
Если схема не содержит ссылок на другие схемы, то все ОК.
Но при чтении схемы, в которую входит <import ....>? например:
Код:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.company.org"
            xmlns="http://www.company.org"
            elementFormDefault="unqualified"
            xmlns:per="http://www.person.org"
            xmlns:pro="http://www.product.org">
    <xsd:import namespace="http://www.person.org"
                schemaLocation="Person.xsd"/>
    <xsd:import namespace="http://www.product.org"
                schemaLocation="Product.xsd"/>
    <xsd:element name="Company">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Person" type="per:PersonType"
                             maxOccurs="unbounded"/>
                <xsd:element name="Product" type="pro:ProductType"
                             maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>
я получаю ошибки:
Код:
qt.network.ssl: QSslSocket: cannot resolve TLSv1_1_client_method
qt.network.ssl: QSslSocket: cannot resolve TLSv1_2_client_method
qt.network.ssl: QSslSocket: cannot resolve TLSv1_1_server_method
qt.network.ssl: QSslSocket: cannot resolve TLSv1_2_server_method
qt.network.ssl: QSslSocket: cannot resolve SSL_select_next_proto
qt.network.ssl: QSslSocket: cannot resolve SSL_CTX_set_next_proto_select_cb
qt.network.ssl: QSslSocket: cannot resolve SSL_get0_next_proto_negotiated
Schema is invalid
Error XSDError in Person.xsd, at line 1, column 0: Premature end of document.
вот собственно, сам код:
Код:
QString fileXSDSchema = "Company.xsd";

    QFile fileXSD(fileXSDSchema);
    if (fileXSD.open(QIODevice::ReadOnly))
    {

        QXmlSchema schema;

        if (schema.load(&fileXSD,fileXSD.fileName()))
            qDebug() << "Schema is valid";
        else
            qDebug() << "Schema is invalid";
    }
Как прочитать такую "составную" схему?
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #1 : Июль 06, 2016, 11:37 »

Ну так может проблема не в импорте а в самом файле Person.xsd?
Записан
Maxa
Гость
« Ответ #2 : Июль 06, 2016, 17:03 »

Нет, в том то и дело((
Если я считываю отдельно Person.xsd, который не содержит import, то все ок, схема прочитана и признана валидной.
А вот когда читаю "главный" company.xsd, который содержит в себе два import, то выходят такие ошибки.
Я предполагаю, что возможно неверно указан атрибут namespace у import, но не знаю, что указать, так как у меня локальная сеть, и схема лежит на сервере.
Может кто-нибудь делал похожее? Чтоб читаемая схема включала в себя другие? Или придется извернуться и впихнуть все в одну схему самостоятельно?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 23.