Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы XML-технологий. Учебное пособие
.pdf
Б
азовый синтаксис
X
ML
оп
ределяет то, каким образом в тексте
должны выделяться элементы и их атрибуты, а также правила
описания структурных отношений между элементами. Синтаксис
екларирует то, какие именно элементы должны содержаться
д
X
SD
ML-
X
в
документе, какой набор атрибутов должен или может иметь
каждый из них, и где их место в общей иерархии.
ML-
Поскольку основными объектами любого
X
документа являются элементы, их атрибуты и образованная ими иерархическая
структура, то вполне логично, что основные конструктивные
элементы синтаксиса
– определение элементов (
– и
х атрибутов (
– п
ростой тип (
a
simpleType
SD
X
ttribute
– эт
о:
el
ement
);
);
, определяющий элементарные типы
)
данных;
– сложный тип (
complexType
, который описывает составные
)
элементы.
Элемент имеет простой тип (
simpleType
если он не имеет атрибу-
),
тов, а его содержимое (данные между открывающим и закрывающим тэгом) соответствует элементарному типу данных или просто
отсутствует. Для описания элемента простого типа достаточно определить его имя (атрибут
n
ame
),
а в качестве типа (атрибут
указать любой простой тип данных, например строковый (
s
t
ype
tring
)
).
Значения всех атрибутов соответствуют простым типам.
omplexType
Все остальные элементы имеют сложный тип (
c
).
Сложный тип определяет сложное содержимое или простое содержимое элемента. Сложное содержимое – это список атрибутов
и набор дочерних элементов. Простое содержимое – это также
список атрибутов и простой тип содержимого элемента.
XSD
Помимо всего прочего,
п
оддерживает наследование типов.
Например, можно описать новый сложный тип, набор атрибутов
и дочерних элементов которого расширяет (
xtension
e
жимое базового типа. Можно, наоборот, ввести ограничения (
tion
) на значения атрибутов и элементов базового типа. Аналогично
) сложное содер-
r
estric-
можно накладывать ограничение на значения простых типов или
расширять их область допустимых значений.
51

В
приведенном ниже примере демонстрируется, как можно
описать структуру данных
X
окумента, описанного в разделе 2.1
-д
ML
и содержащего сведения о книгах некоторой библиотеки.
<
?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Inventory">
<xs:complexType>
<xs:sequence>
<xs:element ref="Book" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Book">
<xs:complexType>
<xs:sequence>
<xs:element ref="Title"/>
<xs:element ref="Author"/>
<xs:element ref="Binding"/>
<xs:element ref="Pages"/>
<xs:element ref="Price"/>
</xs:sequence>
<xs:attribute name="Exists" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:element name="Title" type="xs:string"/>
<xs:element name="Author" type="xs:string"/>
<xs:element name="Binding" type="xs:string"/>
<xs:element name="Pages" type="xs:short"/>
<xs:element name="Price" type="xs:string"/>
</xs:schema>
В
соответствии с этим описанием элемент верхнего уровня
tory
элементов
одержит неограниченное количество (
с
.
Bo
ok
I
m
axOccurs="unbounded"
nven-
)
В свою очередь элементы
(
omplexType
c
T
itle
A
uthor
,
), состоят из последовательностей (
Bi
nding
,
P
ages
,
и
Bo
ok
являясь сложными элементами
,
equence
s
P
rice
ричем составитель типа
. П
) элементов
s
equence
52

