powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Элемент <xsd:unique>. Что неправильно?
8 сообщений из 8, страница 1 из 1
Элемент <xsd:unique>. Что неправильно?
    #36984384
zvb73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такая схема
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:od="urn:schemas-microsoft-com:officedata" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="dataroot">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="User_Confirmation">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="ID" type="xs:int" />
              <xs:element minOccurs="0" name="Text" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:unique name="uniqueID">
    <xs:selector xpath="User_Confirmation" />
    <xs:field xpath="@ID" />
  </xs:unique>
</xs:schema>

Видимо в ней ошибка, по крайней мере DataTable::ReadXmlSchema выкидывает исключение.

Без
<xs:unique name="uniqueID">
<xs:selector xpath="User_Confirmation" />
<xs:field xpath="@ID" />
</xs:unique>
всё ОК
...
Рейтинг: 0 / 0
Элемент <xsd:unique>. Что неправильно?
    #36984462
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zvb73,

unique должен быть внутри element
...
Рейтинг: 0 / 0
Элемент <xsd:unique>. Что неправильно?
    #36984479
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выше синтаксическая ошибка. Есть еще логическая - ID описан как узел, а уникальность накладывается на атрибут...
...
Рейтинг: 0 / 0
Элемент <xsd:unique>. Что неправильно?
    #36984487
zvb73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первое понял, спасибо.
Второе нет - из чего видно, что уникальность накладывается на атрибут и как сделать чтобы было на узел?
...
Рейтинг: 0 / 0
Элемент <xsd:unique>. Что неправильно?
    #36984498
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@ID - атрибут
ID - узел
...
Рейтинг: 0 / 0
Элемент <xsd:unique>. Что неправильно?
    #36984557
zvb73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итого

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:od="urn:schemas-microsoft-com:officedata" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="dataroot">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="User_Confirmation">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="ID" type="xs:int" />
              <xs:element minOccurs="0" name="Text" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
          <xs:unique name="uniqueID">
            <xs:selector xpath="User_Confirmation" />
            <xs:field xpath="ID" />
          </xs:unique>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Вроде бы всё хорошо, за исключением того что вот такой хмл воспринимается как правильный

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2010-07-19T11:42:22">
  <User_Confirmation>
    <ID> 41 </ID>
    <Text>qq1</Text>
  </User_Confirmation>
  <User_Confirmation>
    <ID> 42 </ID>
    <Text>qq2</Text>
  </User_Confirmation>
  <User_Confirmation>
    <ID> 42 </ID>
    <Text>qq3</Text>
  </User_Confirmation>
</dataroot>
...
Рейтинг: 0 / 0
Элемент <xsd:unique>. Что неправильно?
    #36984564
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:od="urn:schemas-microsoft-com:officedata" attributeFormDefault="unqualified" elementFormDefault="qualified">
	<xs:element name="dataroot">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" name="User_Confirmation">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="ID" type="xs:int"/>
							<xs:element minOccurs="0" name="Text" type="xs:string"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
		<xs:unique name="uniqueID">
			<xs:selector xpath="User_Confirmation"/>
			<xs:field xpath="ID"/>
		</xs:unique>
	</xs:element>
</xs:schema>
...
Рейтинг: 0 / 0
Элемент <xsd:unique>. Что неправильно?
    #36984645
zvb73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, всё получилось. Большое спасибо
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Элемент <xsd:unique>. Что неправильно?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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