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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как проверить соответствие XML DTD диаграмме?  (Прочитано 7497 раз)
ZIkos
Гость
« : Март 08, 2007, 19:27 »

Буду очень благодарен если кто нибудь расскажет как проверить соответствует ли XML документ DTD диаграмме.

Версия 4.2.0.
Записан
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« Ответ #1 : Март 08, 2007, 23:38 »

Ошибка вылезет при вызове QDomDocument::setContent(...)

см. класс QXmlParseException, есть такие сообщения:

- internal general entity reference not allowed in DTD
- external parsed general entity reference not allowed in DTD
Записан
ZIkos
Гость
« Ответ #2 : Март 09, 2007, 16:47 »

Можете поподробней написать как все это делать, если я делай вот так:

QDomDocument doc;
QFile in(fname);
in.open(QIODevice::ReadOnly);
doc.setContent(&in,true);

как мне проверить соответствует xml файл in DTD или нет?


Заранее спасибо.
Записан
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« Ответ #3 : Март 09, 2007, 17:01 »

описать переменные QString errorMsg, int errline, int errcolumn и передавать их адреса функции setContent:

bool setContent ( QIODevice * dev, bool namespaceProcessing, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0 )


errorMsg должен содержать текст, кот. я писал выше

может есть и др. способ, не знаю
Записан
ZIkos
Гость
« Ответ #4 : Март 09, 2007, 17:12 »

setContent(...) на DTD не проверяет. проверяет только лексику.


Кто нибудь еще знает способ как это сделать??? (срочно необходимо)
Записан
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« Ответ #5 : Март 09, 2007, 17:40 »

цитата из мессаги из qt-interest:

QT XML classes are no use for DTD validation at all, even the new QtLibXmlReader in QT Solutions even so it uses libxml2 which does support DTD validation, I wasn't able
to pass the DTD_VALID properties to the xml reader (not supported). So I did write a small class which uses libxml2 and allow DTD as well as Schema validation.
Записан
ZIkos
Гость
« Ответ #6 : Март 11, 2007, 10:58 »

Помогите! Может все таки кто-нибудь знает как это сделать?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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