Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перепутал restriction и union? 
:(
    Опции темы
LostSoul2
Дата 3.10.2014, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 1.10.2014

Репутация: нет
Всего: нет



Доброй ночи.
Читаю сейчас учебник по XML (Ильдар Хабибуллин, "Самоучитель XML", 2003 г), конкретно про язык XSD (XML Schema Definition). Раздел, где описывается определение простых типов через <xsd:restriction>, <xsd:list>, <xsd:union>. Там приводится пример:

Код

<xsd:simpleType name="listOfInteger">
<xsd:restriction>
<xsd:simpleType>
<xsd:list itemType="xsd:integer" />
</xsd:simpleType>

<xsd:maxLength value="5" />
</xsd:restriction>
</xsd:simpleType>


Мне вот как-то неясно: вроде у restriction д.б. задан атрибут base. Он не перепутал тут restriction и union?

Модератор: не забываем пользоваться тегом code
PM MAIL   Вверх
diadiavova
Дата 3.10.2014, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5803
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 21
Всего: 139



Цитата(LostSoul2 @  3.10.2014,  02:01 Найти цитируемый пост)
вроде у restriction д.б. задан атрибут base. Он не перепутал тут restriction и union? 

Я не понял в чем вопрос? Ты хочешь выяснить не перепутал ли элементы автор книги, которую ты читаешь? smile Если вопрос по поводу атрибута бэйз, то да - он обязательный в элементе рестрикшн.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
LostSoul2
Дата 3.10.2014, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 1.10.2014

Репутация: нет
Всего: нет



Цитата(diadiavova @  3.10.2014,  12:40 Найти цитируемый пост)
Я не понял в чем вопрос? Ты хочешь выяснить не перепутал ли элементы автор книги, которую ты читаешь?  Если вопрос по поводу атрибута бэйз, то да - он обязательный в элементе рестрикшн. 


Да, именно так - не перепутал ли автор. Во-первых, почему-то не задал base, во-вторых, по-моему, тут и по логике вещей должен быть union. Поскольку я привёл кусок кода, вырвав его из контекста, то поясню: здесь создаётся абсолютно новый тип, а не "суживается" (терминология автора книги) какой-то другой.  Я когда читал, сначала вообще так понял, что если применяется restriction без указания base, то это аналог union. Но что-то засомневался и решил спросить.
PM MAIL   Вверх
diadiavova
Дата 3.10.2014, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5803
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 21
Всего: 139



Цитата(LostSoul2 @  3.10.2014,  14:56 Найти цитируемый пост)
 здесь создаётся абсолютно новый тип, а не "суживается" (терминология автора книги) какой-то другой. 

Урезание типа - это и есть создание нового. Ну то есть ты можешь создать новый тип на базе существующего, путем введения ограничений. Ну например введешь тип ShortString на базе строки путем ограничения длины строки к примеру десятью символами. Это ни коим образом не изменит тип string, а все ограничения будут касаться созданного тобой нового типа. Так что здесь нет противоречия.
Цитата(LostSoul2 @  3.10.2014,  14:56 Найти цитируемый пост)
Я когда читал, сначала вообще так понял, что если применяется restriction без указания base, то это аналог union.

Никогда об этом слышал. Атрибут обязательный, так что он должен присутствовать.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
LostSoul2
Дата 3.10.2014, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 1.10.2014

Репутация: нет
Всего: нет



Цитата(diadiavova @  3.10.2014,  14:09 Найти цитируемый пост)
Урезание типа - это и есть создание нового. Ну то есть ты можешь создать новый тип на базе существующего, путем введения ограничений. Ну например введешь тип ShortString на базе строки путем ограничения длины строки к примеру десятью символами. Это ни коим образом не изменит тип string, а все ограничения будут касаться созданного тобой нового типа. Так что здесь нет противоречия.


Я имел в виду, что union создаёт новый тип вообще на пустом месте (как это сделано в примере), а не расширяя или суживая какой-то другой.
PM MAIL   Вверх
diadiavova
Дата 3.10.2014, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5803
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 21
Всего: 139



Цитата(LostSoul2 @  3.10.2014,  15:22 Найти цитируемый пост)
Я имел в виду, что union создаёт новый тип вообще на пустом месте (как это сделано в примере), а не расширяя или суживая какой-то другой. 

Вообще-то он создается путем объединения простых типов, как следует из его названия.
http://msdn.microsoft.com/ru-ru/library/vs...=vs.110%29.aspx
Здесь описание, а вот пример на основе примера из статьи
Код

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="XMLSchema1"
    targetNamespace="http://tempuri.org/XMLSchema1.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/XMLSchema1.xsd"
    xmlns:mstns="http://tempuri.org/XMLSchema1.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:attribute name="fontsize">
    <xs:simpleType>
      <xs:union memberTypes="fontbynumber fontbystringname" />
    </xs:simpleType>
  </xs:attribute>

  <xs:simpleType name="fontbynumber">
    <xs:restriction base="xs:positiveInteger">
      <xs:maxInclusive value="72"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="fontbystringname">
    <xs:restriction base="xs:string">
      <xs:enumeration value="small"/>
      <xs:enumeration value="medium"/>
      <xs:enumeration value="large"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="root">
    <xs:complexType>
      <xs:attribute ref="fontsize"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

Далее в документе
Код

<?xml version="1.0" encoding="utf-8" ?> 
<root xmlns="http://tempuri.org/XMLSchema1.xsd" a:fontsize="12" xmlns:a="http://tempuri.org/XMLSchema1.xsd"></root>


в атрибуте fontsize можно задавать значения как из перечисления fontbystringname (small, medium, large), так и положительным числом до 72 включительно, как в типе fontbynumber.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Google
  Дата 17.11.2019, 17:37 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0618 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.