powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSD -> XML с 2-мя разными элементами в произвольной последовательности
5 сообщений из 5, страница 1 из 1
XSD -> XML с 2-мя разными элементами в произвольной последовательности
    #38419598
vova_dva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно получить следующий XML:

<group>
<total></total>
<lines></lines>
...
<lines></lines>
</group>

<group>
<lines></lines>
...
<lines></lines>
<total></total>
</group>

то есть элемент <total> является единственным и обязательным (minOccurs="1" maxOccurs="1"), а элемент <lines> может повторяться сколь угодно раз и не является обязательным (minOccurs="0" maxOccurs="unbounded"). При этом элемент <total> может быть либо перед всеми <lines> либо после них.

Вопрос простой: как написать XSD схему, описывающую такую возможность?
...
Рейтинг: 0 / 0
XSD -> XML с 2-мя разными элементами в произвольной последовательности
    #38421302
Battledwarf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vova_dva ,
сделайте выбор из 2 последовательностей элементов.
Последовательность 1: total, затем коллекция lines
Последовательность 2: коллекция lines, затем total
...
Рейтинг: 0 / 0
XSD -> XML с 2-мя разными элементами в произвольной последовательности
    #38422263
vova_dva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Battledwarf,
к сожалению вот такая конструкция
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
           <xs:element name="group">
                     <xs:complexType>
                                <xs:choice>
                                           <xs:sequence>
                                                     <xs:element name="total" type="decimal_t"/>
                                                     <xs:element name="lines" type="text_t" minOccurs="0" maxOccurs="unbounded"/>
                                           </xs:sequence>
                                           <xs:sequence>
                                                     <xs:element name="lines" type="text_t" minOccurs="0" maxOccurs="unbounded"/>
                                                     <xs:element name="total" type="decimal_t"/>
                                           </xs:sequence>
                                </xs:choice>
                                <xs:attribute name="ALT" type="text_t" use="required"/>
                     </xs:complexType>
           </xs:element>


не работает.

Получаем следующее сообщение
Код: html
1.
cos-nonambiq: <xs:element name="total"> makes the content model non-deterministic against <xs:element name="total">. Possible causes: name equally, overlapping occurrence or substitution groups.


Может быть я где-то не прав. Пожалуйста, подскажите.
Вообще это возможно реализовать???
...
Рейтинг: 0 / 0
XSD -> XML с 2-мя разными элементами в произвольной последовательности
    #38422560
Battledwarf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vova_dva,
не придумал ничего лучше такого:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<xs:element name="group">
<xs:complexType>
	<xs:sequence>
		<xs:element name="lines" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
		<xs:element name="total" type="xs:byte"/>
		<xs:element name="lines" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
	</xs:sequence>
	<xs:attribute name="ALT" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>


Типы элементов и атрибутов заменил на стандартные.
Схема валидна, но позволяет сделать такое:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<group ALT="String" >
	<lines>String</lines>
	<lines>String</lines>
	<lines>String</lines>
	<total>127</total>
	<lines>String</lines>
	<lines>String</lines>
	<lines>String</lines>
</group>


Правда, если Вы собрались формировать файл необходимой структуры, а не получать и обрабатывать, то Вы сможете программно определять, какую коллекцию lines заполнять, до total или после.
...
Рейтинг: 0 / 0
XSD -> XML с 2-мя разными элементами в произвольной последовательности
    #38423860
vova_dva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Battledwarf,
большое спасибо.
Это, пожалуй, наиболее приемлемый для меня вариант.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSD -> XML с 2-мя разными элементами в произвольной последовательности
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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