Як оголосити DTD




Як оголосити DTD



XML - DTD

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

XML DTD може бути заданий всередині документа, або він може зберігатися в окремому документі, а потім використовуватися окремо.

Синтаксис

Основний синтаксис DTD виглядає наступним чином.

У наведеному вище синтаксисі,

Елемент вказує синтаксичному аналізатору проаналізувати документ із зазначеного кореневого елемента.

DTD-ідентифікатор — це ідентифікатор для визначення типу документа, який може бути шляхом файлу в системі або URL-адресою до файлу в Інтернеті. External Subset.

Квадратні дужки [] містять необов'язковий список оголошень сутностей, який називається Internal Subset .

Внутрішній DTD

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

Синтаксис

Нижче наводиться синтаксис внутрішнього DTD

де root-element - це ім'я кореневого елемента, а element-оголошень - Це місце, де ви оголошуєте елементи.

приклад

Нижче наведено простий приклад внутрішнього DTD.

     ]>
Tanmay Patil TutorialsPoint (011) 123-4567

Давайте пройдемося за наведеним вище кодом

Почати оголошення — Почніть оголошення XML із наступного затвердження.

DTD — Відразу після заголовка XML слідує оголошення типу документа , зазвичай зване DOCTYPE

Оголошення DOCTYPE має знак оклику (!) на початку імені елемента.DOCTYPE повідомляє аналізатору, що DTD пов'язаний із цим документом XML.

Тіло DTD — за оголошенням DOCTYPE слідує тіло DTD, де ви оголошуєте елементи, атрибути, сутності та нотації.

Тут оголошено кілька елементів, які становлять словник документа. визначає ім'я елемента типу #PCDATA. Тут #PCDATA означає аналізовані текстові дані.

Завершення оголошення — Нарешті, розділ оголошення DTD закривається за допомогою дужки, що закриває, і кутової дужки, що закриває ( ]> ). Це ефективно завершує визначення, і після цього документ XML слід відразу.

правила

  • Оголошення типу документа повинно з'являтися на початку документа (з попереднім лише заголовком XML) — воно не дозволене будь-де в документі.
  • Подібно до оголошення DOCTYPE, оголошення елементів повинні починатися зі знака оклику.
  • Ім'я в оголошенні типу документа має відповідати типу кореневого елемента.

Оголошення типу документа повинно з'являтися на початку документа (з попереднім лише заголовком XML) — воно не дозволене будь-де в документі.

Подібно до оголошення DOCTYPE, оголошення елементів повинні починатися зі знака оклику.

Ім'я в оголошенні типу документа має відповідати типу кореневого елемента.

Зовнішній DTD

У зовнішніх DTD елементи оголошуються поза XML-файлом. Доступ до них здійснюється шляхом вказівки системних атрибутів, які можуть бути або легальним файлом .dtd, або дійсним URL-адресою. Щоб позначити його як зовнішній DTD, автономний атрибут в оголошенні XML повинен бути встановлений як no . Це означає, що декларація включає інформацію із зовнішнього джерела.

Синтаксис

Нижче наводиться синтаксис для зовнішнього DTD.

де file-name - Це файл з розширенням .dtd .

приклад

У наступному прикладі показано використання зовнішнього DTD.

Tanmay Patil TutorialsPoint (011) 123-4567

Вміст файлу DTD address.dtd виглядає так:

Типи

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

Системні ідентифікатори

Системний ідентифікатор дозволяє вказати розташування зовнішнього файлу, що містить оголошення DTD. Синтаксис виглядає наступним чином.

Як бачите, він містить ключове слово SYSTEM та посилання URI, що вказує на розташування документа.

Публічні ідентифікатори

Відкриті ідентифікатори надають механізм для визначення розташування ресурсів DTD і записуються таким чином:

Як бачите, він починається з ключового слова PUBLIC, за яким слідує спеціальний ідентифікатор. Публічні ідентифікатори використовуються для ідентифікації запису в каталозі. Публічні ідентифікатори можуть дотримуватися будь-якого формату, однак формат, що зазвичай використовується, називається формальними загальнодоступними ідентифікаторами чи FPI .

