610.90K
Категория: ПрограммированиеПрограммирование

XML технологии (тема 3)

1.

XML
технологии
(тема 3)
Магоян Калуст Хачатурович

2.

DTD
XML-документ должен быть корректно сформированным (well-formed).
Корректно сформированный XML-документ может быть валидным (valid):
• пролог документа должен содержать структуру документа (DTD);
• остальной документ должен отвечать структуре, заданной в DTD.

3.

DTD
Требования корректности документа: набор правил, определенных в
спецификации XML, которым необходимо следовать.
Иначе придётся столкнуться с фатальной ошибкой (fatal error)!
Требования валидности документа: дополнительный набор правил в
спецификации XML, которым рекомендуется следовать.
Иначе можно столкнуться с ошибкой (error), но не фатальным сбоем!
Преимущества использования валидных XML-документов:
использование валидных документов особенно полезно для проверки
однородности среди группы схожих документов.

4.

Добавление DTD
DTD – Document Type Definition – это язык описания структуры документа.
Описывает:
Какие элементы могут быть в документе
Количество элементов
Какие атрибуты могут быть у элементов
Обязательность атрибутов
Описание сущностей

5.

Форма записи DTD
<!DOCTYPE имя-корневого-элемента []>
Пример: <!DOCTYPE catalog []>
Типы объявлений разметки:
Объявления типов элементов
Объявления списков атрибутов
Объявления примитивов
Объявления нотаций
Инструкции по обработке
Комментарии
Ссылки на параметрические примитивы

6.

Объявление типов элементов
<!ELEMENT имя-элемента (что внутри?)>
Пример:
<!ELEMENT book (title)>
<!ELEMENT title (#PCDATA) >
#PCDATA -> текст (Parsed Character Data)
<!ELEMENT GENERAL ANY>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE COLLECTION
[
<!ELEMENT COLLECTION (CD)+>
<!ELEMENT CD (#PCDATA)>
<!-- Вы также можете включать комментарии в DTD. -->
]
>
<COLLECTION>
<CD>Моцарт: фортепианные концерты</CD>
<CD>Телеман: концерт для трубы ре мажор</CD>
<CD>Гендель: концерты для органа</CD>
</COLLECTION>

7.

Каким может быть содержание элемента (что внутри?)
• Пустое содержимое (EMPTY)
<!ELEMENT IMAGE EMPTY>
<IMAGE></IMAGE>
<IMAGE />
• Любое содержимое (ANY)
<!ELEMENT MISC ANY>
• Дочернее содержимое элемента
• Смешанное содержимое

8.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE BOOK
[
<!ELEMENT BOOK (TITLE, AUTHOR)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT AUTHOR (#PCDATA)>
]>
<BOOK>
<TITLE>Компьютерные сети</TITLE>
<AUTHOR>Эндрю Таненбаум</AUTHOR>
</BOOK>
Модель содержимого может иметь одну из следующих основных форм:
• Последовательная
• Выборочная
<!DOCTYPE MOUNTAIN
[
<!ELEMENT MOUNTAIN (NAME, HEIGHT, CUONTRY)>
<!ELEMENT NAME (#PCDATA)>
<!ELEMENT HEIGHT (#PCDATA)>
<!ELEMENT CUONTRY (#PCDATA)>
]>
<!DOCTYPE FILM
[
<!ELEMENT FILM (STAR | NARRATOR | INSTRUCTOR)>
<!ELEMENT STAR (#PCDATA)>
<!ELEMENT NARRATOR (#PCDATA)>
<!ELEMENT INSTRUCTOR (#PCDATA)>
]>
<MOUNTAIN>
<NAME>Эльбрус</NAME>
<HEIGHT>5642</HEIGHT>
<CUONTRY>Россия</CUONTRY>
</MOUNTAIN>
<FILM>
<STAR>Энтони Хопкинс</STAR>
</FILM>

9.

Символ
Значение
?
Ни одного или один из предшествующих элементов (ноль или один)
+
Один или более из предшествующих элементов (от одного и больше)
*
Ни одного или более из предшествующих элементов (от ноля и больше)
<!ELEMENT MOUNTAIN (NAME+, HEIGHT?, CUONTRY)>
<!ELEMENT FILM (STAR | NARRATOR | INSTRUCTOR)+>
• Только символьные данные:
<!ELEMENT SUBTITLE (#PCDATA)>
• Символьные данные с необязательными дочерними элементами:
<!ELEMENT TITLE (#PCDATA | SUBTITLE)*>

10.

Объявление атрибутов
<!ATTLIST имя-элемента имя-атрибута тип-значения обязательность>
<!ATTLIST FILM Class CDATA "fictional" Year CDATA #REQUIRED>
PCDATA – анализируемые символьные данные (будут анализироваться парсером, теги
будут восприняты как вложенная разметка, сущности будут раскрыты). Тем не менее,
не должно быть символов &, <, >, а вместо них – &amp, &lt, &gt.
CDATA – неанализируемые символьные данные. Теги не будут восприняты, сущности
не будут раскрыты.
3 способа задать тип атрибута:
• строковый тип
<!ATTLIST FILM Class CDATA "fictional">
• маркерный тип
• нумерованный тип

11.

Список ключевых слов при определении маркерных типов атрибутов:
ID
IDREF
IDREFS
ENTITY
ENTITIES
NMTOKEN
NMTOKENS
Определение нумерованных типов атрибутов:
• список элементарных имен, разделенных символами |
<!ATTLIST FILM
Class (fictional | instructional | documentary)
"fictional">
• ключевое слово NOTATION
<!ELEMENT EXAMPLE_DOCUMENT (#PCDATA)>
<!ATTLIST EXAMPLE_DOCUMENT
Format NOTATION (HTML | SGML | RTF) #REQUIRED>

12.

Объявление обязательности атрибута и его значения по умолчанию:
• #REQUIRED
• #IMPLIED
<!ATTLIST FILM Class CDATA #IMPLIED>
• AttValue
<!ATTLIST FILM Class CDATA "fictional">
<FILM>The Graduate</FILM>
<FILM Class="fictional">The Graduate</FILM>
• #FIXED AttValue
<!ATTLIST FILM Class CDATA #FIXED "documentary">
<FILM>The Making of XML</FILM>
<FILM Class="documentary">Создание XML-документа</FILM>
<FILM Class="instructional">Создание XML-документа</FILM>
- некорректно!

13.

Определение и использование сущностей
Сущности в XML используются для определения повторно используемого
контента или фрагментов данных.
1. Внутренняя сущность – значение сущности можно определить вручную.
2. Внешняя сущность – ссылка на внешний файл, который может содержать
определенную информацию, и эту информацию можно вставить в документ
с помощью сущности.
<!ENTITY ithub "ItHub college">
<!ENTITY ithub SYSTEM "file:///external_file.xml">
<company>&ithub;</company>

14.

Использование внешних подмножеств DTD
<!DOCTYPE root SYSTEM "doc-for-root.dtd">
<!DOCTYPE root PUBLIC "http://site.ru/doc.dtd">
Объединение внешнего и внутреннего подмножеств DTD:
• XML-процессор осуществляет слияние двух подмножеств, чтобы
сформировать полный DTD
• XML-процессор использует первое объявление и игнорирует все
последующие
• внутреннее подмножество DTD имеет приоритет перед внешним
подмножеством DTD

15.

Спасибо за внимание!
English     Русский Правила