Перевод рекомендации W3C - XML Schema Part 0. Выполнил Г.Е. Берман


Перевод рекомендации W3C - XML Schema Part 0. Выполнил Г.Е. Берман
2.3 Простые типы
Схема счета на покупку объявляет
различные элементы и атрибуты, которые имеют простой тип. Некоторые из этих
простых типов, таких как string и decimal, встроены в XML Schema, тогда как другие получены из
встроенных. Например, атрибут partNum имеет тип, называемый SKU (Stock Keeping Unit), который получен из string. Как встроенные простые типы, так и
образованные из них, могут использоваться во всех объявлениях элементов и
атрибутов. В Таблице
2 перечислены все простые типы, которые встроены в XML Schema, наряду с примерами других типов.
Таблица 2. Простые типы, встроенные в XML Schema
Простой тип
Примеры
Примечания
string
Confirm this
is electric

normalizedString
Confirm this
is electric
см. (3)
token
Confirm this
is electric
см. (4)
byte
-1, 126
см. (2)
unsignedByte
0, 126
см. (2)
base64Binary
GpM7

hexBinary
0FB7

integer
-126789, -1,
0, 1, 126789
см. (2)
positiveInteger
1, 126789
см. (2)
negativeInteger
-126789, -1
см. (2)
nonNegativeInteger
0, 1, 126789
см. (2)
nonPositiveInteger
-126789, -1, 0
см. (2)
int
-1, 126789675
см. (2)
unsignedInt
0, 1267896754
см. (2)
long
-1,
12678967543233
см. (2)
unsignedLong
0,
12678967543233
см. (2)
short
-1, 12678
см. (2)
unsignedShort
0, 12678
см. (2)
decimal
-1.23, 0,
123.4, 1000.00
см. (2)
float
-INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN
Эквивалентно
32-х битовому числу с плавающей точкой с одинарной точностью, NaN это «not a number», см. (2)
double
-INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN
Эквивалентно
64-х битовому числу с плавающей точкой с двойной точностью, см. (2)
boolean
true, false
1, 0

time
13:20:00.000,
13:20:00.000-05:00
см. (2)
dateTime
1999-05-31T13:20:00.000-05:00
31 Мая
1999            13 часов 20 минут
 Стандартное время, которое на 5 часов позади
Coоrdinated Universal Time, см. (2)
duration
P1Y2M3DT10H30M12.3S
1 год, 2 месяца,
3 дня, 10 часов, 30 минут и 12.3 секунды
date
1999-05-31
см. (2)
gMonth
--05--
Май, см. (2)
(5)
gYear
1999
1999, см. (2)
(5)
gYearMonth
1999-02
Месяц февраль
1999, без номера дня, см. (2) (5)
gDay
---31
31-й день, см.
(2) (5)
gMonthDay
--05-31
Каждое 31 мая,
см. (2) (5)
Name
shipTo
Тип Name XML 1.0
QName
po:USAddress
QName XML
Namespace
NCName
USAddress
NCName XML Namespace, т.е. QName без префикса и двоеточия
anyURI
http://www.example.com/, http://www.example.com/doc.html#ID5

language
en-GB, en-US, fr
Действительные
значения xml:lang, как определено в XML 1.0
ID

тип атрибута XML 1.0 ID, см. (1)
IDREF

тип атрибута XML 1.0 IDREF, see (1)
IDREFS

тип атрибута XML 1.0 IDREFS, см. (1)
ENTITY

тип атрибута XML 1.0 ENTITY, см. (1)
ENTITIES

XML 1.0 ENTITIES attribute type, см. (1)
NOTATION

