powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / [xsd][unique] Правило не работает.
6 сообщений из 6, страница 1 из 1
[xsd][unique] Правило не работает.
    #37850142
YetAnotherEntity
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пишу схему и застрял на unique. Вот отрывок из схемы:
Код: 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.
 <xs:element name="StudentBase">
      <xs:complexType>
          <xs:sequence>
              <xs:element name="Students">
                  <xs:complexType>
                      <xs:sequence>
                          <xs:element name="Student" maxOccurs="unbounded" >
                              <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="FullName" type="xs:string" nillable="false" />
                                    <xs:element name="Region" type="xs:string" />          
                                    <xs:element name="E-Mail" type="email" />
                                    <xs:element name="StartDate" type="xs:date" />        
                                    <xs:element name="ContractSigned" type="xs:boolean" /> 
                                </xs:sequence>
                            </xs:complexType> 
                          </xs:element>
                      </xs:sequence>
                  </xs:complexType>                                                                                                                                           
                  <xs:unique name="uniqueStudentsFullNameConstraint">
                      <xs:selector xpath="Students/Student" />
                      <xs:field xpath="FullName" />
                  </xs:unique>
              </xs:element>
              <xs:element name="Curriculums" >
                  <xs:complexType>
                      <xs:sequence>
                          <xs:element name="Curriculum" type="Curriculum" maxOccurs="unbounded" />
                      </xs:sequence>
                  </xs:complexType>
              </xs:element>
          </xs:sequence>
      </xs:complexType>
  </xs:element>  


Проблема в том, что валидатор не ругается при наличии нескольких студентов с одинаковым именем. Может, кто-нибудь увидит ошибку?
...
Рейтинг: 0 / 0
[xsd][unique] Правило не работает.
    #37850196
YetAnotherEntity
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перенос правила unique на один уровень вверх с изменением xpath запроса тоже не помогает:
Код: 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.
 <xs:element name="StudentBase">
      <xs:complexType>
          <xs:sequence>
              <xs:element name="Students">
                  <xs:complexType>
                      <xs:sequence>
                          <xs:element name="Student" maxOccurs="unbounded" >
                              <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="FullName" type="xs:string" nillable="false" />
                                    <xs:element name="Region" type="xs:string" />          
                                    <xs:element name="E-Mail" type="email" />
                                    <xs:element name="StartDate" type="xs:date" />        
                                    <xs:element name="ContractSigned" type="xs:boolean" /> 
                                </xs:sequence>
                            </xs:complexType> 
                          </xs:element>
                      </xs:sequence>
                  </xs:complexType> 
              </xs:element>
              <xs:element name="Curriculums" >
                  <xs:complexType>
                      <xs:sequence>
                          <xs:element name="Curriculum" type="Curriculum" maxOccurs="unbounded" />
                      </xs:sequence>
                  </xs:complexType>
              </xs:element>
          </xs:sequence>
      </xs:complexType>                                                                                                                                          
      <xs:unique name="uniqueStudentsFullNameConstraint">
          <xs:selector xpath="Students/Student" />
          <xs:field xpath="FullName" />
      </xs:unique>
  </xs:element> 
...
Рейтинг: 0 / 0
[xsd][unique] Правило не работает.
    #37850269
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YetAnotherEntityМожет, кто-нибудь увидит ошибку?В первом варианте ошибка в селекторе. Должно быть
Код: xml
1.
<xs:selector xpath="Student" />



какое пространство имен у схемы? Приведите все атрибуты элемента <xsd:schema>
...
Рейтинг: 0 / 0
[xsd][unique] Правило не работает.
    #37850711
YetAnotherEntity
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_YetAnotherEntityМожет, кто-нибудь увидит ошибку?В первом варианте ошибка в селекторе. Должно быть
Код: xml
1.
<xs:selector xpath="Student" />



какое пространство имен у схемы? Приведите все атрибуты элемента <xsd:schema>

Да, там была опечатка, склеил его по памяти после изменений. Второй пример точно корректен, но валидатор работать не хочет. Причем один раз Eclise таки указал мне, что существует дублирование, т.е. правило сработало. Не могу понять, неужели валидаторы настолько кривые, что не могут корректно обработать правило? Пробовал валидировать в Netbeans, в Eclipse и ещё паре онлайн валидаторов.

Вот атрибуты корневого элемента схемы:
Код: xml
1.
2.
3.
4.
5.
<xs:schema version="1.0"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.ins.com"
           xmlns="http://www.ins.com"
           elementFormDefault="qualified">



А вот атрибуты в валидируемом xml файле:
Код: xml
1.
2.
3.
4.
<StudentBase xmlns="http://www.ins.com"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://www.ins.com Report.xsd ">
  
...
Рейтинг: 0 / 0
[xsd][unique] Правило не работает.
    #37851171
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<xs:schema version="1.0"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.ins.com"
           xmlns:ins="http://www.ins.com"
           elementFormDefault="qualified">
..................
  <xs:unique name="uniqueStudentsFullNameConstraint">
    <xs:selector xpath="ins:Student" />
    <xs:field xpath="ins:FullName" />
  </xs:unique>
...
Рейтинг: 0 / 0
[xsd][unique] Правило не работает.
    #37851496
YetAnotherEntity
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<xs:schema version="1.0"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.ins.com"
           xmlns:ins="http://www.ins.com"
           elementFormDefault="qualified">
..................
  <xs:unique name="uniqueStudentsFullNameConstraint">
    <xs:selector xpath="ins:Student" />
    <xs:field xpath="ins:FullName" />
  </xs:unique>


Прошу прощения за задержку с ответом... Ваш совет помог: я объявил свой namespace с префиксом и всё заработало. Спасибо большое за помощь.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / [xsd][unique] Правило не работает.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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