2 тема. Определение типа документа . document type definition . ...

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

Upload: louie

Post on 10-Jan-2016

66 views

Category:

Documents


2 download

DESCRIPTION

Презентацию подготовила Гайнутдинова Аида, гр. 950б. 2 тема. Определение типа документа . Document Type Definition . (схемы DTD). Сегодня рассмотрим следующее:. Что такое схема DTD и каким образом она связывается с документами XML. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 2: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

Что такое схема DTD и каким образом она связывается с документами XML.

Как написать внутреннюю или внешнюю схему DTD.

Объявление элементов и атрибутов в DTD.

Использование ссылок в схемах DTD. Различия между парсерами с проверкой

правильности и без нее. Некоторые недостатки схем DTD и

почему необходимо создание новых тем.

Page 3: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 4: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 5: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 6: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

* Объявления содержания элемента или атрибута в схеме DTD называется моделью содержания для этого элемента или атрибута.

Page 7: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 8: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

1. Хорошо оформленный экземпляр XML<?xml version = “1.0”?> <note>текст</note>2.-//- и правильный(со внедр. схемой

DTD)<?xml version = “1.0”?><!DOCTYPE note [<!ELEMENT note (#PCDATA )>

]> <note>текст</note>

Page 9: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

Элемент note содержит только текст и ничего больше.

Этот документ можно проверить, создав схему DTD с объявлением типа элемента, указывающим на то, что элемент содержит только зарезервированное ключевое слово #PCDATA или текст. PCDATA – это обычные текстовые данные, но они считываются парсером XML и обрабатываются должным образом.

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

Page 10: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

Строка 1 - нужно использовать версию 1.0 спецификации XML.

Строка 2- объявление определенного типа документа, которое дается в прологе документа XML: <!DOCTYPE …> Существует объявление элемента note, в [ ] – внутренняя схема DTD. Здесь note – корневой элемент.

Строка 3 – объявление типа элемента для note. Здесь указано, что note может содержать только текстовые данные. В () указывается модель содержания, которая сообщает парсеру, что следует ожидать от каждого элемента XML в документе.

Строка 4 означает закрытие внутренней схемы DTD и указывает обработчику, что дальше следует документ XML.

Строка 5 содержит элемент note вместе с его текстовым содержанием(#PCDATA).

Page 11: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 12: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

<?xml version = “1.0”?> <note>

<message>Дочерний экземпляр</message></note>2.Определение типа документа для элемента*<?xml version = “1.0”?><!DOCTYPE note [<!ELEMENT note (message)><!ELEMENT message(#PCDATA )>

]> <note>

<message>Дочерний экземпляр</message></note>

Page 13: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 14: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

1.Пустой элемент в документе XML<?xml version = “1.0”?> <note>

<number /><message>текст</message>

</note>2.Опредение типа документа для пустого

элемента<?xml version = “1.0”?><!DOCTYPE note [<!ELEMENT note (number, message)><!ELEMENT number EMPTY><!ELEMENT message(#PCDATA )>

]> <note>

<number /><message>текст</message>

</note>

Page 15: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 16: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

1.Добавление еще одного дочернего элемента к note <?xml version = “1.0”?> <note>

<number /><message>текст</message><date />

</note>2.Определение содержания для элемента note<?xml version = “1.0”?><!DOCTYPE note [<!ELEMENT note ANY ><!ELEMENT number EMPTY><!ELEMENT message(#PCDATA )><!ELEMENT date EMPTY>

]> <note>

<number /><message>текст</message><date />

</note>

Page 17: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 18: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

1.Смешанное содержание элемента<?xml version = “1.0”?> <note>Важная заметка

<number /><message>текст</message><date />

</note>2.Проверка правильности элемента с помощью модели

смеш.содерж.<?xml version = “1.0”?><!DOCTYPE note [<!ELEMENT note (#PCDATA | number | message | date)* ><!ELEMENT number EMPTY><!ELEMENT message(#PCDATA )><!ELEMENT date EMPTY>

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

<number /><message>текст</message><date />

</note>

Page 19: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

Содержание

Синтаксис Интерпретация

Элемент(ы)

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

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

Смешанное

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

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

EMPTY <!ELEMENT имя EMPTY>

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

ANY <!ELEMENT имя ANY>

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

Page 20: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

<!ATTLIST имя_элемента имя_атрибута1 (тип) значение по

умолчаниюимя_атрибута2(тип)значениепо

умолчанию>

Page 21: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

1. Экземпляр XML с атрибутами<?xml version = “1.0”?>

<note>

<message number=“10” date=“073001”>текст</message>

</note>

Page 22: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

Существует 3 фундаментальных типа атрибутов, объявляемых в рамках системы

DTD:

1. Строки, указываемые с помощью ключевого слова CDATA.

2. Маркированные атрибуты, указываемые с помощью определенных раньше маркеров.

3. Атрибуты с перечислением, предлагающие целый список допустимых значений.

Page 23: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

#REQUIRED Указывает на то, что атрибут должен быть указан

#FIXED Указывает на фиксированное значение атрибута. Если значение атрибута отличается от объявленного, документ не считается правильным

#IMPLIED Атрибут необязателен. Это означает, что если для элемента атрибут не указан, приложение при обработке может использовать любое значение (если в этом есть необходимость)

Page 24: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

<?xml version = “1.0”?><!DOCTYPE note [<!ELEMENT note (message)><!ELEMENT message (#PCDATA)><!ATTLIST message

number CDATA #REQUIREDdate CDATA #REQUIRED>

]><note>

<message number=“10” date=“073001”>Определение типа документа</message>

</note>

Page 25: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

1. Правильный экземпляр XML с #FIXED<?xml version = “1.0”?><!DOCTYPE note [<!ELEMENT note (message)><!ELEMENT message (#PCDATA)><!ATTLIST message

number CDATA #REQUIREDdate CDATA #REQUIREDfrom CDATA #FIXED “Отправитель”>

]><note>

<message number=“10” date=“073001” from=“Отправитель”>Фиксированное значение атрибута</message>

</note>

Page 26: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

<?xml version = “1.0”?><!DOCTYPE note [<!ELEMENT note (message)><!ELEMENT message (#PCDATA)><!ATTLIST message

number CDATA #REQUIREDdate CDATA #REQUIREDfrom CDATA #FIXED “Отправитель”status CDATA #IMPLIED>

]><note>

<message number=“10” date=“073001” from=“Отправитель” status=“urgent”>Фиксированное значение атрибута</message>

</note>

Page 27: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

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

IDREF Указывает на элементы, содержащие ID

ENTITY Ссылка на внешний элемент

NMTOKEN Содержит буквы, цифры, точки, знаки подчеркивания, переносы и двоеточия, но не пробелы

Page 28: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 29: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

<?xml version = “1.0”?><!DOCTYPE note [<!ELEMENT note (message+, outcome+)><!ELEMENT message (#PCDATA)><!ATTLIST message

number ID #REQUIREDfrom CDATA #REQUIRED>

<!ELEMENT outcome (#PCDATA)><!ATTLIST outcome

msg IDREF #IMPLIED>]>

<note><message number=“a1” from=“KS”>текст1</message> <message number=“a2” from=“GS”>текст2</message> <message number=“a3” from=“GK”>текст3</message><outcome msg=“a1”>к первому</outcome> <outcome msg=“a2”>ко второму</outcome>

</note>

Page 30: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

<… [ … <!ENTITY today “073001”> …]><note><message>&today; - текст</message></note><note><message>073001 - текст</message></note>

Page 31: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

Тип NMTOKEN позволяет наложить ограничение на допуcтимые символы в содержании XML (только буквы, цифры, точки, -, :, _).

<…[ … phone NMTOKEN #REQUIRED …]><note>… phone=“123-456-789” …</note><note>… phone=“123 456 789” …</note> - неправильный вариант использования с “ ”.

Page 32: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 33: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 34: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

Символ

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

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

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

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

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

+ paragraph+

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

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

Page 35: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 36: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 37: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 38: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 39: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 40: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 41: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 42: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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

Page 43: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

Все парсеры XML делятся на две группы – 1) способные проверять документы на

соответствие ограничениям, изложенным в схеме DTD или подобной схеме другого типа; 2) не обладающие подобными возможностями.

Парсер второго типа может определить только то, что документ XML хорошо оформлен, т.е. соответствует основным синтаксическим правилам XML. Парсер первого типа способен пойти дальше, определив то, что документ XML хорошо оформлен, но и то, что он соответствует всем ограничениям, заданным в связанной с ним схеме.

Page 44: 2  тема.  Определение типа документа .  Document Type Definition .  (схемы  DTD)

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