Опис шаблону документа DTD. У прологовій частині XML – документа може знаходитися опис шаблону документа або посилання на файл, у якому такий опис зберігається

У прологовій частині XML – документа може знаходитися опис шаблону документа або посилання на файл, у якому такий опис зберігається. Опис шаблону документа DTD(Document Type Definition) визначає структуру документа, містить відомості про набір XML – тегів розмітки, що використовуються документом. У DTD визначається структура та взаємовідносини тегів розмітки, що описують дані у документі.

У DTD визначається кореневий елемент, елементи верхнього рівня, дочірні елементи.


Структура документа описується таким чином:

 

<!DOCTYPE кореневий_елемент [ <!ELEMENT кореневий_елемент (список_елементів_першого_рівня)> <!ELEMENT елемент_першого_рівня (список_елементів_другого_рівня)> . . . <!ELEMENT елемент_нижчого_рівня (тип_елемента)> . . . ]>

 

Тип умісту елемента можна визначити як #PCDATA – рядкові дані. PCDATA (від англ. parsed character data) визначає, що вміст елементу є розібраними символьними даними, або частіше використовується термін

«текстовий уміст» (text content) або «текстовий вузол» (text node). При введенні значення елементу типу PCDATA можна використовувати будь-які символи, крім зарезервованих < і &. Для того, щоб вставити ці символи у значення елементу або інші спеціальні символи, як і у мові HTML, використовуються управляючі послідовності.

Наприклад, такий запис буде коректним:

<company> Procter &amp; Gamble </company>

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

<!ELEMENT img EMPTY>

У XML – документі цей елемент може використовуватися, наприклад, так:

<img src=”image.jpg”>

Тип ANY практично знімає усі обмеження на вміст елемента, тому застосовується рідко.

Елемент можна оголосити як такий, що має змішаний уміст. Такі елементи


можуть вміщувати символьні данні та будь-яку комбінацію елементів.

DTD надає можливість визначити порядок і число вкладень для дочірніх елементів. У списку вкладених елементів комою розділяються елементи, які лише один раз можуть слідувати за елементом вищого рівня. Вибір одного з декількох елементів задається символом |.

Наприклад, запис

<!ELEMENT dessert (icecream | cake)>

означає, що для елемента dessert може бути визначеним елемент нижчого рівня icecream або елемент cake, однак не обидва разом.

Припустимим є також об’єднання послідовностей і вибору елементів. Це виконується за допомогою груп, які створюються застосуванням круглих дужок. Наприклад, таке оголошення елементу

<!ELEMENT student (name | (first_name, last_name)>

означає, що елемент може включати елемент нижчого рівня name або два елементи first_name і last_name.

Число вкладень елемента визначається за допомогою символу - індикатору вкладень, який вводиться після імені елемента у списку вкладених елементів.

Індикатор вкладень Опис
+ елемент може з’являтися будь-яке число раз, однак не менше одного разу
* елемент є необов’язковим, якщо використовується, то може з’являтися будь-яке число раз
? елемент є необов’язковим, якщо використовується, то може з’являтися тільки один раз

 

Наприклад, запис

<!ELEMENT book (chapter+)>

означає що у елементі book може бути декілька елементів chapter, однак не менше одного елемента.


Елементи можуть мати атрибути, які призначені для надання додаткової інформації про елементи. Оголошення атрибутів у DTD задає список атрибутів для елемента за допомогою тегу:

<!ATTLIST елемент атрибут тип_даних значення_за_замовчуванням>

Як тип даних найчастіше визначається тип - рядкові дані за допомогою ключового слова CDATA, тобто дані які можуть включати будь-які символи крім символів <, >, &, ² і ¢ (для них слід використовувати посилання на сутності

– escape-послідовності).

Існують також так звані перелічуючи типи атрибутів. Їх використання надає змогу на місці типу атрибуту ввести у круглих дужках перелік припустимих значень.

<!ATTLIST phone type (Home | Work) #IMPLIED >

У наведеному прикладі атрибут type елемента phone може приймати значення Home або Work.

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

DTD надає можливість використовувати такі значення атрибутів за замовчуванням:

#IMPLIED – якщо атрибут у елементі відсутній, то додаток, що використовує XML – документ, самостійно визначає значення атрибуту;

#REQUIRED – атрибут для елемента обов’язково повинен бути визначений;

#FIXED – значення атрибуту є константою, яку неможна змінити.

Приклади оголошення атрибутів:

<!ATTLIST x y CDATA #REQUIRED > - для елемента xоголошується обов’язковий атрибут y

<!ATTLIST Tel Code_T CDATA #FIXED ²062²> - для елемента Tel

оголошується атрибут Code_Tз фіксованим значенням 062

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


завжди визначаються у лапках, причому можна використовувати як одинарні, так і подвійні лапки.

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

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE students [ <!ELEMENT students (student+)> <!ELEMENT student (name, birthday)> <!ATTLIST student number CDATA #REQUIRED> <!ELEMENT name (first_name, last_name)> <!ELEMENT first_name (#PCDATA)> <!ELEMENT last_name (#PCDATA)> <!ELEMENT birthday (#PCDATA)> ] > <students> <student number="1"> <name><first_name>Іван</first_name> <last_name>Петренко</last_name></name> <birthday>8 грудня 1990 року</birthday></student> <student number="2"> <name><first_name>Марія</first_name> <last_name>Смірнова</last_name></name> <birthday>20 липня 1989 року</birthday></student> </students>


 

Рисунок 9.4 – Вид XML – документа з вбудованим DTD у вікні браузера ІЕ

DTD також можна помістити у окремий файл з розширенням dtd і посилатися на нього в документі. Такі DTD стають доступними багатьом XML

–документам, що дає змогу уніфікувати інформацію, що міститься у цих документах. Наприклад, можна створити DTD документа «Баланс підприємства» і при створенні балансів посилатися на це DTD. Для посилання на зовнішнє DTD у прологовій частині XML – документа слід визначити:

<!DOCTYPE кореневий_елемент SYSTEM файл_з_ DTD>


У розглянутому раніше прикладі вміст DTD можна помістити у файл ZDTD.dtd:

<!ELEMENT students (student+)> <!ELEMENT student (name, birthday)> <!ATTLIST student number CDATA #REQUIRED> <!ELEMENT name (first_name, last_name)> <!ELEMENT first_name (#PCDATA)> <!ELEMENT last_name (#PCDATA)> <!ELEMENT birthday (#PCDATA)>

Тоді власно XML – документ виглядатиме так:

 

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE students SYSTEM "ZDTD.dtd" > <students> <student number="1"> <name><first_name>Іван</first_name> <last_name>Петренко</last_name></name> <birthday>8 грудня 1990 року</birthday></student> <student number="2"> <name><first_name>Марія</first_name> <last_name>Смірнова</last_name></name> <birthday>20 липня 1989 року</birthday></student> </students>

 








Дата добавления: 2016-04-14; просмотров: 792;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.