тип атрибута XML 1.0
NOTATION, см.
(1)
NMTOKEN
US,
Brésil
тип атрибута XML 1.0 NMTOKEN, см. (1)
NMTOKENS
US UK,
Brésil Canada
Mexique
тип атрибута XML 1.0
NMTOKENS, т.е. пробелы, разделяющие список  NMTOKEN, см. (1)
Примечания: (1) Для
обеспечения
совместимости
между
XML Schema и XML
1.0 DTD, ID простых  типов, IDREF, IDREFS,
ENTITY, ENTITIES, NOTATION, NMTOKEN, NMTOKENS должны только
использоваться
в
атрибутах. (2)
Значение этого типа может быть представлено больше чем одним лексическим
форматом, например и 100, и 1.0E2 - допустимые форматы с плавающей точкой,
представляющие «сто». Однако, правила установленные для этого типа,
определяют канонический лексический формат, см. XML Schema Part 2. (3) Символы новой строки, табуляции и возврата каретки в
типе normalizedString - преобразованы в
пробелы перед обработкой схемы. (4) Как normalizedString, так и смежные
пробелы сведены к одному пробелу. Начальные 
и конечные пробелы удалены. (5) префикс "g"
сообщает
о периодах времени в Грегорианском каландре. 
Новые простые типы
получаются из существующих простых типов (встроенных и полученных ранее). В
частности мы можем получить новый простой тип, ограничивая существующий простой
тип. Другими словами, допустимый диапазон значений для нового типа есть
подмножество диапазона значений существующего типа. Мы используем элемент simpleType, чтобы определить и дать имя новому
простому типу. Мы используем элемент restriction, чтобы указать существующий (основной)
тип, и определить «допустимые значения», которые ограничивают диапазон
значений. Полный список допустимых значений представлен в Приложение B.
Предположим, что мы желаем
создать новый тип целого числа с именем myInteger,
диапазон значений которого
должен быть между 10000 и 99999 (включительно). Мы формируем наше определение
на встроенном простом типе integer, чей диапазон значений также включает
целые числа меньше чем 10000 и больше чем 99999. Для того, что бы определить myInteger, мы ограничиваем диапазон основного типа integer , посредством двух применимых ограничений, называемых minInclusive и maxInclusive:
Определение myInteger, диапазон 10000-99999
<xsd:simpleType name="myInteger">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="10000"/>
<xsd:maxInclusive value="99999"/>
</xsd:restriction>
</xsd:simpleType>
В примере показана одна
определенная комбинация исходного типа и два ограничения, которые используются
для определения myInteger. Однако,
если просмотреть список встроенных простых типов и их ограничений (Приложение B), то можно предложить и другие возможные
комбинации.
Схема счета на покупку содержит
другой, более сложный, пример определения простого типа. Новый простой тип, называемый
SKU получен (в соответствии с ограничением)
от простого типа string. Кроме того, мы ограничиваем значения SKU, используя ограничение, называемое pattern  вместе с регулярным выражением «\d {3} - [A-Z] {2}», которое читается как «три цифры, после
них дефис, далее два ASCII символа верхнего регистра»:
Определение простого типа “SKU”
<xsd:simpleType name="SKU">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3}-[A-Z]{2}"/>
</xsd:restriction>
</xsd:simpleType>
Этот язык
регулярных выражений более полно описан в Приложение D.
XML Schema определяет пятнадцать видов ограничений,
которые перечислены в Приложение B. Среди них особенно полезно ограничение enumeration, оно может использоваться для того,
чтобы сузить набор возможных значений почти любого простого типа, исключение -
тип boolean. Ограничение enumeration сводит множество возможных значений
простого типа к нескольким значениям. Например, мы можем использовать
ограничение enumeration,  чтобы определить новый простой тип с именем USState, полученный из string, чье значение должно быть одной из
стандартных аббревиатур штатов США:
Использование ограничения Enumeration
<xsd:simpleType name="USState">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="AK"/>
<xsd:enumeration value="AL"/>
<xsd:enumeration value="AR"/>
<!-- and so on ... -->
</xsd:restriction>
</xsd:simpleType>
USState -
хорошая альтернатива для
типа string, которая может использоваться в объявлении
элемента state. Выполняя
эту замену, всегда будут использоваться только правильные значения элемента state, то есть подэлементы state - billTo и shipTo будут ограничены одним из значений: AK, AL, AR и т.д. Отметим, что значения
перечисления, указанные для специфического типа должны быть уникальны.

#bn {display:block;}
#bt {display:block;}
содержание | 2 | Хочешь стать лидером?
Используются технологии uCoz