Реферат: Р. Корсакова, 2 Свідоцтво про внесення суб’єкта видавничої справи до Державного реєстру дк №3062 від 17. 12. 2007 р. Надруковано у друкарні Сумду 4007, Суми, вул. Р. Корсакова, 2



Міністерство освіти і науки України

Сумський державний університет


Проценко О.Б.


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

ЗМІСТ

С.

Вступ

ВСТУП 6

Розділ 1 СТВОРЕННЯ XML-ДАНИХ 7

РОЗМІЩЕННЯ АТРИБУТІВ У ЕКЗЕМПЛЯРІ XML 9

ПОРОЖНІ ЕЛЕМЕНТИ 10

СІМ’Я XML-ТЕХНОЛОГІЙ 12

СТВОРЕННЯ І ПЕРЕГЛЯД XML-ДОКУМЕНТА 13

СИНТАКСИС МОВИ XML 15

ПРАВИЛЬНЕ ВКЛАДЕННЯ ЕЛЕМЕНТІВ 18

ВИЗНАЧЕННЯ ІМЕН У XML 19

ДЕКЛАРАЦІЇ XML 19

ПРАВИЛЬНІ ЕКЗМПЛЯРИ XML 20

ВИЗНАЧЕННЯ ТИПУ ДОКУМЕНТА 24

ПРОСТИЙ ЕЛЕМЕНТ ІЗ ТЕКСТОВИМ ВМІСТОМ 26

Розділ 2 ВНУТРІШНІ СХЕМИ DTD 27

ЕЛЕМЕНТ, ЩО МІСТИТЬ ДОЧІРНІЙ ЕЛЕМЕНТ 28

ОГОЛОШЕННЯ ПОРОЖНЬОГО ЕЛЕМЕНТА 29

ВИКОРИСТАННЯ КЛЮЧОВОГО СЛОВА ANY 30

ЗМІШАНИЙ ВМІСТ ЕЛЕМЕНТІВ 31

ВИКОРИСТАННЯ АТРИБУТІВ 32

ОГОЛОШЕННЯ АТРИБУТІВ ПЕРШОГО ТИПУ 33

ВИЗНАЧЕННЯ АТРИБУТІВ МАРКОВАНОГО ТИПУ 34

^ ВИКОРИСТАННЯ АТРИБУТІВ ТИПІВ ID І IDREF 35

ВИКОРИСТАННЯ ЕЛЕМЕНТІВ ENTITY В СХЕМАХ DTD 42

ВИКОРИСТАННЯ В СХЕМАХ DTD АТРИБУТІВ ПЕРЕЛІЧЕНОГО ТИПУ 44

АНАЛІЗ ПРАВИЛЬНИХ ЕКЗЕМПЛЯРІВ 48

^ Розділ 3 СХЕМИ XDR 49

РОЗРОБЛЕННЯ XDR –СХЕМ 50

ОГОЛОШЕННЯ ТИПУ ЕЛЕМЕНТА 51

ОГОЛОШЕННЯ ElementType ВКЛАДЕНИХ ЕЛЕМЕНТІВ 53

ЕЛЕМЕНТ AttributeType 56

ТИПИ ДАНИХ У XDR-СХЕМАХ 59

ІНДИКАТОРИ ВХОДЖЕННЯ В XDR-СХЕМАХ 61

ДОДАТКОВІ ОБМЕЖЕННЯ ТИПІВ ДАНИХ 63

У XDR-СХЕМАХ 64

ВИКОРИСТАННЯ ГРУП ВМІСТУ 64

Розділ 4 МОВА ВИЗНАЧЕННЯ СХЕМ XML ( XSD) 68

ПРОСТОРИ ІМЕН 70

ПРОСТІ ЕЛЕМЕНТИ 72

ПРОСТІ ТИПИ ДАНИХ, ЩО ВИКОРИСТОВУЮТЬСЯ В СХЕМАХ XSD 74

ЕЛЕМЕНТИ СКЛАДНИХ ТИПІВ 76

