powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSD: опциональные и обязательные элементы
7 сообщений из 7, страница 1 из 1
XSD: опциональные и обязательные элементы
    #35956758
Фотография unique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток,

есть XML следуещего содержания:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<?xml version="1.0" encoding="UTF-8"?>
<tagesErfassung>
  <kennZahlen>
    <kennZahl>
      <kontraktKennzahlNr> 2008 </kontraktKennzahlNr>
      <kontraktKennzahlBezeichnung>Text</kontraktKennzahlBezeichnung>
    </kennZahl>
  </kennZahlen>
</tagesErfassung>

<kontraktKennzahlNr> и <kontraktKennzahlBezeichnung> один из этих тегов должен присутствовать второй опционален. Как этого можно добиться в xsd схеме?



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="tagesErfassung">
		<xs:complexType>
			<xs:all>
				<xs:element name="kennZahlen" type="kennZahlenType"/>
			</xs:all>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="kennZahlenType">
		<xs:sequence>
			<xs:element name="kennZahl" maxOccurs="unbounded">
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="kennZahlType"/>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="kennZahlType">
		<xs:sequence>
			<xs:group ref="kennZahlGroup"/>
		</xs:sequence>
	</xs:complexType>

	<xs:group name="kennZahlGroup">
		<xs:choice>
			<xs:group ref="kontraktKennzahlAnd"/>
			<xs:group ref="kontraktKennzahlOr"/>
		</xs:choice>
	</xs:group>
	<xs:group name="kontraktKennzahlOr">
		<xs:choice>
			<xs:element ref="kontraktKennzahlNr"/>
			<xs:element ref="kontraktKennzahlBezeichnung"/>
		</xs:choice>
	</xs:group>
	<xs:group name="kontraktKennzahlAnd">
		<xs:all>
			<xs:element ref="kontraktKennzahlNr"/>
			<xs:element ref="kontraktKennzahlBezeichnung"/>
		</xs:all>
	</xs:group>
	<xs:element name="kontraktKennzahlNr">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:minLength value="1"/>
				<xs:maxLength value="10"/>
				<xs:whiteSpace value="collapse"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="kontraktKennzahlBezeichnung">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:minLength value="1"/>
				<xs:maxLength value="64"/>
				<xs:whiteSpace value="collapse"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
</xs:schema>


парсер ругается: An 'all' model group is neither allowed in complex type definition 'kennZahlType' nor in its extension '{anonymous}'.

Пните пожалуйста в правильном направлении.

Каждый сходит с ума по своему
...
Рейтинг: 0 / 0
XSD: опциональные и обязательные элементы
    #35956787
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при конструировании xsd когда выбираешь элемент соеденение выбирай не all,sequence а chioce
...
Рейтинг: 0 / 0
XSD: опциональные и обязательные элементы
    #35956802
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри глупость сморозила.

вопрос. А почему у тебя нет корневого элемента типа root?
...
Рейтинг: 0 / 0
XSD: опциональные и обязательные элементы
    #35956828
Фотография unique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kallandor,

Тогда будет не то что надо. Вообщем что необходимо. Есть
Код: plaintext
1.
2.
3.
4.
5.
6.
<рут>
 <группа>
  <пункт1></пункт1>
  <пункт2></пункт2>
  <пункт3></пункт3>
 </группа>
</рут>
В элементе группа должен быть минимум один из элементов пункт и максимум все три элемента пункт.
...
Рейтинг: 0 / 0
XSD: опциональные и обязательные элементы
    #35956831
Фотография unique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kallandor,

есть. <tagesErfassung>
...
Рейтинг: 0 / 0
XSD: опциональные и обязательные элементы
    #35957238
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача интересная, и вроде как бы решения не имеет.

Можете попробовать как-то так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
	<xs:complexType name="kennZahlenType">
		<xs:sequence>
			<xs:element name="kennZahl" type="kennZahlType" maxOccurs="unbounded">
				<xs:key name="key">
					<xs:selector xpath="*"/>
					<xs:field xpath="."/>
				</xs:key>
			</xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="kennZahlType">
		<xs:all>
			<xs:element ref="kontraktKennzahlNr" minOccurs="0"/>
			<xs:element ref="kontraktKennzahlBezeichnung" minOccurs="0"/>
		</xs:all>
	</xs:complexType>
но у меня не получилось.

С уважением, Vasilisk
...
Рейтинг: 0 / 0
XSD: опциональные и обязательные элементы
    #35957872
Фотография unique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Спасибо. Помучаюсь ещё. Если получится то отпишусь.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSD: опциональные и обязательные элементы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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