Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как валидировать xml без учёта порядка элементов с помощю схемы / 8 сообщений из 8, страница 1 из 1
06.01.2006, 13:05
    #33470193
Как валидировать xml без учёта порядка элементов с помощю схемы
Есть такой тип dialogType в xml схме
.....
<xs:complexType name="dialogType">
<xs:sequence>
<xs:element name="static" type="staticType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="buttons" type="buttonsType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="table" type="tableType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="operations" type="operationsType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string"/>
<xs:attribute name="caption" type="xs:string"/>
</xs:complexType>
...
Но в данном случае происходит учёт порядка элементов т.е. сперва д.б. staticType, потом, buttonsType, tableType, operations.
В действительности порядок элементов в xml может меняться.
Что для этого нужно изменить в схеме.
...
Рейтинг: 0 / 0
06.01.2006, 16:26
    #33470578
Ay-y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как валидировать xml без учёта порядка элементов с помощю схемы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<xs:complexType name="dialogType">
<xs:all> 
<xs:element name="static" type="staticType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="buttons" type="buttonsType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="table" type="tableType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="operations" type="operationsType" minOccurs="0" maxOccurs="unbounded"/>
</xs:all>
<xs:attribute name="id" type="xs:string"/>
<xs:attribute name="caption" type="xs:string"/>
</xs:complexType>

The <all> indicator указывает что элемент может появляться в любом порядке и только один раз.
...
Рейтинг: 0 / 0
06.01.2006, 18:04
    #33470706
Как валидировать xml без учёта порядка элементов с помощю схемы
Проблема в том, что эти внутренние элементы staticType, потом, buttonsType, tableType, operations могут повторятся не один раз, а на сколько я понял
конструкция all подразумеваетиспользование или 0 или 1.
А может есть ссылочка на переведенную доку по xml-схеме.
Заранее спасибо.
...
Рейтинг: 0 / 0
06.01.2006, 18:35
    #33470732
Ay-y
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как валидировать xml без учёта порядка элементов с помощю схемы
все верно,0 или 1
русскоязычных ссылок у меня нету, английскими могу поделиться.
вам надо попробовать создать элемент dialogType и уже на нем делать maxoccurs,поиграться в обшем.
...
Рейтинг: 0 / 0
06.01.2006, 19:03
    #33470765
Как валидировать xml без учёта порядка элементов с помощю схемы
Не на англиском уже взял.
Спасибо, буду пробывать.
С Рождеством :)
...
Рейтинг: 0 / 0
07.01.2006, 02:37
    #33471020
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как валидировать xml без учёта порядка элементов с помощю схемы
Я пытался решить аналогичную задачу в одном из своих проектов - похоже, это невозможно.
...
Рейтинг: 0 / 0
09.01.2006, 11:45
    #33472444
rrrrrrrrrrr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как валидировать xml без учёта порядка элементов с помощю схемы
так?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<xs:complexType name="dialogType">
<xs:sequence minOccurs="0" maxOccurs="unbounded"> 
<xs:element name="static" type="staticType" minOccurs="0" maxOccurs="1"/>
<xs:element name="buttons" type="buttonsType" minOccurs="0" maxOccurs="1"/>
<xs:element name="table" type="tableType" minOccurs="0" maxOccurs="1"/>
<xs:element name="operations" type="operationsType" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string"/>
<xs:attribute name="caption" type="xs:string"/>
</xs:complexType>
...
Рейтинг: 0 / 0
10.01.2006, 12:11
    #33473826
qu-qu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как валидировать xml без учёта порядка элементов с помощю схемы
rrrrrrrrrrrтак?
Код: plaintext
1.
2.
3.
4.
5.
...
<xs:sequence minOccurs="0" maxOccurs="unbounded"> 
...
</xs:sequence>
...


Скорее, не так, а так:
Код: plaintext
1.
2.
3.
4.
5.
...
<xs:choice minOccurs="1" maxOccurs="unbounded"> 
...
</xs:choice>
...
По крайней мере, порядок следования и количество "валидных" элементов в таком xs:choice -е не имеют значения (лишь бы был хотя бы 1 заведомо существующий). Для большей правдоподобности примера неплохо бы <xs:attribute name="id" type="xs:string"/> заменить на <xs:element name="id" type="xs:string" minOccurs="1" maxOccurs="1"/> и при этом "засунуть" его в указанный xs:choice рядом с остальными "необязательными" елементами, тогда совсем хорошо будет, т.к. вряд ли в реальных задачах будут существовать dialog -и без идентификаторов.

З.Ы. кста, это еще 1 псевдо-аргумент в пользу элементов в извечном споре "elements vs attributes".
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как валидировать xml без учёта порядка элементов с помощю схемы / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]