ОПИС АТРИБУТІВ 80

ПЕРЕВІРКА ДОКУМЕНТІВ. ТРИ ПІДХОДИ: XDR, DTD, XSD 84

ОСНОВИ ВИКОРИСТАННЯ XSL-ТАБЛИЦЬ СТИЛІВ 85

^ Розділ 5 Обробка xml-даних 101

ВИКОРИСТАННЯ ДЕКІЛЬКОХ ШАБЛОНІВ 101

ФІЛЬТРАЦІЯ І СОРТУВАННЯ ДАНИХ XML 104

ДОСТУП ДО АТРИБУТІВ XML 110

ВИКОРИСТАННЯ КАСКАДНИХ ТАБЛИЦЬ СТИЛІВ 112

ВСТУП


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 стане складною.


Так, зазвичай, оформлюють

виділений текст у HTML


Відповідь буде правильною у будь-якому випадку, оскільки це приклад оформлення документів і в XML і в HTML.

Проте мова XML була розробленою для того, щоб подолати обмеження, що накладаються мовою HTML. Так, розробник XML-документа може сам визначити ряд своїх власних дескрипторів. Наприклад, якщо дескриптор параграфа в HTML – <p> – єдиний, який може задавати і описувати параграф, то розробник документа XML може самостійно ввести дескриптор параграфа одним з нижче перелічених дескрипторів:




.


Найпростіший елемент включає дескриптор, що відкривається, вміст, дескриптор, що закривається. Наприклад,


Вивчаємо XML .


ПРАВИЛО. Весь рядок Вивчаємо XML називається елементом, дані між дескрипторами називаються вмістом елемента.


ПРАВИЛО. Всі елементи мають бути обов'язково завершені. Всі не порожні елементи обов'язково повинні містити дескриптор, що відкривається і дескриптор, що закривається. Порожні елементи мають бути закриті за наступним правилом.


ПРАВИЛО. Порожній елемент завжди записується за стандартним правилом синтаксису порожнього елемента:


<ім'я _елемента/>.


^ РОЗМІЩЕННЯ АТРИБУТІВ У ЕКЗЕМПЛЯРІ XML


Слід відзначити, що, як і в HTML, у мові XML є атрибути, які змінюють або класифікують елементи і вказуються у дескрипторі, що відкривається.

Синтаксис визначення атрибута для елемента такий:


<ім’я_елемента ім’я_атрибута=“значення”> Зміст елемента відповідного елемента ім’я_атрибута>.


Атрибути розміщуються завжди у дескрипторі, що відкривається. Дескриптор, що відкривається, у елементі може містити декілька атрибутів, дотримуючись таких правил:


<ім’я_елемента

ім’я_атрибута= “значення”

ім’я_атрибута= “значення”

ім’я_атрибута= “значення”> Зміст елемента відповідного елемента ім’я_атрибута>.


Наприклад,




Івченко

18623,12

.


Усі значення атрибутів мають бути обов'язково в лапках. У разі відсутності хоча б однієї з лапок, парсер видає таке зауваження (рисунок 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 можуть містити текст, інші елементи, будь-яку комбінацію тексту та інших елементів або ж бути просто порожніми елементами.

Порожній елемент завжди записується за стандартним правилом синтаксису елемента:


<ім'я _елемента/>.


Наприклад,


.


Даний елемент є порожнім, навіть, не дивлячись на те, що містить атрибути. Враховуючи той факт, що повна інструкція







функціонує також як і коротка, для написання порожнього елемента прийнято використовувати коротку форму.

Розглянемо фрагмент HTML-тексту




letter


From: O. Protsenko

to: All students

Subject: Questions to exam

Date: 19.09 2009






аналогічний фрагмент XML-тексту виглядає так:



O. Protsenko

All students

Questions to exam



Questions

.


Якщо поставити собі питання, який із фрагментів містить більше даних для обробки програмним додатком, то відповідь зрозуміла – XML.

