Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы XML-технологий. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
А
трибут декларируется следующим образом:
<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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]