DTD - Атрибути

У цьому розділі ми обговоримо атрибути DTD. Атрибут дає більше інформації про елемент або, точніше, визначає властивість елемента. Атрибут XML завжди знаходиться у формі пари ім'я-значення. Елемент може мати будь-яку кількість унікальних атрибутів.

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

Синтаксис

Основний синтаксис оголошення атрибутів DTD наступний:

У наведеному вище синтаксисі -

Атрибути DTD починаються з ключового слова

element-name вказує ім'я елемента, до якого застосовується атрибут.

ім'я-атрибута вказує ім'я атрибута, який включений до імені-елемента.

attribute-type визначає тип атрибутів. Ми обговоримо це докладніше у наступних розділах.

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

приклад

Нижче наведено простий приклад оголошення атрибуту DTD.

xml version
=
"1.0"?>



]>

id
=
"123">Tanmay Patil

Давайте пройдемося за наведеним вище кодом

Почніть з оголошення XML з наступного затвердження.

  • Відразу за заголовком XML слідує оголошення типу документа, зазвичай зване DOCTYPE, як показано нижче - DOCTYPE повідомляє аналізатору, що DTD пов'язаний з цим документом XML. Оголошення DOCTYPE має знак оклику (!) на початку імені елемента.

Відразу за заголовком XML слідує оголошення типу документа, зазвичай зване DOCTYPE, як показано нижче.

DOCTYPE повідомляє аналізатору, що DTD пов'язаний із цим документом XML. Оголошення DOCTYPE має знак оклику (!) на початку імені елемента.

Нижче наведено тіло DTD. Тут ми оголосили елемент та атрибут.

  • Ідентифікатор атрибут для імені елемента визначено як дано нижче — Тут тип атрибуту — CDATA, а його значення - #REQUIRED .

Ідентифікатор атрибута для імені елемента визначено як дано нижче.

Тут тип атрибуту CDATA, а його значення - #REQUIRED .

Правила декларації атрибуту

  • Усі атрибути, що використовуються у документі XML, повинні бути оголошені у визначенні типу документа (DTD) з використанням оголошення списку атрибутів.
  • Атрибути можуть відображатися лише у початкових або порожніх тегах.
  • Ключове слово ATTLIST має бути у верхньому регістрі
  • Повторні імена атрибутів не будуть дозволені у списку атрибутів для цього елемента.

Усі атрибути, що використовуються у документі XML, повинні бути оголошені у визначенні типу документа (DTD) з використанням оголошення списку атрибутів.

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

Ключове слово ATTLIST має бути у верхньому регістрі

Повторні імена атрибутів не будуть дозволені у списку атрибутів для цього елемента.

Типи атрибутів

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

У наведеній нижче таблиці наведено зведення різних типів атрибутів.

CDATA – це символьні дані (текстові, а не розмічувальні). Це тип рядкового атрибуту .

Це унікальний ідентифікатор атрибуту. Воно не повинно з'являтися більше ніж один раз. Це тип атрибута Tokenized .

Він використовується посилання на ідентифікатор іншого елемента. Він використовується для встановлення зв'язків між елементами. Це тип атрибута Tokenized .

Він використовується посилання на кілька ідентифікаторів. Це тип атрибута Tokenized .

ЮРИДИЧНЕ ОБЛИЧЧЯ

Він представляє зовнішню сутність у документі. Це тип атрибута Tokenized .

Він є переліком зовнішніх об'єктів у документі. Це тип атрибута Tokenized .

Він схожий на CDATA, а значення атрибута складається з дійсного імені XML. Це тип атрибута Tokenized .

Це схоже на CDATA, а значення атрибута складається зі списку допустимого імені XML. Це тип атрибута Tokenized .

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

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

CDATA – це символьні дані (текстові, а не розмічувальні). Це тип рядкового атрибуту .