Інша відмінність полягає в тому, що HTML змішує зміст і форматування в одному потоці розмітки. Так, наприклад, елементи і свідчать, яким чином мають бути виділені елементи, і де розміщені об'єкти, виділені такими елементами.

Мова 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:




О. Protsenko

All students

Questions to exam



Questions

.


У разі правильно оформленого документа XML браузер перетворить документ, застосовуючи до нього певні стилі.





Рисунок 2 - Результат відображення XML-кода


^ СИНТАКСИС МОВИ XML


Документ XML вважається добре оформленим, якщо він відповідає всім правилам XML. Якщо ж хоч одне правило порушується, документ не вважається за добре оформлений, і не буде оброблений парсером.

^ Добре оформлений документ повинен містити один і лише один кореневий елемент, що містить решту всіх елементів. Елементи кореневого елемента можуть містити дочірні елементи, які мають бути правильно вкладені. Всі елементи, які лежать у кореневому елементі, вважаються дочірніми по відношенню до кореневого.

Крім того, дескриптори в XML чутливі до регістру. Дескриптори, що відкриваються і дескриптори, що закриваються одного і того ж елементу мають бути вказані з використанням одного і того ж регістру.

Якщо створюється XML документ на основі існуючого документа, то необхідно добре вивчити оригінал, щоб зрозуміти структуру документу. Цей процес називається аналізом документа.

Наприклад, є інструкція по миттю машини. Машину обполоснути водою, потім нанести піну і залишити на 5 хвилин. Піну змити. Нанести на поверхню кузова віск, витерти корпус машини.

Розглянемо структуру документа (рис. 3). На схемі видно, що кореневим елементом буде елемент «інструкція», всі останні будуть дочірніми по відношенню до нього. Елемент «інгредієнти» має внутрішні,








Рисунок 3 – Схема документа


Як скласти XML-документ


Визначте кореневий елемент, наприклад, (інструкція). Документ повинен мати дескриптор, що відкривається і дескриптор, що закривається .

Кореневий елемент буде містити решту елементів , , , .

Елементи і будуть містити дочірні елементи .

Розставляємо по місцях всі відкриваючі і закриваючі дескриптори, заповнюючи їх необхідними даними.

Зберігаємо отриманий документ у файлі example_2.xml.

Правильність оформлення документа можна продивитися у вікні Internet Explorer.




Інструкція як помити машину



Вода

50 л

Шампунь

0,5 л

Віск

0,3 л





Відро

1 шт.

Мочалка

1 шт.

Лоскут для полірування

2 шт.



Машину обполоснути водою, потім нанести піну і залишити на 5 хвилин. Піну змити. Нанести на поверхню кузова віск, витерти корпус машини

.


Результат обробки парсером коду, що розглянули, поданий на рисунку 4.





Рисунок 4 – Результат обробки парсером програмного коду


^ ПРАВИЛЬНЕ ВКЛАДЕННЯ ЕЛЕМЕНТІВ


Всі документи XML мають бути перевірені на правильність вкладення елементів.

Мова HTML позбавлена таких недоліків. Вкладення елементів у наведених нижче інструкціях дають однаковий результат.


Цей текст буде виділений курсивом

Цей текст буде виділений курсивом.


XML дуже чутливий до неправильного вкладення елементів, тому коректним вкладенням буде те, в якому елементи не перетинаються


Цей текст буде виділений курсивом.


ПРАВИЛО. Завжди ставте рядки між дескриптором, що відкривається та дескриптором елемента, що закривається, тоді ніколи не отримаєте накладення рядків і перетину документів.

Наприклад,




Цей текст буде виділений курсивом

.


^ ВИЗНАЧЕННЯ ІМЕН У 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 добре оформлений, але з погляду правильності він надлишковий (на кожну складову відводиться два елементи). Логічно було б використовувати один елемент з атрибутом


.


А XML-код виглядатиме так:


<?xml version= “1.0” encoding= “windows-1251”>



Інструкція, як помити машину



Вода

Шампунь

Віск





Відро

Мочалка

Лоскут для полірування



