Схема проверки документа DTD

Download Report

Transcript Схема проверки документа DTD

Slide 1

Презентацию подготовила Гайнутдинова Аида, гр. 950б.


Slide 2

Что такое схема DTD и каким образом она
связывается с документами XML.
 Как написать внутреннюю или внешнюю
схему DTD.
 Объявление элементов и атрибутов в DTD.
 Использование ссылок в схемах DTD.
 Различия между парсерами с проверкой
правильности и без нее.
 Некоторые недостатки схем DTD и почему
необходимо создание новых тем.



Slide 3

DTD – это схема , разработанная еще для языка SGML. Когда
впервые появился XML, он был как “SGML без DTD”. Вы
можете получать хорошо оформленные документы XML, с
которыми не будет связано никакой схемы, но схема DTD – это
мощное средство добавления ограничений на обмен данных,
позволяющее контролировать использование в документах
должных структур данных, проверять правильность
содержания документа на предмет соблюдения некоторых
правил.


Slide 4

Схема DTD предоставляет шаблон разметки
документа, в котором указываются наличие,
порядок следования и расположение
элементов и их атрибутов в документе XML.


Slide 5

Документ XML можно представить в виде
древовидной структуры элементов, содержащей
данные, другие элементы и атрибуты. Схему
DTD тоже можно представить в виде дерева, но
между этими деревьями существует ряд
различий, даже если документ XML полностью
соответствует схеме DTD. Дерево DTD само по
себе не повторяет элементы или структуру. Но
его структуры дублируют элементы в
соответствующем правильном экземпляре XML.


Slide 6

Схемы DTD имеют дело с элементами документа XML или как с
элементами-контейнерами, или как с пустыми элементами (т.е.
подстановочными элементами в структуре документа). Элементыконтейнеры могут содержать данные (например, текст), дочерние
элементы или и то и другое. Схема DTD предоставляет
синтаксические правила для представления ограничений для этих
обеих моделей содержания.*
* Объявления содержания элемента или атрибута в схеме DTD
называется моделью содержания для этого элемента или атрибута.


Slide 7

Элементы в любом документе XML – это
фундаментальные
структуры,
которые
объединены для представления экземпляра
XML. Каждый элемент должен быть объявлен
в схеме DTD вместе с объявлением его типа.
Объявление типов элементов имеет
следующий вид:



Slide 8

1. Хорошо оформленный экземпляр XML

текст
2.-//- и правильный(со внедр. схемой DTD)


]>
текст


Slide 9

Элемент note содержит только текст и ничего больше.
Этот документ можно проверить, создав схему DTD с
объявлением типа элемента, указывающим на то, что
элемент
содержит
только
зарезервированное
ключевое слово #PCDATA или текст. PCDATA – это
обычные текстовые данные, но они считываются
парсером XML и обрабатываются должным образом.
Если в разметке документа есть ключевое слово
#PCDATA, это повлияет на обработку всего
документа, что может быть как желательным, так и
нежелательным.
CDATA – это тоже текст, но он не обрабатывается
парсером (кроме символов <, >, &, ’’).


Slide 10

Строка 1 - нужно использовать версию 1.0 спецификации XML.
Строка 2- объявление определенного типа документа, которое
дается в прологе документа XML: Существует
объявление элемента note, в [ ] – внутренняя схема DTD. Здесь
note – корневой элемент.
Строка 3 – объявление типа элемента для note. Здесь указано, что
note может содержать только текстовые данные. В () указывается
модель содержания, которая сообщает парсеру, что следует
ожидать от каждого элемента XML в документе.
Строка 4 означает закрытие внутренней схемы DTD и указывает
обработчику, что дальше следует документ XML.
Строка 5 содержит элемент note вместе с его текстовым
содержанием(#PCDATA).


Slide 11

Элементы могут быть контейнерами для других
элементов. Таким элементом обычно выступает
корневой элемент документа XML. В данном
случае для создания схемы DTD нужно указать,
что элемент note содержит элемент message, а
не текстовые данные. Затем объявить элемент
message вместе с его текстовым содержанием
(#PCDATA), т.к. д.б. объявлены все элементы
экземпляра XML – именно эта часть структуры и
подкрепляется с помощью схемы DTD.


Slide 12

1. *Элемент, содержащий только 1 дочерний экземпляр


Дочерний экземпляр

2.Определение типа документа для элемента*



]>

Дочерний экземпляр



Slide 13

Пустые элементы обычно используются для
подстановки или же для предоставления
требуемых значений атрибутов, которые
должным образом не изменяют другие
элементы. Добавим пустой элемент number. Для
этого объявим, что корневой элемент note
содержит number, и укажем в модели
содержания, что элемент пуст (не содержит ни
текстовые данные, ни другие элементы), при
помощи слова EMPTY.


Slide 14

1.Пустой элемент в документе XML



текст

2.Опредение типа документа для пустого элемента




]>