оп
ределяет, что порядок следования элементов в
должен соответствовать объявленному в
X
ML-
хеме.
с
Перечисленные элементы определены как простые (
относящиеся к встроенным типам (
данных. В данном примере
)
t
ype
X
ML
-д
окументе
lement
e
),
для описания простых элементов использованы встроенные типы
s
tring
s
и
лен атрибут
hort
E
роме простых элементов для элемента
. К
xists
типа
ing
str
, обозначающий наличие или отсутствие
B
ook
оп
реде-
книги.
3.2
КОМПОНЕНТЫ XML SCHEMA
Приведенный в предыдущем подразделе пример служит только
для демонстрации основной концепции
хеме определяется структура данных
с
XSD
ML
X
согласно которой в
,
окумента, представлен-
-д
XML-
ная в виде системы иерархически вложенных элементов, а для
простых типов, составляющих нижние уровни вложенности, определены типы данных.
Но эта схема предназначена только для первоначального ознакомления с принципами описания данных
представлены описания многих других инструментов
X
-д
окументов, в ней не
ML
XML-
с
хем,
рассмотренных в данном разделе.
3.2.1
XML Schema
Т
И
ПЫ Д АННЫХ
п
редоставляет набор встроенных типов данных, кото-
X
ML
SC
HE MA
рые могут использоваться разработчиками для включения текста.
Все эти типы помещены в пространство имен
Schema
. Каждый тип имеет определенную область значений. Область
http://www.w3.org/2001/ XML
значений типа – это просто ряд значений, которые могут использоваться в экземпляре данного типа.
SD
X
Встроенные типы языка описания схем
п
озволяют записывать двоичные и десятичные целые числа, вещественные числа, дату
и время, строки символов, логические значения, адреса
U
RI
Их особенность заключается в том, что преобразование типов дан-
X
ных языка программирования или базы данных в типы данных
затем их преобразование в типы данных любого другого языка
а
ML
программирования или базы данных, должно осуществляться без
53
.
,

п
отери информации. Именно это свойство определяет
X
в
качестве
ML
средства обмена данными между гетерогенными системами.
3
.2.1.1 Ве ще ст в е н н ы е ч и с л а
Вещественные числа в языке
f
loat
и
Т
do
ип
uble
.
de
cimal
с
оставляют вещественные числа, записанные
с фиксированной точкой:
1
23.45
ра
X
SD
,
-0
.1234567689345
зделены на три типа:
de
т. д. Фактически
и
cimal
,
хранятся два целых числа. Одно число представляет мантиссу,
другое – порядок вещественного числа. Спецификация языка
X
SD
н
е
ограничивает количество цифр в мантиссе, но требует, чтобы можно
было записать не менее
вами технологии
,
ava.math.BigDecimal
j
Т
ипы
loat
f
входящим в стандарт
и
ouble
d
18
ифр. При обработке документа средст-
ц
от тип легко реализуется классом
эт
ava
J
Ja
оответствуют стандарту
с
va API
.
одно-
EEE754-85
I
и
s
ava
J
hort
.
Они записываются с фиксированной или
и
3
4.567
in
teger
Java.math.BigInteger
b
yte
полностью соответствуют одноименным
онимается как подтип типа
п
,
-34567
для обработки документа этот тип
va
Ja
123456789012345
.
integer
-4
5.67
,
и
,
типы более
1
е-5
,
d
ecimal
т. д.
именным типам
с плавающей десятичной точкой. Например,
4.58е14
3
.
3
.2.1.2 Це лы е чи сл а
Основной целый тип
одержащий числа с нулевым порядком. Это целые числа с любым
с
количеством десятичных цифр:
При использовании средств
легко реализуется классом
Т
ипы
типам
l
Java
i
ong
nt
,
,
.
Они понимаются как подтипы типа
коротких чисел считаются подтипами более длинных чисел, напри-
yte
мер тип
b
Значения типа
– эт
о подтип типа
b
yte
как следует из его названия, занимают один
,
hort
s
,
оба они подтипы типа
i
nt
и
т. д.
,
,
байт и изменяются от
-12
8
д
о
значения лежат в диапазоне от
12
.
Тип
7
-3
s
2768
хранятся в четырех байтах и меняются от
ong
Наконец, тип
-92
23372036854775808
от
l
сполагается в восьми байтах, а его значения:
ра
+
9223372036854775807
д
о
54
за
hort
о
д
-2
147483648
нимает два байта, его
32767
+
Числа типа
.
+
2147483647
о
д
.
.
in
t

