Для XML документа (ЛР№1) необходимо создать xsd-схемы.
xsd-схемы включающую в себя требования на наличие:
- Всех элементов в XML-файле.
- С использованием ссылок на другие элементы (атрибут “ref”).
- С использованием собственных типов данных.
- С использованием не менее 4-х элементов xml-схем (any, all, choice, list)
- C использованием граней (facets). Использовать не менее 4 типов ограничений (свое ограничение для определенного типа данных; если типов данных меньше, то определить несколько видов ограничений для какого-нибудь типа).
- Все созданные схемы реализовать через собственные типы данных.
В результате должно быть сформировано не менее 3-х xsd-схем и на их основании созданы соответствующие xml-документы.
Элементы XML-схем
Элемент | Описание |
all | Определяет под-элементы в произвольном порядке. Дочерние элементы не обязательны, но могут появляться только по одному разу |
annotation | Родительский элемент элементов-комментариев <appInfo> и <documentation> |
any | Определяет любые под-элементы |
anyAttribute | Определяет любые атрибуты |
appInfo | Элемент-комментарий. Задает титул схемы |
attribute | Определяет атрибут |
attributeGroup | Определяет группу атрибутов |
choice | Определяет выбор других элементов. Является аналогом оператора "|" в DTD |
complexContent | Определяет ограничения или расширения контентной модели мложного типа |
complexType | Определяет элемент сложного типа complexType |
documentation | Элемент-комментарий. Предоставляет полезную информацию о схеме |
element | Определяет элемент |
extension | Определяет расширения элемента |
field | Определяет поле. Использует XPath. Может применяться внутри элемента <unique> для определения полей |
group | Определяет группу элементов |
import | Задает импорт декларации типов из другой схемы |
include | Задает включение другой схемы в существующее пространство имен |
key | Задает элементы или атрибуты с ключом, указывающим на другой элемент |
keyref | Задает элементы или атрибуты, на которые указывает ключ |
list | Определяет элементы, которые могут содержать список значений |
redefine | Задает переопределение уже определенных элементов |
restriction | Задает ограничения элемента |
schema | Задает корневой элемент схемы |
selector | Задает селектор для отбора XML-элементов |
sequence | Задает последовательность других элементов. Является аналогом оператора "," в DTD |
simpleContent | Определяет контентную модель типа, который может содержать только символьные данные |
simpleType | Определяет элемент простого типа simpleType |
union | Определяет элементы или атрибуты, которые могут иметь множественные значения |
unique | Определяет элементы или атрибуты, которые должны иметь уникальные значения |
Грани XML-схем
Грани задают ограничения на содержание элементов.
Элемент | Описание |
enumeration | Задает список значений |
length | Задает длину |
maxLength | Задает максимальную длину |
minLength | Задает минимальную длину |
maxExclusive | Задает максимальное значение |
maxInclusive | Задает максимальное значение включительно |
minExclusive | Задает минимальное значение |
minInclusive | Задает минимальное значение включительно |
fractionDigits | Задает число цифр в дроби |
totalDigits | Задает число цифр |
pattern | Задает паттерн содержимого элементов |
whiteSpace | Задает значение пробелов в содержимом элементов |
Атрибуты XML-схем
Атрибуты предоставляют дополнительную информацию об элементах
Атрибут | Описание |
abstract | Задает элемент как имеющий абстрактный тип |
attributeFormDefault | Задает квалификацию локальных атрибутов как глобально заданных |
base | Задает базовый тип элемента |
block | Задает запрещенное выведение ограничением (derivations-by-restriction) |
blockDefault | Задает изначальное ограничение block на все определения типов. |
default | Задает значение элемента или атрибута по умолчанию |
elementFormDefault | Задает квалификацию локального элемента как глобально определенного |
final | Задает запрещенное выведение ограничением (derivations-by-restriction) |
finalDefault | Задает изначальное ограничение final на все определения типов |
fixed | Задает фиксированное значение элемента или атрибута |
form | Задает, что локально объявленные элементы определяются в конкретных экземплярах документов |
itemType | Задает тип пунктов списка |
memberTypes | Задает тип членов, использованных в союзе (union) |
maxOccurs | Задает максимальное количество вхождений элемента |
minOccurs | Задает минимальное количество вхождений элемента |
mixed | Задает элемент как имеющий смешанный тип |
name | Задает имя элемента или атрибута |
namespace | Задает пространство имен элемента или атрибута |
noNamespaceSchemaLocation | Задает местоположение документа-схемы, который не имеет результирующих пространств имен |
nillable | Определяет, что элемент может иметь пустое значение NULL (nil) |
processContents | Определяет, как валидатор схемы должен обрабатывать элемент |
ref | Задает ссылку на глобально определенный элемент |
schemaLocation | Определяет местоположение схемы |
substitutionGroup | Определяет, что элементы заменяются другими элементами |
targetNamespace | Задает результирующее пространство имен схемы |
type | Задает тип элемента |
use | Задает использование элемента (обязательный или нет) |
value | Задает значение элемента схемы |
xsi:nil | Задает реальное содержание пустого (NULL) элемента XML-документа |
xsi:schemaLocation | Задает реальное местоположение элемента в XML-документе |
xsi:type | Задает реальный тип элемента в XML-документе |
Примитивные типы данных
Имя | Описание | Пример | Грани |
string | Строка символов как последовательность 10646 символов Unicode или ISO/IEC, включая пробел, символ табуляции, возврат каретки и перевод строки | John Lennon | enumeration length maxLength minLength pattern whiteSpace |
boolean | бинарные логические значения: true или false,1 или 0. | false | pattern whiteSpace |
decimal | Десятичное число как последовательность десятичных цифр, разделенных периодом как десятичным разделителем | 3145.56 | enumeration fractionDigits maxExclusive maxInclusive minExclusive minInclusive pattern totalDigits whiteSpace |
float | 32-битное число с плавающей запятой, за мантиссой идет (не обязательно) экспонента | 4.6E4 | enumeration maxExclusive maxInclusive minExclusive minInclusive pattern whiteSpace |
double | 64-битное число с плавающей запятой, за мантиссой идет (не обязательно) экспонента | 4.6E4 | enumeration maxExclusive maxInclusive minExclusive minInclusive pattern whiteSpace |
hexBinary | шестнадцатиричные данные в виде последовательности бинарных октетов | 0FFF | enumeration length maxLength minLength pattern whiteSpace |
base64Binary | Бинарные данные в кодировке base64 в виде последовательности бинарных октетов | GpM7 | enumeration length maxLength minLength pattern whiteSpace |
anyURI | Универсальный идентификатор ресурса (Uniform Resource Identifier) определенный в стандартах RFC 2396 и RFC 2732 | https://cnet.com | enumeration length maxLength minLength pattern whiteSpace |
QName | Пригодное XML-имя как определяется в пространствах имен XML | xs:element | enumeration length maxLength minLength pattern whiteSpace |
NOTATION | Атрибут NOTATION как определяется в XML | enumeration length maxLength minLength pattern whiteSpace |
Лабораторная работа №4
Работа с XLink
1. В XML документе (ЛР№1) создать ссылки на другие XML документы (созданы в ЛР№2 или ЛР№3).
2. При создании XML-документа(-ов) требуется выполнение следующих условий:
a) наличие ссылок (простые) не менее чем у 6 элементах;
b) использовать все 8 атрибутов связующих элементов (не обязательно в одном элементе);
c) сформировать простые ссылки (использовать атрибуты: replace, new, embed);
d) использовать поведение (атрибут xlink:actuate) c различными значениями (onRequest, onLoad);
3. Для данного XML-документа создать соответствующие DTD-определения и XSD-схемы.
Лабораторная работа №5
DOM
Для xml-докумета, разработанного в ЛР№1 средствами языка JavaScript или VBScript и библиотеки работы с DOM реализовать:
1. Изменения данных внутри элемента (-ов).
2. Добавления элементов (узлов)
3. Удаления элементов (узлов)
4. Замены элементов (узлов)
5. Вывода xml-файла.
Лабораторная работа №6
DOM
Для xml-докумета, разработанного в ЛР№1 средствами языка программирования Java и библиотек работы с DOM реализовать методы:
6. Изменения данных внутри элемента (-ов).
7. Добавления элементов (узлов)
8. Удаления элементов (узлов)
9. Замены элементов (узлов)
10. Вывода xml-файла.
Лабораторная работа №7
SAX
Для xml-докумета, разработанного в ЛР№1 средствами языка программирования Java и библиотек работы с SAX реализовать методы:
1. Поиска максимального уровня вложенности
2. Вывода содержимого xml-файла в виде таблицы (вывод произвести в html-файл).
Лабораторная работа №8