Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы XML-технологий. Учебное пособие
.pdf
А
трибут декларируется следующим образом:
<x
s:attribute name="xxx" type="yyy"/>
где
xx
x
– имя атрибута, а
yy
y
– тип данных атрибута.
Для описания атрибутов используются те же типы данных,
используемые для определения простых элементов. Например,
ML-
возьмем
<l
Д
<
А
X
astname lang="EN">Smith</lastname>
екларация этого атрибута в
xs:attribute name="lang" type="xs:string"/>
лемент с атрибутом:
э
X
ML-
с
хеме имеет вид
трибуты, как и элементы, могут иметь значения по умолчанию
или фиксированные значения. Значение по умолчанию присваивается атрибуту автоматически, если не определено никакого другого значения. В следующем примере
<xs:attribute name="lang" type="xs:string" default="EN"/>
"E
N"
– з
начение по умолчанию:
Фиксированное значение также присваивается атрибуту автома-
тически, но при этом вы не можете определить никакого другого
"E
значения. В следующем примере
N"
иксированное значение:
– ф
s:attribute name="lang" type="xs:string" fixed="EN"/>
<x
П
о умолчанию атрибуты являются необязательными для использования. Чтобы декларировать обязательный атрибут, следует
воспользоваться атрибутом
s:attribute name="lang" type="xs:string" use="required"/>
<x
Если
элемент или атрибут имеет определение типа данных,
ML-
X
то это накладывает на них ограничение по контенту, и если
"x
элемент имеет тип
s:date"
:
"u
se"
и содержит строку, например,
"H
X
ML-
ello"
,
то этот элемент не пройдет проверку на корректность данных.
3.2.4
При помощи
О
Г
РА НИ ЧЕНИЯ И ЛИ ФА СЕ ТЫ
X
ML-
хем вы также можете добавлять свои собст-
с
венные ограничения для своих
X
ML-
э
лементов и атрибутов. Эти
ограничения еще называют аспектами, или фасетами.
Ограничения используются для того, чтобы определить прием-
X
лемые значения для
ML-
X
элементам еще называют «фасетами».
ML-
лементов или атрибутов. Ограничения по
э
61

3
.2.4.1 Ог ра ни че ни я п о з н ач ен и ю
"ag
В следующем примере определяется элемент
e"
для указания
возраста человека, а возраст человека, как известно, не может быть
меньше
больше
и
0
Для указания этих ограничений следует
.
150
указать диапазон значений возрастов с помощью следующей
конструкции:
<
!-- Файл Ogranich_znach.xsd -->
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="150"/>
</xs:restriction>
</xs:simpleType>
</element>
</schema>
3
.2.4.2 Ог ра ни че ни е п о н а бо р у з на ч е н и й
Для ограничения содержимого
XML-
емента набором прием-
эл
лемых значений, следует использовать ограничитель
В файле
O
оп
ределяется элемент
granich_nabor_znach.xsd
ничением. Его единственные приемлемые значения –
!-- Файл Ogranich_nabor_znach.xsd -->
<
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="car">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
numeration
e
ar"
"c
Au
G
di
olf
,
.
с
огра-
B
MW
,
:
62

</xs:simpleType>
</element>
</schema>
а основе ограничений можно определить пользовательский тип
Н
данных для более точного описания элементов (подробнее об определении пользовательских типов см. в подразделе 3.2.5):
<
!-- Файл Ogranich_nabor_znach.xsd -->
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:simpleType name="carType"/>
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="car" type="carType">
</ xs:schema>
carType"
В
этом случае тип
элементами, так как он не является частью элемента
.2.4.3 Ог ра ни че ни я п о с е р и и зн ач ен ий
3
Чтобы ограничить содержимое
букв, следует использовать ограничитель
granich_serii_znach.xsd
В
файле
O
"
м
ожет быть использован другими
r"
"ca
.
емента серией чисел или
эл
X
ML-
p
attern
.
tter"
ределяется элемент
оп
"le
с
ограничением. Его единственным допустимым значением может быть
одна буква в нижнем регистре в диапазоне от
<
!-- Файл Ogranich_serii_znach.xsd -->
<?xml version="1.0" encoding="UTF-8"?>
о
д
a"
"
:
z"
"
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
63

