Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSD, исключение значений в подтипе / 5 сообщений из 5, страница 1 из 1
29.11.2011, 09:05
    #37549219
Leran2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD, исключение значений в подтипе
Здравствуйте!

Помогите с определением подтипа с pattern в XSD.

Суть вопроса попытался описать в следующем примере:

Код: 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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs=" http://www.w3.org/2001/XMLSchema"> 

  <xs:simpleType name="typeTEST">
    <xs:restriction base="xs:string">
      <xs:enumeration value="01">
        <xs:annotation>
          <xs:documentation>Значение 01</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="02">
        <xs:annotation>
          <xs:documentation>Значение 02</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <!--...-->
      <xs:enumeration value="NN">
        <xs:annotation>
          <xs:documentation>Значение NN</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <!-- Определение подтипа с указанием допустимых значений. тут все понятно и просто -->
  <xs:simpleType name="subtypeTEST1">
    <xs:restriction base="typeTEST">
       <xs:pattern value="02|03|04"/> 
    </xs:restriction>
  </xs:simpleType>

  <!-- А как определить подтип который будет исключать ненужные значения (например 02 и 03)? -->
  <xs:simpleType name="subtypeTEST2">
    <xs:restriction base="typeTEST">
       <xs:pattern value="[^(02|03)]*"/> <!--Как правильно задать это выражение?--> 
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="items">
    <xs:complexType>
      <xs:all>
        <xs:element name="item1" type="subtypeTEST1"/> <!--работает-->
         <xs:element name="item2" type="subtypeTEST2"/> <!--не работает--> 
      </xs:all>
    </xs:complexType>

  </xs:element>

</xs:schema>

Спасибо!
...
Рейтинг: 0 / 0
20.12.2011, 15:36
    #37585141
user123456789user
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD, исключение значений в подтипе
Leran2002,

думаю, можно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
  <!--А как определить подтип который будет исключать ненужные значения (например 02 и 03)?-->
  <xs:simpleType name="subtypeTEST2">
    <xs:restriction base="typeTEST">
      <xs:pattern value="0|0[^23]|0[23]\d+|[1-9]\d*"/>
    </xs:restriction>
  </xs:simpleType>

Если не ошибаюсь, исключить элементы из такого перечисления можно только регэкспом.
...
Рейтинг: 0 / 0
20.12.2011, 16:12
    #37585252
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD, исключение значений в подтипе
Перечислите опять все значения кроме тех, которые лишние.

А лучше всего поменяйте механизм наследования на обратный
...
Рейтинг: 0 / 0
22.12.2011, 07:17
    #37588196
Leran2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD, исключение значений в подтипе
Спасибо, всем, за ответы!

С регулярными выражениями сложно получается и не очень читабельно. Видимо их прямое предназначение – выборка (поиск), а не исключение.
В итоге сделал по-простому, где нужно выбирать несколько значений использовал подтип с pattern (т.е. так и оставил, как в subtypeTEST1), а где нужно исключать несколько значений просто создал аналогичный тип только с исключенными значениями. Благо, что набор значений почти не изменяется. =)
...
Рейтинг: 0 / 0
28.02.2012, 08:44
    #37681431
milashka987
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSD, исключение значений в подтипе
Да не за чт )
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSD, исключение значений в подтипе / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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