Машину обполоснути водою, потім нанести піну і залишити на 5 хвилин. Піну змити. Нанести на поверхню кузова віск, витерти корпус машини



.





Рисунок 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” ?>

Завтра о 12.45 лекція з Web-дизайну


У цьому екземплярі елемент містить тільки текст.

Цей документ можна перевірити, створивши DTD схему із оголошенням типу цього елемента, яка вказує на те, що цей елемент може мати тільки зарезервоване ключове слово #PCDATA або текст.


#PCDATA (завжди вказується знаками тільки верхнього регістру) – це звичайні текстові дані, але які зчитуються парсером і обробляються належним чином. Перевірка документа на відповідність DTD-схемі, у разі, коли вказаний тип #PCDATA може привести як до бажаних, так і небажаних результатів.

Оскільки, схема DTD забезпечує перевірку правильності структури документів, вона містить правила для змісту. Наприклад, елемент може містити текст або інші елементи, а може бути порожнім елементом. Всі ці моделі змісту подаються у схемах DTD по-різному. Схеми DTD можуть бути вказані в різних документах і бути пов'язаними в цих документах.

Виділяють внутрішні і зовнішні схеми DTD.


^ Розділ 2 ВНУТРІШНІ СХЕМИ DTD


Розглянемо приклад, в якому схема DTD буде вбудована в XML-документ.

Для детального розгляду пронумеруємо рядки.


1: <?xml version=“1.0” encoding=“windows-1251” ?>

2:

3:

4: ]>

5: Завтра о 12.45 відбудеться лекція з Web-дизайну


Рядок 1 – звичайне оголошення XML, яке використовується у всіх XML документах.

У рядку 2 міститься оголошення певного типу документа, яке дається в пролозі документа і, яке пов'язує з документом схему DTD. Визначення типу документа завжди починається з і закінчується >. Ключове слово 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” ?>



Завтра о 12.45 лекція з Web-дизайну

.


Цей самий документ, що містить схему DTD можна оформити так:


1: <?xml version=“1.0” encoding=“windows-1251” ?>

2:

3:

4:

5: ]>

6:

7:

8: Завтра о 12.45 відбудеться лекція з Web-дизайну

9:

10: .


Тут, у рядку 3 оголошується, що елемент note містить дочірній елемент text, рядок 4 містить інформацію про те, що вмістом елемента text є текст, що інтерпретується парсером. Рядки 6-8 є добре і правильно оформленим документом.

Зауваження. Відступи в тексті використовуються виключно для надання документу зручної форми для читання.


^ ОГОЛОШЕННЯ ПОРОЖНЬОГО ЕЛЕМЕНТА


Порожній елемент у схемах DTD оголошується таким чином


ELEMENT і'мя_елемента EMPTY>.


Припустимо, в нашому повідомленні є порожні елементи


<?xml version=“1.0” encoding=“windows-1251” ?>







Завтра о 12.45 відбудеться лекція з Web-дизайну

.


Тоді DTD схема для такого XML тексту виглядатиме так


1:<?xml version=“1.0” encoding= “windows-1251” ?>

2:

3: note (time,date,text)>

4:

5:

6:

7: ]>

8:

9:

10:

11:

12: Завтра о 12.45 відбудеться лекція з Web-дизайну

13:

14: .


Парсер інтерпретує рядок 3 так: елемент note містить три елементи time, date, text, які слідують один за одним у такому порядку, в якому вони перелічені в дужках при описі елемента note.

Згідно схеми DTD, елементи time і date не можуть містити будь-яких даних.


^ ВИКОРИСТАННЯ КЛЮЧОВОГО СЛОВА ANY


Трапляється, що наперед невідомо, яка саме модель використовується. У таких випадках в схемах DTD використовують слово ANY.

Ключове слово ANY впливає на визначення структури XML.


1:<?xml version=“1.0” encoding= “windows-1251” ?>

2: note [

3:

4:

5:

6:

7: ]>

8:

9:

10:

11:

12: Завтра о 12.45 відбудеться лекція з Web-дизайну

