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

Помогите с определением подтипа с 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
XSD, исключение значений в подтипе
    #37585141
user123456789user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
XSD, исключение значений в подтипе
    #37585252
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перечислите опять все значения кроме тех, которые лишние.

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

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


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