текст



Slide 15

Иногда мы знаем, что некий элемент не пустой (что-то
содержит), но не уверенны, какая именно модель
содержания нужна, тогда используется ключевое
слово ANY. Оно снимает целый ряд ограничений с
модели содержания, т.е. элемент может содержать
данные любого типа, независимо от конкретных имен
и порядка. Чтобы документ считался правильным,
необходимо добавить строку EMPTY>, без нее документ не будет правильным. Мы
не можем включать в экземпляр XML элементы,
которые не были объявлены в схеме DTD.


Slide 16

1.Добавление еще одного дочернего элемента к note



текст


2.Определение содержания для элемента note





]>


текст




Slide 17

Эти модели используются, когда необходимо
установить правило, которое разрешало бы
элементу содержать некоторую комбинацию
текстовых данных и других элементов. Если
корневой элемент содержит текст, то нужно
заранее объявить его смешанное содержание
при помощи знаков “|”- “или” и “*”- элемент
может использоваться несколько раз или не
использоваться вообще .


Slide 18

1.Смешанное содержание элемента

Важная заметка

текст


2.Проверка правильности элемента с помощью модели смеш.содерж.





]>
Важная заметка

текст




Slide 19

Содержание

Синтаксис

Интерпретация

Элемент(ы)

(дочерний _элемент1,
дочерний элемент2)>

Этот элемент может
содержать только
дочерние элементы

Смешанное

(#PCDATA , дочерний
элемент)*>

Содержит комбинацию
текстовых данных и
дочерних элементов

EMPTY

EMPTY>

Этот элемент ничего не
содержит

ANY



Может содержать
текстовые данные или
дочерние элементы


Slide 20

Превратим пустые элементы
number и date в
атрибуты элемента message, поскольку они
дополняют именно его. Объявление атрибутов
представляется в следующем виде:
имя_атрибута1 (тип) значение по умолчанию
имя_атрибута2(тип)значениепо умолчанию>


Slide 21

1. Экземпляр XML с атрибутами



текст




Slide 22

Существует 3 фундаментальных типа
атрибутов, объявляемых в рамках системы DTD:
Строки, указываемые с помощью ключевого
слова CDATA.
2. Маркированные атрибуты, указываемые с
помощью определенных раньше маркеров.
3. Атрибуты с перечислением, предлагающие
целый список допустимых значений.
1.


Slide 23

Значение

Интерпретация

#REQUIRED

Указывает на то, что атрибут должен быть
указан
Указывает на фиксированное значение
атрибута. Если значение атрибута
отличается от объявленного, документ не
считается правильным
Атрибут необязателен. Это означает, что
если для элемента атрибут не указан,
приложение при обработке может
использовать любое значение (если в этом
есть необходимость)

#FIXED

#IMPLIED


Slide 24

1.Определение типа документа с помощью ATTLIST



number CDATA #REQUIRED
date CDATA #REQUIRED>
]>


Определение типа документа




Slide 25

1. Правильный экземпляр XML с #FIXED



number CDATA #REQUIRED
date CDATA #REQUIRED
from CDATA #FIXED “Отправитель”>
]>

from=“Отправитель”>
Фиксированное значение атрибута




Slide 26

1.Правильный экземпляр XML с атрибутом #IMPLIED



number CDATA #REQUIRED
date CDATA #REQUIRED
from CDATA #FIXED “Отправитель”
status CDATA #IMPLIED>
]>

from=“Отправитель” status=“urgent”>
Фиксированное значение атрибута




Slide 27

Значение
ID

IDREF
ENTITY
NMTOKEN

Интерпретация
Уникальным образом идентифицирует
элемент (начинается с буквы, : или _, в
каждой инструкции м.б. только один ID)
Указывает на элементы, содержащие ID
Ссылка на внешний элемент
Содержит буквы, цифры, точки, знаки
подчеркивания, переносы и двоеточия, но не
пробелы


Slide 28

Ситуация: приложение сохраняет короткие
сообщения.
Каждому
сообщению
присваивается уникальный идентификатор
(атрибут number). Это же приложение
сохраняет элементы outcome и связывает их с
определенным элементом message (с
помощью атрибута msg), для дальнейшей
обработки.


Slide 29




number ID #REQUIRED
from CDATA #REQUIRED>

msg IDREF #IMPLIED>
]>

текст1
текст2
текст3
к первому
ко второму



Slide 30

