Міністерство освіти і науки України
Сумський державний університет
Проценко О.Б.
Web-програмування та web-дизайн
Технологія XML
Рекомендовано вченою радою
Сумського державного університету
як навчальний посібник
Суми
Видавництво СумДУ
2009
Навчальне видання
Проценко Олена Борисівна
Web-програмування та web-дизайн
Технологія XML
Навчальний посібник
Дизайн обкладинки О.Б. Проценко
Редактор Н.М. Мажуга
Комп’ютерне верстання О.Б. Проценко
Підп. до друку 6.04.2009.
Формат 60(84/16. Папір офс. Гарнітура Times New Roman Cyr. Друк офс.
Ум. друк. арк.7,44. Обл.-вид. арк.5,58.
Тираж 50 пр. Вид. №
Зам. № .
Видавництво СумДУ при Сумському державному університеті
4007, Суми, вул. Р.-Корсакова, 2
Свідоцтво про внесення суб’єкта видавничої справи до Державного реєстру ДК № 3062 від 17.12.2007 р.
Надруковано у друкарні СумДУ
4007, Суми, вул. Р.-Корсакова, 2.
УДК 004.43 (075.8)
П 84
Рекомендовано до друку вченою радою Сумського державного університету (протокол № від р.)
Рецензенти:
д-р техн. наук, проф. А.С. Довбиш,
канд ф.-м.наук, доц. С.П. Шаповалов
(Сумський державний університет);
Проценко О.Б.
П84
Web-програмування та web-дизайн. Технологія XML: Навчальний посібник. – Суми: Видавництво СумДУ, 2009. – 127 с.
Посібник містить теоретичні та практичні відомості про синтаксис, основні конструкції та застосування мови XML.
Посібник може бути корисним як для студентів, аспірантів і викладачів, так і для широкого кола фахівців, що займаються проблемами програмування для Інтернету.
УДК 004.43 (075.8)
( О.Б.Проценко, 2009
( Вид-во СумДУ, 2009
Міністерство освіти і науки України
Сумський державний університет
До друку та в світ дозволяю
на підставі „Єдиних правил”,
п.2.6.14.
Заступник першого проректора
начальник організаційно-
методичного управління В.Б.Юскаєв
Web-програмування та web-дизайн
Технологія XML
Навчальний посібник
Усі цитати, цифровий,
фактичний матеріал,
бібліографічні дані
перевірені, запис
одиниць відповідає
стандартам
Укладач О.Б. Проценко
Відповідальний за випуск А.С. Довбиш
Декан факультету ЕлІТ С.І. Проценко
[
Суми
Видавництво СумДУ
2009
ЗМІСТ
С.
Вступ 5
Розділ 1 Створення xml-даних ………………………………... 6
Розміщення атрибутів у екземплярі xml 8
Порожні елементи 9
Сім’я xml-технологій 11
Створення і перегляд xml документа 12
Синтаксис мови xml 14
Правильне вкладення елементів 17
Визначення імен у xml 18
Декларації xml 18
Правильні екзмпляри xml 19
Визначення типу документа 23
Простий елемент із текстовим вмістом 25
Розділ 2 Внутрішні схеми DTD………………………...……. 26
Елемент, що містить дочірній елемент 27
Оголошення порожнього елемента 28
Використання ключового слова any 29
Змішаний вміст елементів 30
Використання атрибутів 31
Оголошення атрибутів першого типу 32
Визначення атрибутів маркованого типу 33
Використання атрибутів типів ID і IDREF 34
Використання елементів ENTITY в схемах DTD 41
Використання в схемах DTD атрибутів переліченого типу 43
Аналіз правильних екземплярів 46
Розділ 3 Схеми XDR 47
Розроблення XDR –схем 48
Оголошення типу елемента 49
Оголошення ElementType вкладених елементів 51
Елемент АttributeТype 54
Типи даних у XDR-схемах 57
Індикатори входження в XDR-схемах 59
Додаткові обмеження типів даних у XDR-схемах 62
Використання груп вмісту 62
Розділ 4 Мова визначення схем xml ( XSD) 66
Простори імен 68
Прості елементи 70
Прості типи даних, що використовуються в схемах XSD 72
Елементи складних типів 73
Обмеження входжень у схемах XSD 75
Опис атрибутів 77
Перевірка документів. Три підходи: XDR, DTD, XSD 81
Основи використання xsl-таблиць стилів 82
Розділ 5 Обробка хml-даних………………………………… 98
Використання декількох шаблонів 98
Фільтрація і сортування даних xml 101
Доступ до атрибутів xml 107
Використання каскадних таблиць стилів 109
Список літератури……………………………………………. 126
ВСТУП
XML (Extensible Markup Language) - це мова розмітки, що описує цілий клас об'єктів даних, які називаються XML-документами. Ця мова використовується як засіб для опису граматики інших мов і контролю за правильністю складання документів. Тобто сам по собі XML не містить ніяких тегів, призначених для розмітки, він просто визначає порядок їх створення. Таким чином, якщо, наприклад, ми вважаємо, що для позначення елемента porche в документі необхідно використовувати тег <car>, то XML дозволяє вільно використовувати визначений користувачем тег і включати його в XML- документ.
Виділяють сім основних характеристик мови XML:
XML пропонує метод структуризації файлу у вигляді текстового файлу.
XML схожий на HTML.
XML зрозумілий як комп'ютеру так і людині.
XML утворює ціле сімейство технологій.
XML достатньо гнучкий.
XML достатньо новий, але у нього глибоке коріння.
XML вільний від ліцензійних відрахувань, платформенно-незалежний, має широку підтримку.
Розглянемо деякі характеристики детальніше.
XML пропонує метод структуризації файлу у вигляді текстового файлу
Дуже часто трапляються казуси, коли необхідно дані однієї програми перемістити в іншу, але формат даних у цих програмах не збігається, а отже, і дані перемістити не-можливо.
XML забезпечує таку можливість, оскільки будь-яке його застосування може працювати з текстовими документами, і будь-яка людина може прочитати і зрозуміти текст.
XML дозволяє зберігати в текстовому форматі структуровані дані. XML - це набір правил для створення текстових форматів, простих для обробки комп'ютерами різних типів. Отримані текстові файли структуровані таким чином, що вони:
точно виражені;
розширені;
платформенно-незалежні.
Для розроблення XML-файлів можна використовувати будь-який текстовий редактор. XML–документи, як правило, мають розширення *.xml, але спеціалізовані діалекти, створені в рамках XML, можуть мати розширення:
*.xls – файли розширеної таблиці стилів (Ехtensible Stylesheet Language);
*.xsd – визначення розширеної схеми (Еxtensible Schema Definition);
*.xdr – скорочена схема даних XML (XML Data Reduced Schema);
*.mml –математична мова розмітки (MATHML Mathematical Markup Language);
*.cdf – формат визначення каналів (Channel Definition Format).
Розділ 1 СТВОРЕННЯ XML-ДАНИХ
У мов XML і HTML є декілька схожих характеристик.
Якщо розглянемо приклад розмітки наступного тексту, відповідь на питання це XML або HTML стане складною.
<p>Так, зазвичай, оформлюють
<em> виділений текст </em> у HTML</p>
Відповідь буде правильною у будь-якому випадку, оскільки це приклад оформлення документів і в XML і в HTML.
Проте мова XML була розробленою для того, щоб подолати обмеження, що накладаються мовою HTML. Так, розробник XML-документа може сам визначити ряд своїх власних дескрипторів. Наприклад, якщо дескриптор параграфа в HTML – <p> – єдиний, який може задавати і описувати параграф, то розробник документа XML може самостійно ввести дескриптор параграфа одним з нижче перелічених дескрипторів:
<indent>
<paragraph>
<para>.
Найпростіший елемент включає дескриптор, що відкривається, вміст, дескриптор, що закривається. Наприклад,
<title> Вивчаємо XML </title>.
ПРАВИЛО. Весь рядок <title>Вивчаємо XML</title> називається елементом, дані між дескрипторами називаються вмістом елемента.
ПРАВИЛО. Всі елементи мають бути обов'язково завершені. Всі не порожні елементи обов'язково повинні містити дескриптор, що відкривається і дескриптор, що закривається. Порожні елементи мають бути закриті за наступним правилом.
ПРАВИЛО. Порожній елемент завжди записується за стандартним правилом синтаксису порожнього елемента:
<ім'я _елемента/>.
РОЗМІЩЕННЯ АТРИБУТІВ У ЕКЗЕМПЛЯРІ XML
Слід відзначити, що, як і в HTML, у мові XML є атрибути, які змінюють або класифікують елементи і вказуються у дескрипторі, що відкривається.
Синтаксис визначення атрибута для елемента такий:
<ім’я_елемента ім’я_атрибута=“значення”> Зміст елемента відповідного елемента </ім’я_атрибута>.
Атрибути розміщуються завжди у дескрипторі, що відкривається. Дескриптор, що відкривається, у елементі може містити декілька атрибутів, дотримуючись таких правил:
<ім’я_елемента
ім’я_атрибута= “значення”
ім’я_атрибута= “значення”
ім’я_атрибута=“значення”> Зміст елемента відповідного елемента </ім’я_атрибута>.
Наприклад,
<account type= “checking” currency= “Gryvnja”>
<name>Івченко</name>
<balance>18623,12</balance>
</account>.
Усі значення атрибутів мають бути обов'язково в лапках. У разі відсутності хоча б однієї з лапок, парсер видає таке зауваження (рисунок 1):
The XML page cannot be displayed
Cannot view XML input using style sheet. Please correct the error and then click the Refresh button, or try again later.
A string literal was expected, but no opening quote character was found. Error processing resource
file:///D:/WORK/Web-pro...
<?xml version= 1.0"?>
---------------^
Рисунок 1 - Результат відображення неправильно оформленого атрибута
Визначення того, чи є дана властивість елементом або атрибутом, є досить непростим питанням.
ПОРОЖНІ ЕЛЕМЕНТИ
Елементи XML можуть містити текст, інші елементи, будь-яку комбінацію тексту та інших елементів або ж бути просто порожніми елементами.
Порожній елемент завжди записується за стандартним правилом синтаксису елемента:
<ім'я _елемента/>.
Наприклад,
<date month=“September” day=“19” year=“2009” />.
Даний елемент є порожнім, навіть, не дивлячись на те, що містить атрибути. Враховуючи той факт, що повна інструкція
<date month=“September” day=“19” year=“2009”>
</date>
функціонує також як і коротка, для написання порожнього елемента прийнято використовувати коротку форму.
Розглянемо фрагмент HTML-тексту
<html>
<h1> letter </h1>
<p>From: O. Protsenko </p>
<p>to: All students </p>
<p>Subject: Questions to exam </p>
<p>Date: 19.09 2009</p>
<message> </message>
</html>
аналогічний фрагмент XML-тексту виглядає так:
<letter>
<from> O. Protsenko</from>
<to> All students </to>
<subject> Questions to exam</subject>
<date month=”September” day=“19” year=”2009” />
<message> Questions </message>
</letter>.
Якщо поставити собі питання, який із фрагментів містить більше даних для обробки програмним додатком, то відповідь зрозуміла – XML.
Інша відмінність полягає в тому, що HTML змішує зміст і форматування в одному потоці розмітки. Так, наприклад, елементи <h1> і <b> свідчать, яким чином мають бути виділені елементи, і де розміщені об'єкти, виділені такими елементами.
Мова XML припускає, що зміст і зовнішній вигляд повинні зберігатися окремо від даних розмітки. XML повністю покладається на каскадні таблиці стилів (CSS або XSL) при відображенні або перетворенні документів з однієї структури в іншу.
СІМ’Я XML-ТЕХНОЛОГІЙ
Оскільки XML-документ містить елементи, які описують самі себе, він зрозумілий людині на інтуїтивному рівні. Семантика даних забезпечує «інтелектуальність», яка подана в XML-елементах і значеннях атрибутів.
Не дивлячись ні на що, XML – це програмний код, який читається і використовується обробниками XML.
XML утворює цілу сім’ю технологій. У сім’ю XML входить ряд важливих технологій:
XML Version 1.0
Технічні рекомендації про використання XML.
DTD
Визначення типу документа.
XDR
Формат XML Reduced ( схема Microsoft).
XSD
Визначення схеми XML (схема консорціуму W3C).
Простори імен
Метод визначення імен елементів та атрибутів.
XPath
Мова шляхів XML.
XLink
Мова посилань XML.
XPointer
Мова покажчиків XML.
DOM
Програмний інтерфейс API для об'єктної моделі документів.
SAX
Simple API for XML (Простий програмний інтерфейс API для XML).
XSL
Розширена мова таблиць стилів.
XSL-FO
Об'єкти форматування XSL.
XSLT
Мова перетворень XSL.
X Include
Синтаксис XML Include.
XBase
Синтаксис XML Base URI.
Деякі з перелічених компонент до цих пір знаходяться в процесі розроблення, хоча використовуються досить широко, і можуть зазнавати значних змін. Тому особливу увагу необхідно приділяти тому, як та чи інша технологія описана в W3C.
XML нова мова, але у неї глибоке коріння
XML став стандартом консорціуму W3C 10 лютого 1998 року. Мова заснована на метамові SGML (стандартна узагальнена мова розмітки), яка була розроблена в 1986 році. Одним із додатків SGML стала мова HTML. Існує мова XHTML – це трактування мови HTML як додатка XML, з метою досягти більшої гнучкості мови HTML. Деяким чином XHTML складає конкуренцію XML як засіб представлення документів в Web.
СТВОРЕННЯ І ПЕРЕГЛЯД XML-ДОКУМЕНТА
По-перше, для створення XML-документів необхідний будь-який текстовий редактор (редактор, який здатний зберігати дані формату ASCII).
Проте існують спеціальні програмні засоби, які дозволяють вводити код і перевіряти синтаксис XML-документа, наприклад, Architag X-Rey Edition (www.architag.com/xray) - версія доступна для загального користування. Існують і комерційні версії ПО, знайти які не важко в Інтернеті.
По-друге, потрібна спеціальна програма обробник XML-файлів – парсер.
Парсер – це програмне забезпечення, яке перевіряє дотримання синтаксичних правил XML і повідомляє про всі виявлені помилки. Якщо розмітка правильна, парсер перетворить його в такий вигляд, щоб його можна було читати. Цей процес називається перетворенням розширеної мови таблиць XML XSLT.
Як парсер можна використовувати браузер Internet Explorer.
Наприклад, нижченаведені дані помістіть у файл example_1.xml:
<letter>
<from> О. Protsenko</from>
<to> All students </to>
<subject> Questions to exam</subject>
<date month=”september” day=“19” year=”2009” />
<message> Questions </message>
</letter>.
У разі правильно оформленого документа XML браузер перетворить документ, застосовуючи до нього певні стилі.
Рисунок 2 - Результат відображення XML-кода
СИНТАКСИС МОВИ XML
Документ XML вважається добре оформленим, якщо він відповідає всім правилам XML. Якщо ж хоч одне правило порушується, документ не вважається за добре оформлений, і не буде оброблений парсером.
Добре оформлений документ повинен містити один і лише один кореневий елемент, що містить решту всіх елементів. Елементи кореневого елемента можуть містити дочірні елементи, які мають бути правильно вкладені. Всі елементи, які лежать у кореневому елементі, вважаються дочірніми по відношенню до кореневого.
Крім того, дескриптори в XML чутливі до регістру. Дескриптори, що відкриваються і дескриптори, що закриваються одного і того ж елементу мають бути вказані з використанням одного і того ж регістру.
Якщо створюється XML документ на основі існуючого документа, то необхідно добре вивчити оригінал, щоб зрозуміти структуру документу. Цей процес називається аналізом документа.
Наприклад, є інструкція по миттю машини. Машину обполоснути водою, потім нанести піну і залишити на 5 хвилин. Піну змити. Нанести на поверхню кузова віск, витерти корпус машини.
Розглянемо структуру документа (рис. 3). На схемі видно, що кореневим елементом буде елемент «інструкція», всі останні будуть дочірніми по відношенню до нього. Елемент «інгредієнти» має внутрішні,
Рисунок 3 – Схема документа
Як скласти XML-документ
Визначте кореневий елемент, наприклад, <directions> (інструкція). Документ повинен мати дескриптор, що відкривається і дескриптор, що закривається <directions></directions>.
Кореневий елемент <directions> буде містити решту елементів <title>, <ingredients>, <instrument>, <actions>.
Елементи <ingredients> і <instrument> будуть містити дочірні елементи <items> <quantity>.
Розставляємо по місцях всі відкриваючі і закриваючі дескриптори, заповнюючи їх необхідними даними.
Зберігаємо отриманий документ у файлі example_2.xml.
Правильність оформлення документа можна продивитися у вікні Internet Explorer.
<directions>
<title>Інструкція як помити машину</title>
<ingredients>
<items>Вода</items>
<quantity>50 л</quantity>
<items>Шампунь</items>
<quantity>0,5 л</quantity>
<items>Віск</items>
<quantity>0,3 л</quantity>
</ingredients>
<instrument>
<items>Відро</items>
<quantity>1 шт. </quantity>
<items>Мочалка </items>
<quantity>1 шт. </quantity>
<items>Лоскут для полірування</items>
<quantity>2 шт. </quantity>
</instrument>
<actions> Машину обполоснути водою, потім нанести піну і залишити на 5 хвилин. Піну змити. Нанести на поверхню кузова віск, витерти корпус машини
</actions></directions>.
Результат обробки парсером коду, що розглянули, поданий на рисунку 4.
Рисунок 4 – Результат обробки парсером програмного коду
ПРАВИЛЬНЕ ВКЛАДЕННЯ ЕЛЕМЕНТІВ
Всі документи XML мають бути перевірені на правильність вкладення елементів.
Мова HTML позбавлена таких недоліків. Вкладення елементів у наведених нижче інструкціях дають однаковий результат.
<b><i>Цей текст буде виділений курсивом</b></i>
<b><i>Цей текст буде виділений курсивом</i></b>.
XML дуже чутливий до неправильного вкладення елементів, тому коректним вкладенням буде те, в якому елементи не перетинаються
<b><i>Цей текст буде виділений курсивом</i></b>.
ПРАВИЛО. Завжди ставте рядки між дескриптором, що відкривається та дескриптором елемента, що закривається, тоді ніколи не отримаєте накладення рядків і перетину документів.
Наприклад,
<b>
<i>Цей текст буде виділений курсивом</i>
</b>.
ВИЗНАЧЕННЯ ІМЕН У XML
ПРАВИЛО. При визначенні імен елементів у документі XML необхідно дотримуватися таких правил:
Ім'я елемента повинне починатися з букви, знаку підкреслення ( _ ) або двокрапки (:).
Після першого символу в імені елемента можуть бути букви, цифри, знаки перенесення (–), знаки підкреслення ( _ ), крапка або двокрапка (:).
Імена елементів не можуть починатися з букв XML або варіацій на цю тему, оскільки всі подібні імена захищені правами на інтелектуальну власність консорціуму W3C.
ДЕКЛАРАЦІЇ XML
Відомо, що добре оформлені документи без проблем відображуються будь-яким парсером. Хоча парсер розуміє, що відображуваний документ є XML-документом гарним тоном вважається вказувати, що це документ XML.
Деякі парсери вимагають наявність в документі відповідного рядка декларації XML, який має такий вигляд:
<? xml version=“1.0” ?>.
Оголошення XML-документа може містити також оголошення кодування (encoding declaration), яке вказує на форму символів і оголошення самостійності документа (standalone declaration ).
Повний рядок декларації виглядає так
<?xml version= “1.0” encoding=“.” standalone=“.”?>.
Значення атрибута encoding містить кодування символів документа, а значення атрибута standalone – вказує, чи є даний документ самостійним і може набувати значення yes або no.
ЗАУВАЖЕННЯ. Якщо не вказувати тип кодування XML-документа, в якому є символи кирилиці, браузер, наприклад, Internet Explorer, сприйматиме добре оформлений документ як документ, що містить помилки і відображувати його не буде.
Додавання коментарів
Коментарі в XML додаються так як і в HTML.
<!-- це коментар -->.
ПРАВИЛЬНІ ЕКЗМПЛЯРИ XML
У XML, разом з концепцією «добре оформленого документа», розглядається концепція «дійсного документа XML».
Правильний документ гарантує цілісність структури даних. Завдяки цьому значно спрощується доставка і обмін даними, які коректуються параметрами XSLT.
Для визначення правильності документа необхідно:
Визначити використання тільки заданого набору дескрипторів.
Перевірити, щоб порядок проходження елементів і їх атрибутів повністю відповідав змісту документа або певним правилам.
Іншими словами, в XML-документі має бути правильно реалізована схема документа, що визначає його структуру.
Як правильно визначити структуру. Повернемося, наприклад, до створення XML документа для інструкції по миттю машини. Документ XML добре оформлений, але з погляду правильності він надлишковий (на кожну складову відводиться два елементи). Логічно було б використовувати один елемент з атрибутом
<items quantity= “.”>.
А XML-код виглядатиме так:
<?xml version= “1.0” encoding= “windows-1251”>
<!--Це XML код інструкції-->
<directions>
<title>Інструкція, як помити машину</title>
<ingredients>
<items quantity= “50 л”>Вода</items>
<items quantity= “0,5 л”>Шампунь</items>
<items quantity= “0,3 л”>Віск</items>
</ingredients>
<instrument>
<items quantity= “1 шт.”>Відро</items>
<items quantity= “1 шт.” >Мочалка </items>
<items quantity= “2 шт.” >Лоскут для полірування</items>
</instrument>
<actions> Машину обполоснути водою, потім нанести піну і залишити на 5 хвилин. Піну змити. Нанести на поверхню кузова віск, витерти корпус машини
</actions>
</directions>.
Рисунок 5 – Приклад документа
Контроль типів даних.
Контроль типів даних досягається завдяки використанню відповідної схеми.
Дані XML документа, які використовуються при обміні, повинні використовувати один формат, для запобігання плутанини.
Наприклад, дата може бути оформлена в одному з таких форматів:
mmddyy yyddmm
ddmmyy yymmdd.
Існує декілька підходів до контролю типів даних. Пізніше розглянемо технології XDR і DTD.
До наступних типів даних може буде потрібна перевірка правильності. Необхідність перевірки залежить від того, обмін якою інформацією здійснюється.
Тип даних
Опис
Boolean
Логічний тип, значення ІСТИНА / БРЕХНЯ
Char
Один символ
String
Рядок символів
Float
Дійсні числа
Int
Цілі числа
Date
Дата у форматі YYYY-DD-MM
Time
Час у форматі HH-MM-SS
Id
Текст, унікальним чином ідентифікуючий елемент
Idref
Посилання на ідентифікатор
Enumeration
Послідовність значень, з якої можна вибрати будь-яке значення.
Здійснити контроль цілісності даних для забезпечення оптимального обміну інформацією через Web за допомогою транзакцій.
Якщо мова йде про перевірку правильності оформлення документа, то мова йде не про представлення даних, а про структуру даних.
У ЧОМУ ПОЛЯГАЄ ВІДМІННІСТЬ СТРУКТУРИ ДОКУМЕНТА ВІД СТРУКТУРИ ДАНИХ?
Структура документа дозволяє читачеві швидко зрозуміти, в якому саме вигляді подав інформацію автор документа.
Структури даних вказують шлях комп’ютерного застосування даних, які містяться в різних контейнерах цілого документа. У структурі даних не міститься визначення важливості одного компонента документа по відношенню до іншого. Всі компоненти рівні.
Парсер – це програма (у специфікації консорціуму W3C називається обробником XML), яка інтерпретує символ за символом. Існує два типи парсерів:
перевіряють форматування документів, тобто їх відповідність синтаксичним правилам;
спочатку перевіряють форматування документа, а потім їх відповідність всім обмеженням, вказаним у пов'язаних з ним документах.
ВИЗНАЧЕННЯ ТИПУ ДОКУМЕНТА
Зв'язок схеми з документом дозволяє розширити можливість поширення документа незалежно від додатка. Схема додає ряд обмежень, які визначають список необхідних елементів і атрибутів, порядок їх проходження, а також при необхідності, їх допустимі значення.
Схема DTD надає шаблон розмітки документа, в якому вказується наявність, порядок проходження і розміщення елементів і їх атрибутів у документі.
Також XML-документ можна подати у вигляді дерева, схему DTD також можна подати у вигляді дерева. Проте відмінність DTD полягає в тому, що дерево DTD не повторює елементи або структуру.
Наприклад, деревоподібну структуру XML-документа, що містить інструкцію по миттю машини, можна подати у вигляді схеми на рисунку 6, а деревоподібна схема DTD виглядає так, як показано на рисунку 7.
Рисунок 6– Деревоподібна структура XML-документа
Рисунок 7– Дерево DTD для XML-файлу
Схеми DTD мають справу з елементами документа XML, елементами-контейнерами, пустими елементами. Елементи-контейнери можуть містити дані, наприклад, текст, дочірні елементи або те і інше.
Оголошення змісту елемента або атрибута в схемі DTD називається моделлю змісту для цього елемента або атрибута.
У будь-якому XML документі елементи – фундаментальні структури, які об'єднані для представлення екземпляра XML. Тому кожен елемент має бути оголошений у схемі DTD разом з оголошенням його типу.
Оголошення типів елемента мають таку структуру:
<! ELEMENT ім’я_елемента (модель )>.
Всі приклади, які будуть наведені нижче, пов'язані між собою. Кожен приклад зберігатимемо в окремому файлі як нову версію попереднього.
ПРОСТИЙ ЕЛЕМЕНТ ІЗ ТЕКСТОВИМ ВМІСТОМ
Приклад 1. Необхідно оформити як екземпляр XML записку «Завтра о 12.45 лекція з Web-дизайну».
Екземпляр добре оформленого коду example_3.xml виглядатиме так:
<?xml version=“1.0” encoding=“windows-1251” ?>
<note> Завтра о 12.45 лекція з Web-дизайну </note>
У цьому екземплярі елемент <note> містить тільки текст.
Цей документ можна перевірити, створивши DTD схему з оголошенням типу цього елемента, яка вказує на те, що цей елемент може мати тільки зарезервоване ключове слово #PCDATA або текст.
#PCDATA (завжди вказується знаками тільки верхнього регістру) – це звичайні текстові дані, але які зчитуються парсером і обробляються належним чином. Перевірка документа на відповідність DTD-схемі, у разі, коли вказаний тип #PCDATA може привести як до бажаних, так і небажаних результатів.
Оскільки, схема DTD забезпечує перевірку правильності структури документів, вона містить правила для змісту. Наприклад, елемент може містити текст або інші елементи, а може бути порожнім елементом. Всі ці моделі змісту подаються у схемах DTD по-різному. Схеми DTD можуть бути вказані в різних документах і бути пов'язаними в цих документах.
Виділяють внутрішні і зовнішні схеми DTD.
Розділ 2 ВНУТРІШНІ СХЕМИ DTD
Розглянемо приклад, в якому схема DTD буде вбудована в XML-документ.
Для детального розгляду пронумеруємо рядки.
1: <?xml version=“1.0” encoding=“windows-1251” ?>
2: <!DOCTYPE note [
3: <!ELEMENT note (#PCDATA)>
4: ]>
5: <note> Завтра о 12.45 відбудеться лекція з Web-дизайну</note>
Рядок 1 – звичайне оголошення XML, яке використовується у всіх XML документах.
У рядку 2 міститься оголошення певного типу документа, яке дається в пролозі документа і, яке пов'язує з документом схему DTD. Визначення типу документа завжди починається з <!DOCTYPE і закінчується >. Ключове слово DOCTYPE завжди записується символами верхнього регістру.
Всі рядки, що містяться в XML-документі до кореневого елемента називаються прологом. Пролог містить інструкції обробки документа: оголошення XML
<?xml version= “1.0” ?>
і оголошення DOCTYPE у випадку використання DTD схеми. Оголошення типу документа в другому рядку повідомляє обробника про те, що існує оголошення елемента note, а всі відомості, поміщені в квадратні дужки, є схемою DTD. Іншими словами, рядок 2 починає внутрішню підмножину DTD під назвою note.
У рядку 3 міститься оголошення типу елемента для елемента note. Тут вказано, що елемент note може містити тільки текстові дані. У дужках указується або модель змісту, або специфікація змісту. За допомогою моделі змісту парсеру повідомляється чого слід чекати від кожного елемента XML у даному документі.
Рядок 4 містить закриття схеми DTD.
Рядок 5 містить кореневий елемент XML-документа.
ЕЛЕМЕНТ, ЩО МІСТИТЬ ДОЧІРНІЙ ЕЛЕМЕНТ
Нехай елемент note містить дочірній елемент. Добре оформлений документ виглядатиме так:
<?xml version=“1.0” encoding=“windows-1251” ?>
<note>
<text>Завтра о 12.45 лекція з Web-дизайну</text>
</note>.
Цей самий документ, що містить схему DTD можна оформити так:
1: <?xml version=“1.0” encoding=“windows-1251” ?>
2: <!DOCTYPE note [
3: <!ELEMENT note (text)>
4: <!ELEMENT text (#PCDATA)>
5: ]>
6: <note>
7: <text>
8: Завтра о 12.45 відбудеться лекція з Web-дизайну
9: </text>
10: </note>.
Тут, у рядку 3 оголошується, що елемент note містить дочірній елемент text, рядок 4 містить інформацію про те, що вмістом елемента text є текст, що інтерпретується парсером. Рядки 6-8 є добре і правильно оформленим документом.
Зауваження. Відступи в тексті використовуються виключно для надання документу зручної форми для читання.
ОГОЛОШЕННЯ ПОРОЖНЬОГО ЕЛЕМЕНТА
Порожній елемент у схемах DTD оголошується таким чином
<! ELEMENT і'мя_елемента EMPTY>.
Припустимо, в нашому повідомленні є порожні елементи
<?xml version=“1.0” encoding=“windows-1251” ?>
<note>
<time />
<date />
<text>Завтра о 12.45 відбудеться лекція з Web-дизайну</text>
</note>.
Тоді DTD схема для такого XML тексту виглядатиме так
1:<?xml version=“1.0” encoding= “windows-1251” ?>
2: <!DOCTYPE note [
3: <!ELEMENT note (time,datetext)>
4: <!ELEMENT time EMPTY>
5: <!ELEMENT date EMPTY>
6: <!ELEMENT text (#PCDATA)>
7: ]>
8: <note>
9: <time />
10: <date />
11: <text>
12: Завтра о 12.45 відбудеться лекція з Web-дизайну
13: </text>
14: </note>.
Парсер інтерпретує рядок 3 так: елемент note містить три елементи time, date, text, які слідують один за одним у такому порядку, в якому вони перелічені в дужках при описі елемента note.
Згідно схеми DTD, елементи time і date не можуть містити будь-яких даних.
ВИКОРИСТАННЯ КЛЮЧОВОГО СЛОВА ANY
Трапляється, що наперед невідомо,