Це унікальний ідентифікатор атрибуту. Воно не повинно з'являтися більше ніж один раз. Це тип атрибута Tokenized .

Він використовується посилання на ідентифікатор іншого елемента. Він використовується для встановлення зв'язків між елементами. Це тип атрибута Tokenized .

Він використовується посилання на кілька ідентифікаторів. Це тип атрибута Tokenized .

ЮРИДИЧНЕ ОБЛИЧЧЯ

Він представляє зовнішню сутність у документі. Це тип атрибута Tokenized .

Він є переліком зовнішніх об'єктів у документі. Це тип атрибута Tokenized .

Він схожий на CDATA, а значення атрибута складається з дійсного імені XML. Це тип атрибута Tokenized .

Це схоже на CDATA, а значення атрибута складається зі списку допустимого імені XML. Це тип атрибута Tokenized .

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

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

Оголошення значення атрибуту

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

  • може мати значення за замовчуванням
  • може мати фіксоване значення
  • необхідно
  • мається на увазі

може мати значення за замовчуванням

може мати фіксоване значення

Значення за замовчуванням

Містить значення за промовчанням. Значення можуть бути поміщені в одинарні лапки (') або подвійні лапки (').

Нижче наводиться синтаксис значення

де default-value - Це певне значення атрибуту.

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

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

ВИПРАВЛЕНО Значення

Ключове слово #FIXED, за яким слідує фіксоване значення, використовується, коли ви хочете вказати, що значення атрибута є постійним і не може бути змінено. Звичайне використання фіксованих атрибутів – вказівка ​​номерів версій.

Нижче наводиться синтаксис фіксованих значень

де #FIXED – певне значення атрибута.

Нижче наведено простий приклад оголошення атрибуту зі значенням FIXED

    ]>
we are a free online teaching faculty

У цьому прикладі ми використовували ключове слово #FIXED, де вказує, що значення «tutorialspoint» є єдиним значенням для імені атрибута елемента . Якщо ми намагаємося змінити значення атрибуту, це дає помилку.

Наступне є недійсним DTD -

    ]>
we are a free online teaching faculty

ПОТРІБНІ ЦІННОСТІ

Коли ви хочете вказати, що атрибут є обов'язковим, використовуйте ключове слово #REQUIRED.

Нижче наведено синтаксис #REQUIRED

де #REQUIRED — певний тип атрибута.

Нижче наведено простий приклад оголошення атрибуту DTD із ключовим словом #REQUIRED —

У цьому прикладі ми використали ключове слово #REQUIRED, щоб вказати, що для імені елемента має бути вказано ідентифікатор атрибуту.

ПЕРЕЗУМОВАНІ ЦІННОСТІ

При оголошенні атрибутів, ви завжди повинні вказувати декларацію значення.Якщо декларований атрибут не має значення за замовчуванням, не має фіксованого значення і не є обов'язковим, ви повинні оголосити цей атрибут як мається на увазі . Ключове слово #IMPLIED використовується для вказівки атрибуту як мається на увазі .

Нижче наводиться синтаксис #IMPLIED

де #IMPLIED — певний тип атрибута.

Нижче наведено простий приклад # МАЄТЬСЯ

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

Як оголосити DTD?

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

У цьому розділі ми покажемо, як правильно читати, розбирати та створювати DTD. Ви дізнаєтеся, як визначити, коли потрібне зовнішнє DTD, і коли — внутрішнє DTD. Ми досліджуємо, чому іноді краще користуватися заздалегідь визначеними DTD. Створення DTD є першим кроком у правильному структуруванні документів XML. Саме DTD забезпечують XML-аналізатор інформацією, яка необхідна для виконання своєї роботи.

DTD визначає частини документа і вказує, яким чином вони можуть використовуватися, що може бути в них розміщено, і чи потрібні фрагменти документа.DTD є набором правил, що визначає інструкції, які можуть бути передані аналізатору (parser) для обробки ним цього документа. DTD може включати набір об'яв елементів і атрибутів, а також сутності (entities), умовні позначення (notations) та коментарі. Різні оголошення компонентів визначають, як документ буде структурований, і це інформація (як інструкцій) передається аналізатору (parser). Аналізатор, своєю чергою, надсилає результати додаток, що забезпечує перегляд даних.