</xs:restriction>
</xs:simpleType>
</element>
</schema>
В ф
айле
Ogranich_initialsV.xsd
ределяется элемент
оп
"initials"
с ог
раничением. Его единственным допустимым значением может быть три
буквы в верхнем регистре в диапазоне от
<
!-- Файл Ogranich_initialsV.xsd -->
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="initials">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z][A-Z][A-Z]"/>
</xs:restriction>
</xs:simpleType>
</element>
</schema>
файле
В
Ogran
ich_initialsVN.xsd
кже определяется элемент
та
"A"
д
о
"Z"
:
"initial
s"
с ограничением. Его допустимым значением могут быть три буквы
в нижнем или верхнем регистре в диапазоне от
<
!-- Файл Ogranich_initialsVN.xsd -->
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="initials">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>
</xs:restriction>
</xs:simpleType>
</element>
</schema>
"a"
до
"z"
:
64

В ф
айле
O
granich_choise.xsd
опи
сан элемент
"c
hoice"
с ог
раничением.
Допустимым значением этого элемента может быть одна буква из
n, p
трех:
<
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="choice">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[npq]"/>
</xs:restriction>
</xs:simpleType>
</element>
</schema>
В ф
или q:
!-- Файл Ogranich_choise.xsd -->
айле
O
granich_prodid.xsd
оп
ределяется элемент
"
prodid"
с ог
рани-
чением. Его допустимым значением может быть пять последова-
д
тельных цифр, и каждая цифра должна быть в диапазоне от
<
!-- Файл Ogranich_prodid.xsd -->
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="prodid">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
</xs:restriction>
</xs:simpleType>
</element>
</schema>
.2.4.4 Др уг ие о гр ан и че ни я по с ер и и з н а ч е н ий
3
0
о
:
9
В файле
granich_letter.xsd
O
оп
ределяется элемент
etter"
"l
с
ограниче-
нием. Его допустимым значением является ноль или больше букв
a
z
д
в нижнем регистре в диапазоне от
о
:
65

!-- Файл Ogranich_letter.xsd -->
<
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>
</element>
</schema>
В
файле
Ogranich_letterNV.xsd
та
кже определяется элемент
"letter"
с ограничением. Его приемлемым значением будет одна или больше
пара букв, при этом каждая пара должна содержать букву в нижнем
регистре, за которой следует буква в верхнем регистре. Например,
ToP"
"s
б
удет соответствовать данному шаблону, а
<
!-- Файл Ogranich_letterNV.xsd -->
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z][A-Z])+"/>
</xs:restriction>
</xs:simpleType>
</element>
"S
top"
ил
и
"s
top"
н
ет:
</schema>
O
В ф
айле
приемлемым значением будет только строка
<
!-- Файл Ogranich_gender.xsd -->
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="gender">
granich_gender.xsd
ределяется элемент
оп
"m
ale"
66
или
"ge
"f
emale"
nder"
:
Его
.

<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</element>
</schema>
granich_password.xsd
В ф
айле
O
оп
ределяется элемент
с ограничением. Его значением должна быть строка из
8
assword"
"p
имволов,
с
и этими символами могут быть буквы в нижнем или верхнем регистре от
!-- Файл Ogranich_password.xsd -->
<
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9]{8}"/>
</xs:restriction>
</xs:simpleType>
</element>
</schema>
о
д
a
либо цифры от
,
z
о
д
0
:
9
.2.4.5 Ог ра ни че ни я п о п р о б е л ьн ым с им во ла м
3
Чтобы определить, как будут восприниматься пробельные
символы, используется ограничитель
O
В
файле
granich_preserve.xsd
ничением. Ограничитель
X
ML
то указывает
ч
!-- Файл Ogranich_preserve.xsd -->
<
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="address">
<xs:simpleType>
-п
арсеру не удалять никакие пробельные символы:
оп
hiteSpace
w
whiteSpace
ределяется элемент
становлен в значение
у
.
"ad
dress"
с
eserve"
"pr
огра-
67
,