13:

14:


^ ЗМІШАНИЙ ВМІСТ ЕЛЕМЕНТІВ


Бувають випадки, коли необхідно дозволити елементу містити деяку комбінацію текстових даних і інших елементів. Подібні можливості забезпечує модель змішаного вмісту.

Наприклад,


<?xml version=“1.0” encoding=“windows-1251” ?>

Увага!!!!







Завтра о 12.45 лекція з Web-дизайну






Тут кореневий елемент note окрім порожніх дочірніх елементів містить текст «Увага!!!»

Для визначення змішаного типу вмісту використовують таке позначення:

Тобто в даному прикладі XML-код виглядатиме так:


1:<?xml version= "1.0" encoding= "windows-1251"?>

2:

3: ELEMENT note (#PCDATA | time | date | text)*>

4:

5:

6:

7: ]>

8: Увага!!!

9:

10:

11:

12:Завтра о 12.45 відбудеться лекція з Web-дизайну

13:

14: .


^ ВИКОРИСТАННЯ АТРИБУТІВ


Припустимо, в процесі написання XML коду було вирішено використовувати замість порожнього елемента date порожній елемент з атрибутами:


,


а елемент time з необов'язковими атрибутами


.


Наприклад,


<?xml version=“1.0” encoding=“windows-1251” ?>

Увага!!!!







Завтра о 12.45 відбудеться лекція з Web-дизайну



.


У схемі DTD існує спеціальний механізм визначення атрибутів з використанням ключового слова ATTLIST.

Оголошення атрибутів відбувається таким чином:


ATTLIST ім’я_елемента

ім’я_атрибута1 (тип) значення за замовченням

ім’я_атрибута1 (тип) значення за замовчанням >.


Існує три фундаментальні типи атрибутів, що оголошуються в рамках DTD схем:

Рядки, що зазначаються за допомогою ключового слова CDATA;

Марковані атрибути, що зазначаються за допомогою визначених раніше маркерів;

Атрибути з переліченням, що пропонують цілий ряд значень.

Існує три стандартні значення атрибутів:

#REQUIRED – вказує на те, що атрибут має бути вказаний;

#FIXED – вказує на фіксоване значення атрибута. Якщо значення атрибута відрізняється від оголошеного, документ не вважається правильним.

#IMPLIED – атрибут необов'язковий. Це означає, що при обробці елемента парсер може використовувати будь-яке значення, якщо в цьому є необхідність.


^ ОГОЛОШЕННЯ АТРИБУТІВ ПЕРШОГО ТИПУ


Складемо DTD схему для прикладу, де позначимо, що атрибути задаються рядками.


<?xml version="1.0" encoding="windows-1251" ?>


time EMPTY>


day CDATA #REQUIRED

month CDATA #REQUIRED

year CDATA #FIXED "2009">

hh CDATA #IMPLIED

mm CDATA #IMPLIED

ss CDATA #IMPLIED>

]>

Увага!!!







Завтра о 12.45 відбудеться лекція з Web-дизайну



.


Рядок 3 вказує на те, що кореневий елемент може містити текст #PCDATA, що інтерпретується парсером, або дочірній елемент time, або date, або text. Причому кожен з цих елементів може бути присутнім в XML-документі або бути відсутнім, але один з них повинен бути обов'язково, а можуть бути і всі відразу.


Зауваження. Відзначимо, що в моделях елементів змішаного типу вміст може перелічувуватися тільки через знак «|» і повинен бути визначений або як нуль, або як множина (*). Роздільник «,» використовувати не можна.


^ ВИЗНАЧЕННЯ АТРИБУТІВ МАРКОВАНОГО ТИПУ


При використанні атрибутів маркованого типу можна накладати обмеження на значення атрибутів. Наприклад, можна дозволяти атрибутам брати тільки одне з двох заданих значень.

Розглядають 4 різних типи маркованих атрибутів:


ID – унікальним чином ідентифікує об'єкт;

IDREF – вказує на елементи, що містять атрибути ID;

