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

есть 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
27.04.2009, 17:52
    #35956787
Kallandor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD: опциональные и обязательные элементы
при конструировании xsd когда выбираешь элемент соеденение выбирай не all,sequence а chioce
...
Рейтинг: 0 / 0
27.04.2009, 17:56
    #35956802
Kallandor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD: опциональные и обязательные элементы
сорри глупость сморозила.

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

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

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

Можете попробовать как-то так
Код: 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
28.04.2009, 11:19
    #35957872
unique
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD: опциональные и обязательные элементы
_Vasilisk_,

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


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