На прикладі DTD, створеного для відносно простого документа, розглянемо, що воно є і як працює. Це приклад внутрішнього DTD, тобто такого, що міститься безпосередньо у самому XML-документі:

Зверніть увагу, що це DTD повністю розміщено в самому документі. Ці визначення, які насправді є нічим іншим як інструкціями обробки даних, точно вказують аналізатору XML, як саме слід керувати різними даними, які будуть розміщені в документі, а також якою інформацією або текстом повинні бути заміщені розташовані в документі сутності. DTD, який включений до складу самого XML-документа, називається внутрішнім підмножиною DTD (internal DTD subset), оскільки всі інструкції з обробки інформації, а також дані документа розташовані всередині єдиного документа.

Після того, як попередній приклад буде оброблений аналізатором і відображено браузером на екрані, результат може бути наступним (передбачається, що відповідна таблиця стилів вже підключена):

Today's Memo Пам'ятка на сьогодні
August 1, 2000 1 серпня 2000
200 West 34th Suite 953, Anchorage. 200 West 34th Suite 953, Anchorage.
Це — повідомлення про те, що
New XML Black Book has now been видавництво Coriolis, в серії
printed. Published by The Coriolis Black Book, випустило нову книгу
Group, this book outlines по XML, яка містить все
everything you need to know необхідні відомості про цю мову
про XML. розмітки.

Аналізатор XML звіряє розмітку документа на оголошення різних елементів. Він також здійснює заміщення сутності, для якої DTD було визначено конкретне значення. У цьому прикладі аналізатор замінює посилання на сутність &PUBLISHER;- оголошеним значенням цієї сутності, тобто - The Coriolis Group. Таблиця стилів, яка буде описана пізніше в окремому HTML-файлі, керує відображенням даних.

