Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xs:unique - ПОМОГИТЕ......... вроде простую вещь хочу... / 4 сообщений из 4, страница 1 из 1
17.12.2009, 16:45
    #36372065
karapetyan_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xs:unique - ПОМОГИТЕ......... вроде простую вещь хочу...
Люди помогите пожалуйста, пол дня мучаюсь, не посылайте подальше, ХМЛ не мой профиль, просто приспичило, а изучать времени нет, просто исправьте мой вариант.

Есть хмл вида :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="model.xsd">
	<model id="m1">
		<field id="f1"/>
		<field id="f2"/>
	</model>
	<model id="m2">
		<field id="f1"/> <!-- можно f1 в пределах  m2 не встречается, несмотря на то, что в  m1 он уже есть -->
		<field id="f3"/>
		<field id="f3"/> <!-- ошибка, f3 в пределах m2 уже есть -->
	</model>
	<model id="m1">  <!-- ошибка m1 уже есть -->
		<field id="f1" />
	</model>
</root>


Как написать к нему схему, чтоб
1. все значения root/model/@id были бы уникальными
2. все значения root/model/field/@id были бы уникальными В ПРЕДЕЛАХ ОДНОЙ МОДЕЛИ!
Поиском пользоваться умею........ нашел....... не понял.......... туплю.......

Вот наваял такую схему:
Код: 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.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="root">
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:element name="model">
					<xs:complexType>
						<xs:sequence maxOccurs="unbounded">
							<xs:element name="field">
								<xs:complexType>
									<xs:attribute name="id" type="xs:NCName" use="required"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
						<xs:attribute name="id" type="xs:NCName" use="required"/>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
		<!-- Вот тут надо исправить, но как??? -->
		<xs:unique name="uniqModel">
			<xs:selector xpath="/root/model/"/>
			<xs:field xpath="@id"/>
		</xs:unique>
		<xs:unique name="uniqField">
			<xs:selector xpath="/root/model/"/>
			<xs:field xpath="@id"/>
			<xs:field xpath="field/@id"/>
		</xs:unique>
	</xs:element>
</xs:schema>


Заранее благодарен. Ашот.
...
Рейтинг: 0 / 0
17.12.2009, 22:15
    #36372666
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xs:unique - ПОМОГИТЕ......... вроде простую вещь хочу...
Код: 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.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence maxOccurs="unbounded">
        <xs:element name="model">
          <xs:complexType>
            <xs:sequence maxOccurs="unbounded">
              <xs:element name="field">
                <xs:complexType>
                  <xs:attribute name="id" type="xs:NCName" use="required"/>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="id" type="xs:NCName" use="required"/>
          </xs:complexType>
          <xs:key name="uniqField">
            <xs:selector xpath="."/>
            <xs:field xpath="@id"/>
          </xs:key>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
    <xs:key name="uniqModel">
      <xs:selector xpath="model"/>
      <xs:field xpath="@id"/>
    </xs:key>
  </xs:element>
</xs:schema>
Где то так
...
Рейтинг: 0 / 0
17.12.2009, 22:16
    #36372668
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xs:unique - ПОМОГИТЕ......... вроде простую вещь хочу...
Код: 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.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence maxOccurs="unbounded">
        <xs:element name="model">
          <xs:complexType>
            <xs:sequence maxOccurs="unbounded">
              <xs:element name="field">
                <xs:complexType>
                  <xs:attribute name="id" type="xs:NCName" use="required"/>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="id" type="xs:NCName" use="required"/>
          </xs:complexType>
          <xs:key name="uniqField">
            <xs:selector xpath="field"/>
            <xs:field xpath="@id"/>
          </xs:key>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
    <xs:key name="uniqModel">
      <xs:selector xpath="model"/>
      <xs:field xpath="@id"/>
    </xs:key>
  </xs:element>
</xs:schema>
Вернее так
...
Рейтинг: 0 / 0
18.12.2009, 13:59
    #36373774
karapetyan_a
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xs:unique - ПОМОГИТЕ......... вроде простую вещь хочу...
_Vasilisk_,

Огромное спасибо!!! проверил, все работает, я бы еще мучался.........
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xs:unique - ПОМОГИТЕ......... вроде простую вещь хочу... / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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