<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</element>
</schema>
В файле
granich_replace.xsd
O
с ограничением. Если ограничитель
eplace"
"r
, то
-парсер заменяет все пробельные символы (символы
ML
X
также определяется элемент
hiteSpace
w
тановлен в значение
ус
ddress"
"a
табуляции, пробела, конца строки и перевода каретки) символами
пробела:
<!-- Файл Ogranich_replace.xsd -->
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</element>
</schema>
айле
В ф
granich_collapse.xsd
O
с ограничением. Ограничитель
указывает
X
арсеру удалить все пробельные символы (символы
-п
ML
акже определяется элемент
т
hiteSpace
w
и
меет значение
ollapse"
"c
"ad
dress"
,
что
табуляции, пробела, конца строки и перевода каретки и конечного
пробела удаляются, а множественные пробелы заменяются одинарными символами пробела):
!-- Файл Ogranich_collapse.xsd -->
<
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
68

<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</element>
</schema>
3
.2.4.6 Ог ра ни че ни я п о д л и н е
Чтобы ограничить длину значения элемента, следует использо-
вать ограничители
файле
В
с
ограничением. Длина его значения должна быть точно
<!-
- Файл Ogranich_password_length.xsd -->
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</element>
</schema>
В файле
O
granich_password_length.xsd
Ogranich_password_minMax.xsd
length, maxLength
minLength
и
оп
.
ределяется элемент
определяется другой элемент
"p
assword"
8
имволов:
с
password"
"
и максимум 8 символов:
5
!-- Файл Ogranich_password_minMax.xsd -->
<
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>
раничением. Длина его значения должна быть минимум
с ог
69

</element>
</schema>
Большинство из этих ограничители неприменимы ко всем
типам, а некоторые имеют смысл только для определенных типов.
Всего в спецификации
ML Schema
X
редусмотрено
п
1
асетов,
ф
5
которые используются при определении данных:
ределяет максимальное количество десятичных
s:fractionDigits
x
– оп
знаков справа от десятичной точки;
s:length
x
–
оп
ределяет количество символов в строковом типе,
количество байтов в двоичном типе или количество элементов в
списочном типе;
xs:maxExclusive
–
пределяет исключающую верхнюю границу
о
области значений типа;
xs:minExclusive
–
ределяет исключающую нижнюю границу
оп
области значений типа;
xs:maxInclusive
–
определяет включающую верхнюю границу
области значений типа;
x
s:minInclusive
– оп
ределяет включающую нижнюю границу
области значений типа;
x
s:maxLength
–
оп
ределяет максимальное количество символов
в строковом типе, максимальное количество байтов в двоичном типе
или максимальное количество элементов в списочном типе;
s:minLength
x
– оп
ределяет минимальное количество символов
в строковом типе, минимальное количество байтов в двоичном типе
или минимальное количество элементов в списочном типе;
s:totalDigits
x
– оп
знаков для типов, унаследованных от
s:pattern
x
– оп
ределяет максимальное количество десятичных
mber
nu
;
ределяет шаблон, основанный на регулярном выра-
жении, с которым должен совпадать тип;
s:enumeration
x
– оп
ределяет фиксированное значение, с которым
должен совпадать тип;
оп
s:whiteSpace
x
Фасеты
pattern
ставления лексических значений. Элемент
ределяет правила нормирования пробелов.
–
enumeration
и
оч
ень удобны с точки зрения пред-
attern
p
оп
ределяет
70
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