ENTITIES – посилання на зовнішній елемент;

NMTOKEN – містить букви, цифри, крапки, знаки підкреслення, переноси і двокрапки, але не пропуски.


^ ВИКОРИСТАННЯ АТРИБУТІВ ТИПІВ ID І IDREF


Наприклад, в житті часто виникає ситуація, коли людина протягом дня робить позначки в щоденнику. Кожному повідомленню присвоюється унікальний ідентифікатор number. Також протягом дня виникають які-небудь коментарі, які можна записувати, а можна і не записувати. Якщо виникає необхідність записати коментар , його необхідно пов'язати з відповідною позначкою.


<?xml version="1.0" encoding="windows-1251" ?>









Завтра відбудеться лекція з Web-дизану о 13.25





Терміново здати звіт





Що важливіше лекція або звіт?





Не забути конспект



.


DTD-схема для даного документа виглядатиме так:


1:<?xml version="1.0" encoding= "windows-1251" ?>

2:

3:

4:

5:

6: day CDATA #REQUIRED

7: month CDATA #REQUIRED

8: year CDATA #FIXED "2009">

9:

10:

11:

12: hh CDATA #REQUIRED

13: mm CDATA #REQUIRED

14: ss CDATA #IMPLIED>

15:

16:

17:

18: number ID #REQUIRED

19: from CDATA #REQUIRED>

20:

21:

22:

23: txt IDREF #REQUIRED>

24:

25: ]>

26:

27:

28:

29:

30:

31: Завтра відбудеться лекція з Web-дизану о 13.25

32:

33:

34: Не забути конспект

35:

36:

37:

38:

39: Терміново здати звіт. Завтра останній термін

40:

41:

42: Що важливіше лекція або звіт?

43:

44:.


Отже, запис в рядку 3:


говорить про те, що елемент note повинен містити елементи date*, time+, text+, comment+, які ідуть у порядку їх опису. Причому date може використовуватися скільки завгодно разів (*) або не використовуватися взагалі, елементи time, text, comment – повинні використовуватися мінімум один раз. Знак (*) у кінці специфікації елемента говорить про те, що група елементів може повторюватися скільки завгодно разів.

У рядках 5-8, 11-14, 17-19, 22 описуються атрибути елементів date, time, text, comment відповідно.

У рядку 18 вказується, що необхідний атрибут number має тип ID. Це означає, що атрибут number має бути унікальним, тобто не використовуватися тільки один раз.

У рядку 37: відсутній атрибут ss елемента time. Це пов'язано з тим, що ss був оголошений як атрибут типу IMPLIED.

Абсолютно по-іншому буде виглядати XML-документ, якщо специфікація в рядку 3 виглядатиме таким чином:


<?xml version="1.0" encoding="windows-1251" ?>


date

day CDATA #REQUIRED

month CDATA #REQUIRED

year CDATA #FIXED "2009">


hh CDATA #REQUIRED

mm CDATA #REQUIRED

ss CDATA #IMPLIED>


number ID #REQUIRED

from CDATA #REQUIRED>


txt IDREF #REQUIRED>

]>









Завтра відбудеться лекція з Web-дизану о 13.25







Терміново здати звіт. Завтра останній термін





Що важливіше: лекція або звіт?



Не забути конспект



.


А якщо вказати в рядку 3 специфікацію елемента note


,


то для правильності документа, рядки слід було б розмістити так:


<?xml version="1.0" encoding= "windows-1251" ?>


day CDATA #REQUIRED

month CDATA #REQUIRED

year CDATA #FIXED "2009">

time EMPTY>

hh CDATA #REQUIRED

mm CDATA #REQUIRED ss CDATA #IMPLIED>


number ID #REQUIRED

from CDATA #REQUIRED>


txt IDREF #REQUIRED>

]>









Завтра відбудеться лекція з Web-дизану о 13.25



Терміново здати звіт. Завтра останній термін





Що важливіше: лекція або звіт?





Не забути конспект



.
<
еще рефераты
Еще работы по разное