Т
ипы
n
onPositivelnteger
и
n
egativelnteger
– п
одтипы типа
i
nteger
–
составлены из неположительных и отрицательных чисел соответственно с любым количеством цифр.
Типы
n
onNegativelnteger
и
po
sitivelnteger
– п
одтипы типа
i
nteger
составлены из неотрицательных и положительных чисел соответственно с любым количеством цифр.
n
У типа
u
nsignedLong
3
.2.1.3 Ст ро ки с и м во л о в
Основной символьный тип
символов
класс
J
ava.lang.String
Т
ип
щие символов перевода строки
onNegativelnteger
un
signedlnt
,
Un
icode
Его можно реализовать средствами
.
.
n
ormalizedString
un
signedShort
,
– п
есть подмножество целых чисел без знака
un
signedByte
и
оп
s
tring
одтип типа
, возврата каретки
'\n'
исывает произвольную строку
s
tring
.
– эт
J
ava
используя
,
о строки, не содержа-
и горизон-
'\г'
–
'\t
тальной табуляции
строках типа
В
'
.
oken
t
– подтипа типа
ormalizedString
n
– нет еще
и начальных, и завершающих, пробелов и нескольких подряд
идущих пробелов.
ken
to
В типе
в
ыделены три подтипа. Подтип
для записи названия языка согласно рекомендации
например,
n
r
e
,
,
r
de
f
,
.
Подтип
mtoken
n
и
спользуется только в атрибу-
u
тах для записи их перечисляемых значений. Подтип
имена
X
ML
– п
оследовательности букв, цифр, дефисов, точек, двое-
anguage
l
name
оп
ределен
FC 1766
R
оставляют
с
,
точий, знаков подчеркивания, начинающиеся с буквы (кроме
X
х
M
m
L
зарезервированной последовательности букв
,
,
,
1
,
в
любом
,
сочетании регистров) или знака подчеркивания. Мы видели
в предыдущих главах, что имена, начинающиеся со строки
используются самой спецификацией
. Двоеточие в значениях типа
x
mlns
XML
например, имя атрибута
,
применяется для выделения
na
me
x
ml
,
префикса в уточненных именах при использовании пространства
имен.
Из типа
n
ame
в
ыделен подтип
N
CName
(
N
on
C
olonized
-
N
ame
)
имен, не
содержащих двоеточия, в котором, в свою очередь, определены три
55

п
одтипа:
,
i
d
en
tity
,
– оп
id
ref
исывающие идентификаторы
сти и перекрестные ссылки на идентификаторы.
.2.1.4 Да та и в ре м я
3
uration
d
Тип
H30M45S
часов (
оз
начает один год (
H
10
тридцать минут (
),
исывает
оп
может быть сокращенной, например,
120М
Т
а
Тип
mm:ss
,
20
1
–
dateTime
инут.
м
с
например,
одержит дату и время в формате
003-04-25Т09:30:05
2
ромежуток
п
Y
1
)
, два месяца (
M
30
)
ремени.
в
м
2
),
и сорок пять секунд (
Р120М
Остальные типы выделяют ка-
.
озн
кую-либо часть даты или времени:
t
ime
– с
одержит время в обычном формате
– содержит дату в формате
data
g
YearMonth
– в
ыделяет год и месяц в формате
ccyy-mm-dd
h
h:mm:ss
;
апись
З
три дня (
ачает
CCYY-MM-DDThh:
;
c
cyy-mm
;
,
сущно-
X
ML
Y2M3DT10-
P1
d
3
)
5S
4
. Запись
)
120
м
, десять
есяцев,
gMonthDay
g
Year
g
Month
g
Day
– д
.2.1.5 Дв ои чн ы е т и п ы
3
– содержит месяц и день месяца в формате
– оз
начает год в формате
есяц в формате -
– м
ень месяца в формате
-mm-dd
c
cyy
;
;
м
м
-d
d
.
;
Двоичные целые числа записываются либо в шестнадцатеричной
форме без всяких дополнительных символов:
тип
exBinary
h
.2.1.6 Пр оч ие в ст р ое нн ы е п ро ст ые т и п ы
3
,
либо в кодировке
ase64
B
,
это тип
,
0
B2F
se64Binary
ba
35
6С0А
.
и
т. д., это
Еще три встроенных простых типа описывают значения, часто
ML
X
используемые в документах
А
дреса
асширенное имя тега или атрибута (
Р
U
носятся к типу
от
RI
.
an
yURI
.
ualified
q
me
na
)
, т. е. имя
вместе с префиксом, отделенным от имени двоеточием, – это тип
Name
Q
.
О
бозначение
простой тип схемы
no
XML
tation
Его используют для записи математических,
.
D
TD
исания
оп
ыделено как отдельный
в
56

