Java Advanced Описание и проверка структуры XML
2 СПбГУ ИТМО Georgiy KorneevJava Advanced / Описание и проверка структуры XML Содержание 1.DTD 2.XML Schema 3.Проверка структуры XML 4.Заключение
DTD Часть 1
4Georgiy KorneevJava Advanced / Описание и проверка структуры XML Document Type Definition DTD – язык описания структуры XML- документов Описание не является XML-документом DTD не предназначен для описания документов с пространствами имен
5Georgiy KorneevJava Advanced / Описание и проверка структуры XML Ссылки на файлы Синтаксис СсылкаНаФайл СсылкаНаСистемныйФайл | СсылкаНаОбщедоступныйФайл СсылкаНаСистемныйФайл SYSTEM "ИмяФайла" СсылкаНаОбщеизвесныйФайл PUBLIC "Идентификатор" "ИмяФайла" Примеры SYSTEM "books.xml" PUBLIC "-//Examples/BookExample" "books.xml"
6Georgiy KorneevJava Advanced / Описание и проверка структуры XML Указание DTD Синтаксис ВнутреннееОписание ::= [ ТелоDTD ] Примеры
7Georgiy KorneevJava Advanced / Описание и проверка структуры XML Описание элемента Описание структуры содержимого Описываются возможные вложенные элементы и текст Описание атрибутов Описываются имена, типы и значения атрибутов по умолчанию
8Georgiy KorneevJava Advanced / Описание и проверка структуры XML Описание структуры содержимого Синтаксис Содержимое EMPTY- без содержимого ANY- любое содержимое Дети- только вложенные элементы Смешанное- вложенные элементы и текст Примеры
9Georgiy KorneevJava Advanced / Описание и проверка структуры XML Описание детей Синтаксис (Выбор | Последовательность) Количество Дети (Имя | Выбор | Последовательность) Количество Выбор ( Дети | Дети | …| Дети ) Количество Последовательность ( Дети, Дети, …, Дети ) Количество Количество - Один ?- Ноль или один +- Один и более *- Любое
10Georgiy KorneevJava Advanced / Описание и проверка структуры XML Примеры описания детей Только книги Книги и журналы вперемешку Сначала книги, потом журналы Книги и журналы парами Блок кода
11Georgiy KorneevJava Advanced / Описание и проверка структуры XML Описание смешанного содержимого Синтаксис ( #PCDATA | Имя | Имя | … Имя ) * Примеры (#PCDATA | br | emboss | img)* (#PCDATA)* (#PCDATA)
12Georgiy KorneevJava Advanced / Описание и проверка структуры XML Описание атрибутов Синтаксис Описание атрибута Имя ТипАтрибута ЗначениеПоУмолчанию
13Georgiy KorneevJava Advanced / Описание и проверка структуры XML Типы атрибутов Строковые CDATA Проверяемые ID- Идентификатор IDREF- Ссылка на идентификатор IDREFS- Ссылки на идентификатор NMTOKEN- Имя NMTOKENS- Имена Перечислимые ( Имя | Имя | … | Имя )
14Georgiy KorneevJava Advanced / Описание и проверка структуры XML Значения по умолчанию Значение по умолчанию "значение" Значение по умолчанию #FIXED "значение" Без значения по умолчанию #IMPLIED Обязательно указывать #REQUIRED
15Georgiy KorneevJava Advanced / Описание и проверка структуры XML Пример описания атрибутов Рамка
16Georgiy KorneevJava Advanced / Описание и проверка структуры XML Сущности Общие сущности Сущности-параметры Примеры
17Georgiy KorneevJava Advanced / Описание и проверка структуры XML Применение общих сущностей Сокращения Copyright: ©right; Разбиение XML на файлы &books; &magazines;
18Georgiy KorneevJava Advanced / Описание и проверка структуры XML Применение сущностей-параметров Структура программы Разбиение DTD на файлы %books;
19Georgiy KorneevJava Advanced / Описание и проверка структуры XML DTD и пространства имен В DTD можно указывать название элементов и атрибутов с двоеточиями Пространства имен задаются с помощью fixed-атрибутов
20Georgiy KorneevJava Advanced / Описание и проверка структуры XML Пример: DTD и пространства имен Библиотека
XML Schema Часть 2
22Georgiy KorneevJava Advanced / Описание и проверка структуры XML XML Schema XML Schema – язык описания структуры XML-документов Описание является XML-документом XML Schema предназначена для описания документов с пространствами имен XML Schema позволяет выразить все то же, что и DTD Пространство имен
23Georgiy KorneevJava Advanced / Описание и проверка структуры XML Типы Описывают множество значений Простые типы (simpleType) Строка символов Атрибуты, Элементы Сложные типы (complexType) Элементы и текст Элементы
24Georgiy KorneevJava Advanced / Описание и проверка структуры XML Простые типы Стандартные Ограниченные (restricted) Ограничение другого типа Списочные (list) Список элементов другого типа Объединение (union) Объединение простых типов
25Georgiy KorneevJava Advanced / Описание и проверка структуры XML Стандартные типы (1) Строковые string, normalizedString, token Неограниченные целые integer, positiveInteger, nonPositiveInteger, negativeInteger, nonNegativeInteger Ограниченные целые (unsigned)Byte, (unsigned)Short, (usigned)Int, (unsigned)Long Дробные decimal, float, double
26Georgiy KorneevJava Advanced / Описание и проверка структуры XML Стандартные типы (2) Дата и время dateTime, date, time, duration Имена name, QName, NCName Из DTD ID, IDREF, NMTOKEN Специальные boolean, anyURI, language
27Georgiy KorneevJava Advanced / Описание и проверка структуры XML Объявление ограниченного типа Синтаксис Ограничения
28Georgiy KorneevJava Advanced / Описание и проверка структуры XML Пример: объявление типа Серийный номер Телефон
29Georgiy KorneevJava Advanced / Описание и проверка структуры XML Объявление списочного типа Синтаксис Примеры
30Georgiy KorneevJava Advanced / Описание и проверка структуры XML Объявление типа-объединения Синтаксис Пример
31Georgiy KorneevJava Advanced / Описание и проверка структуры XML Объявление сложного типа Синтаксис ОписаниеСодержимого ОписаниеАтрибута*
32Georgiy KorneevJava Advanced / Описание и проверка структуры XML Описание атрибута Синтаксис ОбявлениеПростогоТипа Пример
33Georgiy KorneevJava Advanced / Описание и проверка структуры XML Описание содержимого Синтаксис Описание содержимого Содержимое Содержимое ОписаниеЭлемента ОписаниеГруппы
34Georgiy KorneevJava Advanced / Описание и проверка структуры XML Описание элемента Синтаксис ОбявлениеТипа Пример
35Georgiy KorneevJava Advanced / Описание и проверка структуры XML Описание групп Синтаксис ОписаниеСодержимого Пример
36Georgiy KorneevJava Advanced / Описание и проверка структуры XML Пример: описание сложного типа Адрес
37Georgiy KorneevJava Advanced / Описание и проверка структуры XML Описание структуры Синтаксис Описание Типов, Атрибутов, Элементов
38Georgiy KorneevJava Advanced / Описание и проверка структуры XML Пример: пространства имен
39Georgiy KorneevJava Advanced / Описание и проверка структуры XML Пример: пространства имен elementFormDefault="unqualified" St. Petersburg,... elementFormDefault="qualified"
40Georgiy KorneevJava Advanced / Описание и проверка структуры XML Разбиение на файлы Возможно включения одних схем в другие Синтаксис Пример
41Georgiy KorneevJava Advanced / Описание и проверка структуры XML Аннотации Определение типов, элементов, атрибутов могут содержать аннотации Синтаксис Описания текст
42Georgiy KorneevJava Advanced / Описание и проверка структуры XML Связывание документа со схемой Пример ...
Проверка структуры XML Часть 3
44Georgiy KorneevJava Advanced / Описание и проверка структуры XML Проверка по DTD Свойство DocumentBuilderFactory validating – производить ли проверку Метод DocumentBuilder isValidating() – производиться ли проверка Свойство SAXParserFactory validating – производить ли проверку Свойство SAXParser isValidating() – производиться ли проверка
45Georgiy KorneevJava Advanced / Описание и проверка структуры XML Проверка по XML Schema Пакет javax.xml.validation Класс Shema Установка схемы Свойство DocumentBuilderFactory.schema Свойство SAXParserFactory.schema
46Georgiy KorneevJava Advanced / Описание и проверка структуры XML Создание Shema Класс SchemaFactory Методы static newInstance(type) – создание фабрики newSchema(…) – создание экземпляра схемы setFeature(uri, value) – установить настройку Типы схем Класс XMLConstants W3C_XML_SCHEMA_NS_URI
47Georgiy KorneevJava Advanced / Описание и проверка структуры XML Пример: задание схемы SchemaFactory sfactory = SchemaFactory.newInstance( XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = sfactory.newSchema( new File("books.xsd")); SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setSchema(schema); factory.setNamespaceAware(true); factory.setValidating(true); SAXParser parser = factory.newSAXParser();
Заключение Часть 6
49Georgiy KorneevJava Advanced / Описание и проверка структуры XML Ссылки (1) Extensible Markup Language 1.1 // XML Schema Part 0: Primer // / / XML Schema Part 1: Structures // / / XML Schema Part 2: Datatypes // / /
50 СПбГУ ИТМО Georgiy KorneevJava Advanced / Описание и проверка структуры XML Вопросы