
- •XML означает Extensible Markup Language, с акцентом на markup
- •Документ XML обычно содержит следующие разделы:
- •XML-декларация
- •Пролог XML-документа
- •Элементы
- •Имена XML-элементов должны
- •Создание корневого элемента
- •Атрибуты XML-документа
- •Синтаксические правила создания атрибута:
- •Правила создания XML- документа
- •Комментарии
- •Текстовые данные XML-документа
- •Если XML- документ не нарушает приведенные правила, то он называется формально-правильным и все
- •Зачем нужно использовать DTD?
- •DTD описывает:
- •Объявление типа документа (DTD)
- •В рамках DTD доступны четыре определяющих инструкций для разработки определения типа документа:
- •Инструкция ATTLIST
- •dataType - тип данных для атрибута,
- •XML-документ:
- •Инструкция ELEMENT
- •Возможные параметры:
- •Пустые элементы
- •Элементы, содержащие только символьные данные
- •Зарезервированные слова и символы
- •Инструкция ENTITY
- •DTD-схема:
- •Инструкция NOTATION
- •Корневой элемент XXX должен содержать ровно один элемент AAA, а за ним -
- •Корневой элемент XXX может, но не обязан, содержать один элемент AAA,за которым должен
- •XML-схема (XSD)
- •XML схема поддерживает типы данных
- •Простой пример схемы на XML Schema, расположенной в файле "country.xsd" и описывающей данные
- •Так как мы сделали доступным пространство имен образцов XML схемы мы можем использовать
- •Элементы XML-схемы группируются по своей функциональности:
- •Элементы верхнего уровня XML-схем представлены в таблице
- •Простые типы элементов XML-схем
- •Простые типы элементов XML-схем
- •Атрибуты xs:element
- •Простой тип можно задать одним из следующих способов: restriction
- •Можно задать список допустимых значение
- •xsd:enumerati Определяет фиксированное значение, с которым
- •simpleContent
- •Комплексные типы элементов XML-схем
- •Примитивы XML-схем
- •Атрибуты
- •Следующий пример определяет группу, содержащую последовательность из трех элементов, и использует элемент group
- •• Атрибуты XML-схем
- •pattern
- •Фрагмент XML-документа
- •Программы для проверки корректности XML

Элементы, содержащие только символьные данные
Для элементов, содержащих символьные данные, но не другие элементы, используйте модель содержимого (#PCDATA):
<!ELEMENT emphasis (#PCDATA)>
Ключевое слово #PCDATA происходит от «parsedcharacter data» (анализируемые символьные данные). Это означает, что все символы будут проверены анализатором XML на наличие ссылок на сущности, которые будут заменены на соответствующие значения сущностей.
31

Зарезервированные слова и символы
#PCDATA |
ELEMENT |
Содержимое элемента может быть анализируемыми |
|
|
символьными данными. |
() |
В объявлении модели содержимого для элемента требуются |
|
как минимум одни круглые скобки (можно вкладывать |
|
дополнительные скобки). Дополнительные скобки могут |
|
понадобиться для уточнения более сложной модели |
|
содержимого для элемента. |
| |
Вертикальная черта используется для отделения двух |
|
именованных элементов. При использовании она указывает, |
|
что любой из элементов (до или после вертикальной черты) |
|
может отображаться как дочерний элемент. |
, |
Запятая используется для отделения двух именованных |
|
элементов или вложенных правил. |
? |
При использовании указывает, что предыдущий элемент или |
|
правило является необязательным. Может использоваться |
|
только один раз в данном фрагменте структуры XML- |
|
документа |
+ |
При использовании указывает, что предыдущий элемент или |
|
правило является обязательным. Может использоваться |
|
более одного раза в данном фрагменте структуры XML- |
* |
документа. |
При использовании указывает, что предыдущий элемент или |
|
правило является необязательным. Может использоваться 32 |
|
|
более одного раза в данном фрагменте структуры XML- |

XML-документ: <letter>
<title>Заголовок письма</title> <message>Текст письма</message> </letter>
DTD-схема:
<!ELEMENT letter (title, message)> <!ELEMENT title (#PCDATA)> <!ELEMENT message (#PCDATA)>
33

<!ELEMENT issue (title, author+, table-of- contents?)>
В этом примере указывается, что внутри элемента <issue> должны быть определены элементы title, author и table- of-contents, причем элемент title является обязательным элементом и может встречаться лишь однажды, элемент author может встречаться несколько раз, а элемент table-of-contents может отсутствовать
34

<?xml version="1.0"?> <! DOCTYPE journal [
<!ELEMENT contacts (address, tel+, email?)> <!ELEMENT address (street, appt)> <!ELEMENT street PCDATA>
<!ELEMENT appt (PCDATA | EMPTY)*> <!ELEMENT tel PCDATA>
<!ELEMENT email PCDATA> ]>
<contacts>
<address>
<street>Marks avenue</street> <appt id="4">
</address> <tel>12-12-12</tel> <tel>46-23-62</tel> <email>info@j.com</email>
</contacts>
35

Инструкция ENTITY
Инструкция ENTITY используется для определения сущностей в DTD с целью их использования как в связанном с DTD XML-документе, так и собственно в DTD. ENTITY представляет собой сокращенную запись для размещения в XML- документе.
36

DTD-схема:
<!ENTITY name “Hello, world!”> XML-документ:
<element>&name;</element>
37

<?xml version="1.0"?>
<!DOCTYPE message SYSTEM "5.dtd"
[
<!ENTITY client "Mr. Rufus Xavier Sasperilla"> <!ENTITY agent "Ms. Sally Tashuns">
<!ENTITY phone "<number>617 555 1299</number>"> ]>
<message>
<opening>Dear &client;</opening>
<body>We have an exciting opportunity for you! A set of ocean front cliff dwellings in Piñata, Mexico have been renovated as time share vacation homes. They're going fast! To reserve a place for your holiday, call &agent; at ☎. Hurry, &client;. Time is running out!</body>
</message>
38

Инструкция NOTATION
Синтаксис объявления типа нотации следующий:
<!NOTATION name identifier>
Здесь name является именем типа нотации, а identifier – внешним идентификатором, имеющим определенное значение для процессора XML. Какое именно значение, зависит от приложения.
В широком смысле, нотация является особой меткой, сообщающей процессору XML о том, какого типа данные он рассматривает в данный момент. Пометка нетекстовых данных является одним из применений нотаций. Другим из них является пометка текстовых данных, имеющих особый формат, например, дат.
39

Корневой элемент XXX должен содержать ровно один элемент AAA, а за ним - ровно один BBB. Элементы AAA и BBB могут содержать некоторый текст, но не могут содержать другие элементы.
<!
ELEMENT<! XXX (AAA , BB ELEMENTB)> AAA (#PCDATA)>
<!
ELEMENT BBB (#PCDATA)>
40