powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как применяются key , keyref xml schema?
5 сообщений из 5, страница 1 из 1
Как применяются key , keyref xml schema?
    #38688560
dwyli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
<парковаться xmlns=" http://parken.org" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://parken.org parken.xsd">
<машина номер="12341"/>
<машина номер="258"/>
<машина номер="12"/>
<машина номер="4587"/>
<парковка id="12">
<парк>258</parkt>
<парк>12</parkt>
</парковка>
<парковка id="1597">
<парк>12341</>
<парк>4587</>
</парковка>
</парковаться>

на основе этого xml документа надо составить схему, в которой машины имеют разные номера, парковки имеют разные id. На одной парковке может стоять только одна машина, которая уже известна из документа и каждой машине разрешается стоять максимально только на одной парковке. Как применить эти ограничения с помощью key keyref и unique. вот моя схема что смогла сделать дальше не знаю, Подскажите?

<xs:schema xmlns:xs=" http://www.w3.org/2001/XMLSchema" targetNamespace=" http://parken.org" xmlns:tns=" http://parken.org" elementFormDefault="qualified">
<xs:element name="парковаться">
<xs:complexType>
<xs:sequence>
<xs:element name="машина" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="номер" type="xs:positiveInteger"></xs:attribute>
</xs:complexType>

<xs:key name="номерType">
<xs:selector xpath="tns:парковаться/tns:машина></xs:selector>
<xs:field xpath="@номер"></xs:field>
</xs:key>

</xs:element>
<xs:element name="парковка" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="парк" type="xs:positiveInteger" maxOccurs="unbounded"></xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:positiveInteger"></xs:attribute>
</xs:complexType>

<xs:key name="idType">
<xs:selector xpath="tns:парковаться/tns:парковка"></xs:selector>
<xs:field xpath="@id"></xs:field>
</xs:key>

<xs:keyref refer="tns:номерType" name="номерRefType">
<xs:selector xpath="????"></xs:selector>
<xs:field xpath="?????"></xs:field>
</xs:keyref>

</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>

</xs:schema>
...
Рейтинг: 0 / 0
Как применяются key , keyref xml schema?
    #38688611
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dwyliНа одной парковке может стоять только одна машина, которая уже известна из документаЧто это значит?
...
Рейтинг: 0 / 0
Как применяются key , keyref xml schema?
    #38688612
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dwyli,

приведите валидный xml.
...
Рейтинг: 0 / 0
Как применяются key , keyref xml schema?
    #38688619
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваша ошибка в том, что Вы не на том уровне объявляете ключи и в них указываете неправильный селектор
Код: xml
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.
<xs:schema 
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  targetNamespace="http://parken.org" 
  xmlns:tns="http://parken.org" 
  elementFormDefault="qualified">
    <xs:element name="парковаться">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="машина" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:attribute name="номер" type="xs:positiveInteger"/>
                    </xs:complexType>
                </xs:element>
                <xs:element name="парковка" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="парк" type="xs:positiveInteger" maxOccurs="unbounded"/>
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:positiveInteger"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
         </xs:complexType>
         <!-- нам нужен уникальный номер машины в пределах всего элемента
             "парковаться" при этом сами мы находимся в элементе "парковаться".
             Т.е. путь до номера с текущего места будет tns:машина/@номер -->
         <xs:key name="номерType">
               <xs:selector xpath="tns:машина/>
                <xs:field xpath="@номер"/>
          </xs:key>

           <!-- налогично с id парковки -->
           <xs:key name="idType">
                <xs:selector xpath="tns:парковка"/>
                <xs:field xpath="@id"/>
            </xs:key>

            <!-- на каждой парковке должна стоять известная машина -->
            <xs:keyref refer="tns:номерType" name="номерRefType">
                  <xs:selector xpath="tns:парковка"/>
                  <xs:field xpath="tns:парк"/>
            </xs:keyref>

            <!-- и самое главное - каждая машина может находиться не более,
            чем на одной парковке -->
            <xs:key name="местоType">
                  <xs:selector xpath="tns:парковка"/>
                  <xs:field xpath="tns:парк"/>
            </xs:key>
    </xs:element>
</xs:schema>
...
Рейтинг: 0 / 0
Как применяются key , keyref xml schema?
    #38688941
dwyli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,
Спасибо вам большое теперь понятно все стало. сама бы не разобралась.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как применяются key , keyref xml schema?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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