powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSD: любое количество дочерних элементов в любом порядке
4 сообщений из 4, страница 1 из 1
XSD: любое количество дочерних элементов в любом порядке
    #36065645
Duster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В схеме хочется указать, что у элемента "ААА" может быть любое количество дочерних элементов "BBB", "ССС" и "DDD", причем порядок их следования не определен.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<xs:complexType name="AAA" >
	<xs:choice minOccurs="0" maxOccurs="unbounded">
		<xs:element ref="BBB"/>
		<xs:element ref="CCC"/>
		<xs:element ref="DDD"/>
	</xs:choice>
</xs:complexType>
Разрешает появляться любому количеству только одного элемента.

Код: plaintext
1.
2.
3.
4.
5.
	<xs:sequence minOccurs="0" maxOccurs="unbounded">
		<xs:element ref="BBB"/>
		<xs:element ref="CCC"/>
		<xs:element ref="DDD"/>
	</xs:sequence>
не позволит элементам идти в произвольном порядке, а

Код: plaintext
1.
2.
3.
4.
5.
	<xs:all minOccurs="0">
		<xs:element ref="BBB"/>
		<xs:element ref="CCC"/>
		<xs:element ref="DDD"/>
	</xs:all>
не позволяет указать, что элементы могут встречаться много раз.

Как быть? Как определить описание "AAA" так, чтобы например элемент
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<AAA>
     <CCC/>
     <CCC/>
     <DDD/>
     <BBB/>
     <CCC/>
     <DDD/>
</AAA>
был валидным, а элемент
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<AAA>
     <CCC/>
     <CCC/>
     <DDD/>
     <BBB/>
     <CCC/>
     <DDD/>
     <ANY_OTHER_ELEMENT/>
</AAA>

не был?
...
Рейтинг: 0 / 0
XSD: любое количество дочерних элементов в любом порядке
    #36066942
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
	<xs:all>
		<xs:element ref="BBB" minOccurs="0" maxOccurs="unbounded"/>
		<xs:element ref="CCC" minOccurs="0" maxOccurs="unbounded"/>
		<xs:element ref="DDD" minOccurs="0" maxOccurs="unbounded"/>
	</xs:all>
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
XSD: любое количество дочерних элементов в любом порядке
    #36992058
Айкон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
Код: plaintext
1.
2.
3.
4.
5.
	<xs:all>
		<xs:element ref="BBB" minOccurs="0" maxOccurs="unbounded"/>
		<xs:element ref="CCC" minOccurs="0" maxOccurs="unbounded"/>
		<xs:element ref="DDD" minOccurs="0" maxOccurs="unbounded"/>
	</xs:all>


xs:all - не допускает повторов.


Вопрос всё ещё актуален.
...
Рейтинг: 0 / 0
XSD: любое количество дочерних элементов в любом порядке
    #36992071
Айкон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашёл здесь такой ответ:


авторЕсли я правильно понял ваш запрос, вы правы на трек, единственное, что вы упускаете это maxOccurs = "неограниченные" на ваш выбор.

Я создал следующую схему:

<?xml version="1.0"?>
<xs:schema targetNamespace=" http://someNamespace" xmlns=" http://someNamespace" xmlns:xs=" http://www.w3.org/2001/XMLSchema">
<xs:element name="Root" type="Application">
</xs:element>
<xs:complexType name="Application">
<xs:sequence>
<xs:element ref="Name"></xs:element>
<xs:choice maxOccurs="unbounded">
<xs:element ref="ADD"></xs:element>
<xs:element ref="DELETE"></xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:element name="Name"/>
<xs:element name="ADD"/>
<xs:element name="DELETE"/>
</xs:schema>

И это хорошо работает для

<ns0:Root xmlns:ns0=" http://someNamespace">
<ns0:Name />
<ns0:ADD />
<ns0:ADD />
<ns0:DELETE />
<ns0:ADD />
<ns0:DELETE />
<ns0:DELETE />
</ns0:Root>

но не для

<ns0:Root xmlns:ns0=" http://someNamespace">
<ns0:ADD />
<ns0:ADD />
<ns0:DELETE />
<ns0:ADD />
<ns0:DELETE />
<ns0:DELETE />
</ns0:Root>
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSD: любое количество дочерних элементов в любом порядке
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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