Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSD->Уникальность пары значений аттрибутов элементов предка и потомка / 3 сообщений из 3, страница 1 из 1
24.10.2008, 17:22
    #35615246
Roman Necheporenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD->Уникальность пары значений аттрибутов элементов предка и потомка
Здравствуйте, моих знаний в области проверки валидности 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
24.10.2008, 23:59
    #35615688
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD->Уникальность пары значений аттрибутов элементов предка и потомка
Roman NecheporenkoНеобходимо обеспечить уникальность значения для атрибута ID элемента item, но только внутри элемента Output у элемента Source. Следующая схема обеспечивает уникальность значения для атрибута ID элемента item для всех элементов Source:
Ну так и перенесите <xsd:unique> Из Sources в Source
...
Рейтинг: 0 / 0
25.10.2008, 15:39
    #35615962
Roman Necheporenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD->Уникальность пары значений аттрибутов элементов предка и потомка
Вы наверно хотели сказать, что нужно перенести xs:unique из root в Source

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


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