хи
мических и других символов, нот, азбуки Бройля и прочих
обозначений.
МL-
Х
Наиболее широко используемые типы данных
с
хемы пере-
числены в таблице 3.1.
Таблица 3.1. Основные типы данных в XML-схеме
Тип данных Описание
Числовые данные
I
nteger
P
N
NonPositiveInteger
NonNegativeInteger
I
nt
U
L
U
S
U
Decimal
Float
ositiveInteger
egativeInteger
nsignedInt
ong
nsignedLong
hort
nsignedShort
Ц
елое число
П
оложительное целое число
О
трицательное целое число
Нуль или отрицательное целое число
Нуль или положительное целое число
3
2-битовое целое число со знаком
2-битовое целое число без знака
3
4-битовое целое число со знаком
6
4-битовое целое число без знака
6
1
6-битовое целое число со знаком
1
6-битовое целое число без знака
Число, содержащее дробную часть
Число с плавающей запятой стандартной точности
ouble
D
С
String
N
T
имвольные данные
ormalizedString
oken
исло с плавающей запятой двойной точности
Ч
Символьная строка переменной длины
трока, в которой символы новой строки, возврата каретки
С
и табуляции заменены пробелами
трока, в которой удалены начальные и конечные пробелы
С
и подряд идущие пробелы заменены одним пробелом
О
кончание таблицы 3.1
57

Тип данных
ата и время
Д
ime
T
D
ateTime
uration
D
D
ate
Д
ругие данные
Boolean
B
yte
nsignedByte
U
base64Binary
H
exBinary
nyURI
A
Описание
ремя дня (часы/минуты/секунды/миллисекунды)
В
Д
ень и время (эквивалент SQL-типа TIMESTAMP)
лительность временного интервала
Д
Г
од/месяц/день
Значение TRUE/FALSE
О
дин байт данных со знаковым битом
дин байт данных без знакового бита
О
Двоичные данные по основанию 64
Д
воичные данные по основанию 16
RI-адрес в Интернете, например, http://www.w3.org
U
L
anguage
Ти
пы данных
Д
опустимый язык XML (английский, французский ...)
ML-
X
хемы спроектированы таким образом, что
с
они могут быть взаимно обратно преобразованы без искажений или
потери информации в соответствующие типы данных всех ныне
существующих языков программирования и баз данных.
Именно это обстоятельство является важнейшим качеством
ормата, позволяющим использовать его в качестве промежуточ-
ф
X
ML
-
ного формата при обмене данными между гетерогенными
системами.
До разработки системы типов данных
сл
X
SD
ожилась такая
ситуация, что разработчики каждого языка программирования
и системы управления базами данных создавали свои уникальные
механизмы для формирования, передачи и хранения данных, как
будто каждая очередная программная система решала многолетнюю
проблему абстрагирования данных раз и навсегда.
В результате для обеспечения взаимодействия приложений,
написанных на разных языках программирования, приходится форматировать данные в соответствии с требованиями каждой из них
58

