Опис шаблону документа 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 & 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;