ENTITY – это ссылки, позволяющие реализовать
подстановку строк. Объявление и определение ссылок
или подстановочных элементов осуществляются в схеме.
Когда обработчик XML доходит до подстановочного
элемента, он заменяется соответствующими, заранее
определенными данными. На наличие подстановочного
элемента указывает “&”, “;” ограничивает ссылку:
&ссылка;
<… [ … …]>
&today; - текст
073001 - текст


Slide 31

Тип NMTOKEN позволяет наложить
ограничение на допуcтимые символы в
содержании XML (только буквы, цифры,
точки, -, :, _).
<…[ … phone NMTOKEN #REQUIRED …]>
… phone=“123-456-789” …
… phone=“123 456 789” … неправильный вариант использования с “ ”.


Slide 32

Атрибуты типов с перечислением содержат список
допустимых значений, из которых можно выбирать
любое. Значения из списка указываются с помощью
знака “|” – логическое “или”.
<… [ … alert ( low | normal | urgent) “normal”…]>
…alert=“low” …
… … // alert=“normal”
<… [ … alert ( low | normal | urgent) #IMPLIED…]>
… … // необязательный


Slide 33

Индикаторы последовательностей иногда
называют соединителями (connector), так как они
служат для соединения или установления
взаимосвязи между двумя или большим числом
элементов.


Slide 34

Символ Пример

Интерпретация

,

( a, b, c)

Оператор последовательности разделяет члены списка,
когда необходимо последовательное использование
членов списка (сначала a, затем b, после этого c)

|

( a|b|c)

Оператор выбора разделяет члены списка, когда
необходимо использовать только один из членов списка

date

Отсутствие какого-либо символа указывает на
необходимое вхождение одного и только одного
элемента date

?

subject?

Этот символ указывает на необязательное вхождение
(нуль или один раз) элемента subject

+

paragraph+

Указывает на обязательное и повторяющееся
вхождение(один или несколько раз) элемента paragraph

*

brother*

Указывает на необязательное и повторяющееся
вхождение(нуль или несколько раз) элемента brother


Slide 35

Для проверки документов XML с использованием схемы
DTD
необходим
соответствующий
парсер.
Он
поставляется в виде COM-объекта вместе с Internet
Explorer-ом, хотя и не используется браузером. Для
получения доступа к нему следует создать объект парсера
в браузере с помощью сценария(JavaScript, VBScript). Или
загрузить
с
узла
MSDN
(http://msdn.microsoft.com/downloads/samples/internet/xml
/xml_validator/ ).


Slide 36

Отличие внешней схемы DTD от внутренней в том, что она
сохраняется в виде отдельного файла с расширением .DTD. Для
упрощения лучше хранить документы XML, схемы DTD и
сценарии парсера в одной папке.
Чтобы указать внешнюю схему DTD, необходимо в объявлении
типа документа включить слово SYSTEM или PUBLIC, после
указать адрес URL файла , содержащего DTD. PUBLIC – схема
общедоступна
и
совместно
используется
многими
пользователями, обычно хранится в репозитарии.



Slide 37

Повторим то, что узнали сегодня.


Slide 38



Этот подход унаследован от языка SGML.
В котором он использовался на
протяжении многих лет.


Slide 39



Схемы DTD (как и любые другие схемы
XML) предоставляют шаблон разметки
документа, в котором определяется
наличие, порядок и расположение
элементов и их атрибутов в документе
XML.


Slide 40



Дерево DTD само по себе не содержит
повторяющихся элементов или структур.
Однако его структура обеспечивает
повторение элементов в соответствующем
правильном экземпляре XML.


Slide 41



Объявление типа документа, которое
располагается в прологе документа XML,
связывает схему DTD с документом. Как
только разработчик сталкивается с
подобным объявлением, он загружает
схему DTD и проверяет документ XML на
соответствие всем ограничениям,
изложенным в этой схеме.


Slide 42



Ключевое слово ANY допускает любое
содержание элемента – или данные, или
другие элементы. Смешанное содержание
позволяет элементам содержать
комбинацию текстовых данных и
элементов. Ключевое слово EMPTY
указывает на отсутствие в элементе
какого-либо содержания. Содержание
можно объявить для элементовконтейнеров прямо в документе XML.


Slide 43



Все парсеры XML делятся на две группы –
1) способные проверять документы на соответствие
ограничениям, изложенным в схеме DTD или
подобной схеме другого типа;
2) не обладающие подобными возможностями.
Парсер второго типа может определить только то,
что документ XML хорошо оформлен, т.е.
соответствует основным синтаксическим правилам
XML. Парсер первого типа способен пойти дальше,
определив то, что документ XML хорошо оформлен,
но и то, что он соответствует всем ограничениям,
заданным в связанной с ним схеме.


Slide 44

Проверьте свои знания, полученные в результате
изучения материала настоящего урока. Cоздайте
свою схему DTD для проверки файлов.