и
дополнительно писать программы конвертации данных из одного
формата в другой.
ML-
X
При использовании
д
анных программисты могут прибегнуть
к богатому набору средств платформы
для унификации пред-
,
X
ML
ставления данных путем выполнения их преобразований из различных форматов в
X
ML
лишь отображение из приложения в
лам связи – из
XML
в
Например, тип данных
в тип
да
нных
nteger
I
обратно. Разработчикам нужно определить
и
ML
X
, а после передачи по кана-
другое приложение.
я
i
зыка
nt
языков
дл
ML
X
C
++
и
ava
J
может отобразиться
я передачи по каналам связи.
На приемной стороне данные этого типа могут быть преобразованы
в тип данных
nteger
I
я
зыка
P
ascal
. П
ричем никакого искажения ин-
формации при этом каскаде преобразований не происходит.
X
ML
С этой точки зрения язык
п
редставляет собой значительный
сдвиг в вопросе восприятия данных приложениями, особенно это
касается общих данных, совместно используемых программами
и приложениями различных типов.
XML
анит все данные в виде
хр
текста, как и положено языку разметки. Программы, обращающиеся
ML
X
к
в текстовое, используя сведения о связи типов, заданные в
с
хеме.
играть центральную роль в обработке
отображают эти данные в свое представление и обратно
,
X
ML-
ML
В общем,
X
S
chema
подготовлена для того, чтобы в будущем
,
особенно в
X
ML
W
eb
се
рвисах,
в которых она служит одним из фундаментальных принципов,
на которых строятся высшие уровни абстракции.
П
3.2.2
ML-
X
с
Простой элемент – это элемент
РЕ ДЕЛЕН ИЕ ПРОСТЫ Х ЭЛЕМЕ НТ ОВ
О
хемы определяют простые элементы
,
который содержит только текст.
X
ML
X
ML-
окумента.
д
Простой элемент не может содержать другие элементы или атрибуты.
XML
Слова «только текст» требуют пояснения. Все данные в
записываются в виде текста, но текст может быть самых разных
типов. Это может быть одним из типов, включенных в определение
X
ML-
с
хем (
bo
olean
s
tring
,
d
ate
,
и
т. д.), либо это может быть пользова-
тельский тип, определенный вами.
59

Т
акже, вы сами можете добавить ограничения (аспекты) по типу
данных, чтобы лимитировать контент, либо вы можете указать
требование, чтобы данные соответствовали определенной модели.
Для определения простого элемента используется синтаксис:
<xs:element name="xxx" type="yyy"/>,
г
де
X
ML-
Наиболее часто используемыми являются следующие типы:
x
s:decimal
Например, возьмем некоторые
<
lastname>Refsnes</lastname>
<age>36</age>
<dateborn>1970-03-27</dateborn>
А
вот как будут выглядеть определения этих элементов в
хеме:
с
<xs:element name="lastname" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
<xs:element name="dateborn" type="xs:date"/>
ростые элементы могут иметь значения по умолчанию или
П
– и
xxx
хемы имеют множество встроенных типов данных.
с
x
,
мя элемента, а
s:integer
,
xs:b
oolean
,
yyy
x
s:date
– т
ип данных элемента.
x
s:time
,
X
.
элементы:
ML-
xs:string
XML-
фиксированные значения. Значение по умолчанию присваивается
,
элементу автоматически, если не определено никакого другого
значения.
"re
В следующем примере
xs:element name="color" type="xs:string" default="red"/>
<
d"
начение по умолчанию:
– з
Фиксированное значение также присваивается элементу автома-
тически, но при этом вы не можете определить другого значения.
В следующем примере
xs:element name="color" type="xs:string" fixed="red"/>
<
3.2.3
В
О
ПР ЕДЕЛЕ НИ Е АТРИБ УТОВ
се атрибуты декларируются как простые типы. Простые
"re
d"
– ф
иксированное значение:
элементы не могут иметь атрибуты. Если у элемента есть атрибуты,
то он относится к комплексным или составным типам. Но сам по
себе атрибут всегда декларируется как простой тип.
60
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
