xmlhack.ru XML-форумы
Обсуждение XML и связанных с ним технологий

Как указать в DTD что последовательность тегов не важна ?


Автор Сообщение
alex79
Гость




[13932] Пт Июл 24, 2009 20:49
Как указать в DTD что последовательность тегов не важна ?
Имеется много XML файлов.
Но, файлы генерировались разными программами (без DTD),
и централизованно разбирались простым парсером (на PHP, тоже без DTD)
без анализа последовательности тегов.

для <address>
иногда присылали city,street,building,flat
а иногда flat,building,street,city
и вообще не предсказуемо (но XML корректно, теги открываются-закрываются, не пересекаются)

Сейчас необходимо сделать валидацию, везде проверить аттрибуты.
Последовательность тегов по прежнему не важна.
Сам решил не писать. Скачал SP (James Clark). Пишу DTD.

<!ELEMENT address (city,street,building,flat) >

Вопросы:
1)
Собственно Subj.
Может я что по DTD недочитал ?
Подскажите как это пишется.
(если не перечислять все комбинации)

2)
начал читать XML Schema.
Добрался до complexType mixed="true"
Это оно ?
Если да, с DTD это согласуется как-то ?
olpa
Любитель

Зарегистрирован: 23.04.2002
Сообщения: 981
Откуда: Санкт-Петербург
Посетить сайт автора
[13933] Сб Июл 25, 2009 06:58

SP -- это в основном для SGML, не для XML. Лучше использовать родные XML-утилиты. Например, libxml.

Цитата:

Как указать в DTD что последовательность тегов не важна ?


Вроде бы никак.
Vasilisk
Наставник

Зарегистрирован: 17.05.2006
Сообщения: 370
Откуда: Украина, Харьков
[13935] Вс Июл 26, 2009 20:21

DTD принципиально? Может использовать XSD?
_________________
С уважением Vasilisk
Уважайте читающих, используйте тэги [code ][/code]
alex79
Гость




[13943] Вт Июл 28, 2009 13:25

olpa писал(а):

SP -- это в основном для SGML, не для XML. Лучше использовать родные XML-утилиты. Например, libxml.


ok, спасибо, скачал, хотя что nsgmls что xmllint, все равно не указать произвольную последовательность в DTD Sad

работат это:

Код:

<!ELEMENT address (city|street|building|flat)+ >


но теперь теги стали не обязательные Sad

Vasilisk писал(а):

DTD принципиально? Может использовать XSD?


Не принципиально.

Сейчас пытыюсь сделать валидацию на XML Schema с помощью xmllint

Пока не понял как записать произвользую последовательность в xsd.

Код:

complexType mixed="true"


оказалось не из той оперы. Это теги мешать с текстом,
но последовательность тегов важна.

Подскажите как указать произвольную последовательность тегов в XML Schema ?
Vasilisk
Наставник

Зарегистрирован: 17.05.2006
Сообщения: 370
Откуда: Украина, Харьков
[13945] Вт Июл 28, 2009 21:44

<xsd:all>
_________________
С уважением Vasilisk
Уважайте читающих, используйте тэги [code ][/code]
alex79
Гость




[13946] Ср Июл 29, 2009 11:10

Vasilisk писал(а):

<xsd:all>


Cпасибо! Работает.