Розглянемо наш приклад детальніше, щоб зрозуміти призначення кожного рядка коду у визначенні документа. Ось коротке зведення найважливіших компонентів даного документа:

  • &lt?XML version="1.0" encoding="UTF-8" standalone="no"?&gt — це оголошення вказує на те, що цей документ є XML-документом. Це перший рядок інструкцій, який має бути надісланий аналізатору. Щоб отримати докладнішу інформацію про оголошення XML, зверніться до розділу "Оголошення XML", який міститься в цьому розділі.
  • &lt!DОСТУРІ DOC [ — дане оголошення вказує, де розміщено DTD — в даному випадку — в самому документі, але могло знаходитися і в іншому місці, наприклад &lt!DOCTYPE novel PUBLIC "-//Megginson//DTD Novel//EN" " novel.
  • &lt!ELEMENT DOC (SUBJECT, DATE, ADDRESS, MEMO) &gt — Визначає список елементів кореневого елемента DOC.Це оголошення елемента повідомляє аналізатору про те, що кореневий елемент DOC містить елементи-нащадки SUBJECT, DATE, ADDRESS і MEMO і ці елементи повинні з'являтися в документі в тому ж порядку. Якщо цей порядок буде порушено, аналізатор видасть повідомлення про помилку.
  • &lt!ELEMENT SUBJECT (# PCDATA) &gt —визначає елемент SUBJECT і вказує, що цей елемент міститиме символьні дані, які підлягають обробці аналізатором.
  • &lt! ELEMENT DATE (#PCDATA) — визначає елемент DATE і вказує, що цей елемент міститиме символьні дані, які підлягають обробці аналізатором.
  • &lt! ELEMENT ADDRESS (#PCDATA)&gt — Визначає елемент ADDRESS і вказує, що цей елемент міститиме символьні дані, які підлягають обробці аналізатором.
  • &lt! ELEMENT MEMO (#PCDATA) — визначає елемент MEMO і вказує, що цей елемент міститиме символьні дані, які підлягають обробці аналізатором.
  • &lt! ENTITY PUBLISHER "The Coriolis Group" - визначає просту сутність PUBLISHER і вказує, що значенням цієї сутності є "The Coriolis Group".
  • ] &gt — вказує на кінець DTD.

Оголошення

Оголошення називають розмітку, яка служить для процесора XML спеціальною інструкцією, що вказує, як він повинен обробляти цей документ. Існують оголошення елементів, атрибутів, сутностей, умовних позначень, оголошення процесора та оголошення типу документа. Розглянемо два найважливіших з них - оголошення процесора та оголошення типу документа. На відміну від інших оголошень, оголошення процесора та оголошення типу документа не беруть участь у конструюванні самого документа.Вони не пояснюють структурну роль кожного окремого елемента чи атрибута. Навпаки, вони вказують процесору, який стандарт необхідно використовувати, до якого типу відноситься документ, що обробляється, а також де зберігається DTD, відповідно до якого сконструйований даний документ. Ще раз зверніть увагу на два рядки коду, які визначають оголошення процесора або так зване оголошення XML (XML declaration) та оголошення типу документа:

&lt?XML version="1.0" encoding="UTF-8" standalone="no"?&gt
&lt!DOCTYPE DOC [

Оголошення XML

Перший рядок у попередньому прикладі називається оголошенням XML. Це оголошення вказує процесору, що для обробки документа XML необхідно використовувати специфікацію XML використовуваної версії (в даний час - версії 1.0. Друга частина оголошення XML вказує кодування символів в даному документі. У цьому прикладі застосовано 8-бітове кодування Unicode.

Заключний фрагмент інформації, який ми включаємо в оголошення XML, називається оголошенням окремого документа (standalone document declaration). Це оголошення показує, чи є зовнішні джерела інформації для цього документа. Так, значення "yes" говорить, що в даному документі не використовується зовнішнє DTD або будь-які зовнішні параметричні сутності (external parameter entities). Іншими словами, цей документ є самодостатнім і вся необхідна інформація міститься в ньому самому. Значення "yes" також вказує на процесор, що в розмітці необхідно ігнорувати будь-які оголошення зовнішніх посилань. Значення "nо" вказує процесору, що може обробляти будь-які зовнішні оголошення.Встановлюючи для атрибуту standalone значення "nо", ви повідомляєте XML-процесору, що цей документ може мати посилання будь-які зовнішні оголошення, наприклад будь-які зовнішні DTD. Це не означає, що ви повинні включати зовнішні посилання, а лише те, що процесор повинен прийняти та обробити будь-яке зовнішнє посилання, якщо воно зазначено в документі.

Коли встановлювати значення "yes", а коли "nо"? Якщо зовнішнє DTD містить оголошення атрибутів з будь-якими установками значень за замовчуванням, і ці значення застосовуються до елементів, що зустрічаються у вашому документі, слід встановити значення "nо". Також необхідно встановити значення "nо", якщо документ містить якісь порожні ділянки, або в документі є сутності, і посилання на них зустрічаються у змісті документа. Значення "yes" можна встановити, якщо в документі немає посилань на зовнішні сутності, і якщо ви тільки використовуєте загальні сутності (general entities), що є частиною мови XML, наприклад, амперсанд, символи "більше", "менше ніж", апостроф або ж лапки.

Оголошення типу документа

Рядок коду &lt! DOCTYPE DOC [ називається оголошенням типу документа, і він служить для зв'язку XML-документа з відповідним DTD. Вираз, наступний за &lt! DOCTYPE є ім'ям використовуваного DTD. Якщо DTD є внутрішнім, то за оголошенням &lt! DOCTYPE слідує за списком елементів і атрибутів, визначених для внутрішнього DTD. Саме в оголошенні типу документа автор XML-документа вказує, чи є дане DTD загальним (public), чи приватним (private). Далі, після закриває дужки вказується або саме DTD, або локатор посилання (reference locator)-на його місцезнаходження.Якщо ви не опишете DTD, процесор не отримає інформацію, необхідну для конструювання документа.

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

Ось приклад DTD, що міститься у самому документі:

&lt!DOCTYPE DOC [
&lt!ELEMENT DOC (SUBJECT, DATE, ADDRESS, MEMO) &gt
&ltELEMENT SUBJECT (#PCDATA)&gt
&lt!ELEMENT DATE (#PCDATA)&gt
&lt!ELEMENT ADDRESS (#PCDATA)&gt
&lt!ELEMENT MEMO (# PCDATA) &gt
&lt!ENTITY PUBLISHER "The Corioiis Group"&gt
]&gt

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

&lt! DOCTYPE book PUBLIC "-//CompanyXYZ//DTD book//EN"
"http://www.site.com/dtds/book.dtd"&gt

Де можуть зберігатись DTD

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

&lt?XML version="1.0" encoding="UTF-8" standalone="no"?&gt
&lt!DOCTYPE DOC [

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

&lt!DOCTYPE [ Початок DTD . ]&gt

Зовнішні DTD також вказуються в оголошенні типу документа, але у них, на відміну внутрішніх DTD, не містяться всі елементи, атрибути, сутності, а вказується лише зовнішній файл, у якому зберігається сам DTD.Не потрібно, щоб ім'я зовнішнього файлу DTD було аналогічним імені XML-документа, потрібно щоб у нього було розширення DTD. Наприклад, якщо документу присвоєно ім'я BIZMEMO, ви цілком можете присвоїти файлу, що зберігає DTD, ім'я MEMO.DTD. Однак пам'ятайте, що один DTD може використовуватися в декількох документах. У цьому полягає одна з найпотужніших функціональних можливостей XML — єдине DTD може охоплювати безліч різних документів, що ґрунтуються на загальній структурі, дозволяючи створювати стандартизовані способи подання інформації.

Загальні та системні DTD

Ви можете використовувати як загальнодоступні (publicy available) DTD, які розроблені для певних цілей, або створити власні DTD. Працюючи із загальнодоступними DTD, необхідно в оголошенні типу документа вказати ключове ім'я PUBLIC. А якщо ви збираєтеся використовувати власний DTD, то вкажіть ключове слово SYSTEM. Ось приклад коду для оголошення загальнодоступного DTD:

&lt! DOCTYPE book PUBLIC "-//CompanyXYZ//DTD book//EN"
”http://www.site.com/dtds/book.dtd"&gt

У XML для вказівки загальнодоступних DTD застосовується така сама структура, як і SGML. Якщо зазначена сутність чи DTD є стандартом ISO, то DTD починається словом ISO. Якщо ж зазначена сутність або DTD не є стандартом ISO, проте стандарт, що використовується офіційно прийнятий групою стандартизації, то оголошення слід починати зі знака плюс (+). Якщо ж він не прийнятий офіційно групою стандартизації, оголошення слід починати зі знака мінус (-). Далі йдуть дві похилих риси (//), а потім власник цього DTD.Якщо ми проаналізуємо DTD з попереднього прикладу, то виявимо, що зазначене DTD не є стандартним, і що власником цього DTD є CompanyXYZ. Ми також побачимо, що ім'я даного DTD є book, і що DTD розташоване за адресою http://www.site.com/ у каталозі dtds.

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

&lt! DOCTYPE book SYSTEM "http://www.site.com/dtds/book.dtd"&gt

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

Примітка
Можна вбудовувати одне DTD в інше, тоді вбудований DTD викликає зовнішній DTD.

Бути чи не бути DTD

Як ви вже знаєте, XML застосування DTD не обов'язково (на відміну від SGML). Оскільки XML був спочатку пристосований для роботи в World Wide Web, в ньому передбачені випадки, коли DTD просто не може працювати через обмеження пропускної здатності. У таких випадках можна включати визначення елементів та атрибутів безпосередньо до самого документа.

Як дізнатися, коли потрібно використовувати DTD, а коли ні? І як дізнатися яким DTD має бути внутрішнім чи зовнішнім?

  • Великі документи потребують застосування зовнішніх DTD. DTD потрібні для документів великого обсягу. За допомогою зовнішнього DTD ви зможете створити деяке наближення до стандартизації, що зробить цей документ більш послідовним, оскільки застосування DTD передбачає обов'язкове дотримання певних правил.
  • Невеликі документи не вимагають використання зовнішніх DTD.Не слід створювати DTD для простої кореспонденції, наприклад, для службових записок та факсів розміром на одну сторінку.
  • У деяких документах, призначених для Internet, застосування зовнішніх DTD є недоцільним, тому що може викликати велике завантаження каналу передачі даних.
  • XML-процесори, що не перевіряють дійсність (validity) XML-документів, не вимагають DTD. Якщо XML-процесор перевіряє лише, чи є XML-документ правильним (well-formed) документом, немає необхідності застосовувати зовнішнє DTD.

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

Зовнішні та внутрішні DTD

Прийнявши рішення про створення DTD слід визначити спосіб його зберігання. Розмір документа — лише один із факторів, які слід враховувати. Необхідно також ретельно розглянути, чи потрібна перевірка дійсності (validity) документа.

Внутрішні DTD

Перше питання, на яке слід відповісти під час створення документа, можна сформулювати так: чи потрібно, щоб документ був самодостатнім (self-contained). Самодостатній документ можна переміщати із системи до системи, без втрати компонентів. З таким документом можна працювати в локальній системі, без виходу в Internet, а можна помістити його змінний носій і мати при собі. І будь-який процесор XML зможе його обробити.

Крім того, розміщення інформації в єдиному файлі знижує час завантаження, аналізу, відображення та обробки файлу. При розміщенні DTD у самому документі процесор XML для відображення інформації повинен прочитати один файл, а не два або три (або більше).

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

Зовнішні DTD

  • Зовнішні DTD можуть бути загальними (public). А це означає, що структура ваших документів буде стандартною і оновлення загального DTD автоматично втіляться в них.
  • Працюючи з малими документами, ви можете зосередитись на їх змісті, а не на структурі. Застосовуючи зовнішнє DTD, ви не повинні поміщати всю інформацію про структуру документа до малого документа. Для швидкого створення документів, що відповідають певній структурі, застосування зовнішніх DTD є кращим.
  • Зовнішні DTD забезпечують найкраще керування документами. За допомогою зовнішніх DTD можна легко створити набір документів, що визначають правила, які служать певним цілям. Далі ви можете в міру необхідності редагувати та оновлювати DTD, не відкриваючи вміст XML-документа, багато в чому так, як ви вчинили б при повторному форматуванні таблиці стилів. Крім того, ви вводите інформацію лише один раз, не перевіряючи наявність імені будь-якого елемента в різних документах.
  • Зовнішні DTD спрощують перевірку дійсності документів. Якщо ви застосовуєте XML-процесори, що перевіряють дійсність документів з метою пошуку помилок у XML-даних, і не хочете змішувати зміст документа з його структурою, зовнішні DTD полегшують пошук проявів подібної неузгодженості.

Схожі статті

  • Як оголосити об'єкт класу С
  • Недавні статті

  • Як бродить зернова брага
  • Що робити якщо не засмагаєш на сонці чому засмага погано лягає на шкіру або перестає прилипати
  • Як швидко зняти гель лак без апарату
  • Як робиться Каті голови
  • Яка гребінець краще для об'єму
  • Чим роблять м'яку покрівлю
  • Чи можна залишати крем для обличчя на ніч
  • Де знаходиться датчик селектора
  • географія нашої діяльності
    вулиця Драгоманова, 27
    вул. Курчатова 1Б
    вул. Міцкевича 130
    вул. Лабунського, 1
    вул. Макарова-Пржевальського
    вул. Толстого 10
    вул. Грушевського 28
    вул. Перший промінь (Черняхівського)
    напишіть нам

    сообщение успешно отправлено
    x