powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSD->Уникальность пары значений аттрибутов элементов предка и потомка
3 сообщений из 3, страница 1 из 1
XSD->Уникальность пары значений аттрибутов элементов предка и потомка
    #35615246
Roman Necheporenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, моих знаний в области проверки валидности XML явно не хватает, подскажите пожалуйста возможно ли следующее:
Для следующего XML-документа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<root>
  <Sources>
    <Source ID="S1">
      <Output>
        <item ID="1" name="n1" />
        <item ID="2" name="n2"  />
      </Output>
    </Source>
    <Source ID="S2">
      <Output>
        <item ID="1" name="n4" />
        <item ID="2" name="n5"/>
      </Output>
    </Source>
  </Sources>
</root>
Необходимо обеспечить уникальность значения для атрибута ID элемента item, но только внутри элемента Output у элемента Source. Следующая схема обеспечивает уникальность значения для атрибута ID элемента item для всех элементов Source:
Код: 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.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Sources">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Source" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Output">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element maxOccurs="unbounded" name="item" type="itemType"/>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="ID" type="xs:NCName"/>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
    <xs:unique name="uniqueID">
      <xs:selector xpath="Sources/Source/Output/item"/>
      <xs:field xpath="@ID"/>
    </xs:unique>
  </xs:element>
  <xs:complexType  name="itemType">
    <xs:attribute name="id" type="xs:unsignedByte" use="required" />
    <xs:attribute name="name" type="xs:string" use="required" />
  </xs:complexType>
</xs:schema>
что делает выше указаный XML-документ не валидным
...
Рейтинг: 0 / 0
XSD->Уникальность пары значений аттрибутов элементов предка и потомка
    #35615688
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman NecheporenkoНеобходимо обеспечить уникальность значения для атрибута ID элемента item, но только внутри элемента Output у элемента Source. Следующая схема обеспечивает уникальность значения для атрибута ID элемента item для всех элементов Source:
Ну так и перенесите <xsd:unique> Из Sources в Source
...
Рейтинг: 0 / 0
XSD->Уникальность пары значений аттрибутов элементов предка и потомка
    #35615962
Roman Necheporenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы наверно хотели сказать, что нужно перенести xs:unique из root в Source

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


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