Схема счета на покупку объявляет
различные элементы и атрибуты, которые имеют простой тип. Некоторые из этих
простых типов, таких как string и decimal, встроены в XML Schema, тогда как другие получены из
встроенных. Например, атрибут partNum имеет тип, называемый SKU (Stock Keeping Unit), который получен из string. Как встроенные простые типы, так и
образованные из них, могут использоваться во всех объявлениях элементов и
атрибутов. В Таблице
2 перечислены все простые типы, которые встроены в XML Schema, наряду с примерами других типов.
|
Простой тип
|
Примеры |
Примечания |
|
Confirm this
is electric |
|
|
|
Confirm this
is electric |
см. (3) |
|
|
Confirm this
is electric |
см. (4) |
|
|
-1, 126 |
см. (2) |
|
|
0, 126 |
см. (2) |
|
|
GpM7 |
|
|
|
0FB7 |
|
|
|
-126789, -1,
0, 1, 126789 |
см. (2) |
|
|
1, 126789 |
см. (2) |
|
|
-126789, -1 |
см. (2) |
|
|
0, 1, 126789 |
см. (2) |
|
|
-126789, -1, 0
|
см. (2) |
|
|
-1, 126789675 |
см. (2) |
|
|
0, 1267896754 |
см. (2) |
|
|
-1,
12678967543233 |
см. (2) |
|
|
0,
12678967543233 |
см. (2) |
|
|
-1, 12678 |
см. (2) |
|
|
0, 12678 |
см. (2) |
|
|
-1.23, 0,
123.4, 1000.00 |
см. (2) |
|
|
-INF, -1E4, -0, 0, 12.78E-2, 12, INF, |
Эквивалентно
32-х битовому числу с плавающей точкой с одинарной точностью, NaN это «not a number», см. (2) |
|
|
-INF, -1E4, -0, 0, 12.78E-2, 12, INF, |
Эквивалентно
64-х битовому числу с плавающей точкой с двойной точностью, см. (2) |
|
|
true, false |
|
|
|
13:20:00.000,
13:20:00.000-05:00 |
см. (2) |
|
|
1999-05-31T13:20:00.000-05:00
|
31 Мая
1999 13 часов 20 минут Стандартное время, которое на 5 часов позади
Coоrdinated Universal Time, см. (2) |
|
|
P1Y2M3DT10H30M12.3S
|
1 год, 2 месяца,
3 дня, 10 часов, 30 минут и 12.3 секунды |
|
|
1999-05-31 |
см. (2) |
|
|
--05-- |
Май, см. (2)
(5) |
|
|
1999 |
1999, см. (2)
(5) |
|
|
1999-02 |
Месяц февраль
1999, без номера дня, см. (2) (5) |
|
|
---31 |
31-й день, см.
(2) (5) |
|
|
--05-31 |
Каждое 31 мая,
см. (2) (5) |
|
|
shipTo |
Тип Name XML 1.0 |
|
|
po:USAddress |
QName XML
Namespace |
|
|
USAddress |
NCName XML Namespace, т.е. QName без префикса и двоеточия |
|
|
http://www.example.com/, http://www.example.com/doc.html#ID5
|
|
|
|
en-GB, en-US, fr |
Действительные
значения xml:lang, как определено в XML 1.0 |
|
|
|
тип атрибута XML 1.0 ID, см. (1) |
|
|
|
тип атрибута XML 1.0 IDREF, see (1) |
|
|
|
тип атрибута XML 1.0 IDREFS, см. (1) |
|
|
|
тип атрибута XML 1.0 ENTITY, см. (1) |
|
|
|
XML 1.0 ENTITIES attribute type, см. (1) |
|
|
|
тип атрибута XML 1.0
NOTATION, см.
(1) |
|
|
US, |
тип атрибута XML 1.0 NMTOKEN, см. (1) |
|
|
|
тип атрибута 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:
<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 символа верхнего регистра»:
<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, чье значение должно быть одной из
стандартных аббревиатур штатов США:
<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 и т.д. Отметим, что значения
перечисления, указанные для специфического типа должны быть уникальны.