Визначення Типу Документа (англ. Document Type Definition, DTD) включає два поняття:
- Термін, що застосовується для опису схеми документу чи його частини мовою схем DTD.
- Мова схем DTD (DTD schema language) — штучна мова, яку використовують для запису фактичних синтаксичних правил метамови розмітки тексту SGML та XML. З моменту її впровадження інші мови схем для специфікацій, такі як XML Schema та RELAX NG, випускаються з додатковою функціональністю.
Document Type Definition | |
---|---|
Дата появи | 1996 (1998) рік |
Творці | World Wide Web (W3C) |
Розробник | Tim Berners-Lee |
Основні реалізації | Допомога у відображені вебсторінок і вебдодатків |
Операційна система | Windows, IOS, Android |
Задає можливу структуру для XML-документів:
- як можуть називатися елементи
- як вони можуть один в одного входити
- які у кожного елемента можуть бути атрибути
Через певні відмінності між XML та SGML, застосування DTD також має певні особливості в залежності від мови цільового документа.
Зараз йде відмова від використання DTD в XML-технології по ряду причин:
- Відсутня підтримка просторів імен.
- Використовується відмінний від XML синтаксис
- Відсутня типізація вузлів.
DTD визначає дійсні будівельні блоки XML-документа. Вона визначає структуру документа зі списком перевірених елементів та атрибутів. DTD може бути оголошено у XML-документі або як зовнішнє посилання.
На зміну DTD прийшов стандарт консорціуму W3C XML Schema.
Підключення DTD в XML-документ
Перший спосіб(в самому XML-документі)
<?xml version="1.0"?> <!DOCTYPE configuration [ <!ELEMENT configuration …> … ]> < configuration > … </ configuration>
Другий спосіб(окремий файл)
<!DOCTYPE configuration SYSTEM "config.dtd">
Третій спосіб(вказання простору імен)
<!DOCTYPE configuration SYSTEM "http://myserver.com/config.dtd">
Опис схеми документа
DTD описує схему документа для певної мови розмітки через набір оголошень (об'єктів-параметрів, елементів та атрибутів), що описують його клас (чи тип) з точки зору синтаксичних обмежень цього документу. Також DTD може оголошувати конструкції, які не завжди необхідні для визначення структури документа, але натомість можуть впливати на інтерпретацію певних документів.
Оголошення об'єктів-параметрів
Оголошення об'єкта-параметра визначає макрос певного типу, на який можна посилатися і який може бути розгорнутий де-небудь в DTD. Ці макроси можуть не з'являтися в самому документі, а бути лише в DTD. Якщо на об'єкт-параметр посилаються за ім'ям з DTD, то він розгортається в стрічку, в якій вказано вміст цього об'єкта.
Приклади:
<!ENTITY % fontstyle "TT | I | B | BIG | SMALL">
Об'єкт-параметр fontstyle
містить в собі групу тегів TT | I | B | BIG | SMALL
.
<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">
Об'єкт-параметр inline
містить в собі текстові дані та ще три об'єкта-параметра phrase
, special
та formctrl
.
Оголошення елементів
<!ELEMENT імя_елемента вміст >
Оголошення елементів утворюють перелік дозволених назв елементів в документі, а також зазначає інформацію щодо тегів (чи є вони обов'язковими) та моделі вмісту для кожного елемента.
Різні ключові слова та символи визначають вміст елемента:
Правило | Опис |
E* | будь-яку кількість елементів (0 і більше елементів E) |
E+ | принаймні один елемент (1 і більше елементів E) |
E? | необов'язкова наявність елемента (0 або 1) |
E1|E2|…|En | Один з елементів Е1, Е2, …, Еn |
E1, E2, …, En | Елемент E1, за яким слідують E2, …, En |
#PCDATA | Текст |
(#PCDATA|E1|…|En)* | 0 або більше текстових елементів і елементи Е1, Е2, …, EN, розташовані в довільному порядку (змішане утримання) |
ANY | Будь-який дочірній вузол(будь-який вміст) |
EMPTY | Немає дочірних вузлів(пустий вміст) |
- Якщо немає
*
,+
або?
— елемент повинен бути тільки один
Приклади:
<!ELEMENT title (#PCDATA)>
<!ELEMENT DL - - (DT|DD)+>
Елемент DL
має містити один або більше елементів DT
чи DD
в будь-якому порядку.
<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM)>
Елемент FORM
має містити в собі один або більше елементів з об'єкта-параметра block
чи елементи SCRIPT
в будь-якому порядку, проте виключена можливість містити ще один елемент FORM
.
Оголошення атрибутів
<!ATTLIST елемент атрибут тип атрибуту властивості >
З кожним елементом DTD-документа можна зіставити список атрибутів. Для цього використовується директива !ATTLIST
, в якій зазначаються ім'я елемента, з яким може бути зіставлений список атрибутів і параметри кожного атрибута: його ім'я, тип і властивості за умовчуванням.
Оголошення атрибутів являє собою дозволений набір атрибутів для кожного визначеного елемента, а також зазначає інформацію щодо типу значень атрибутів (чи одразу вказаний список можливих значень) та інформацію щодо потреби встановлювати значення атрибутів за умовчанням.
Наприклад:
<!ATTLIST MAP name CDATA #IMPLIED > <!ATTLIST person number CDATA #REQUIRED>
В цьому прикладі визначений атрибут name
для елемента MAP
. Він не є необхідним.
Існують такі типи атрибутів:
CDATA
(Character set of data) — значенням атрибута можуть бути будь-які символьні даніID
— значенням атрибута повинен бути унікальний ідентифікатор елементаIDREF
— значенням елемента є посилання на елемент по його IDIDREFS
— теж що і IDREF, але з можливістю посилань не по одному ідентифікатору, а за кількомаNMTOKEN
— значенням атрибута може бути послідовність символів, в чомусь схожа з ім'ям (звідси і назвою — name token). Це рядок, яка містить будь-яку комбінацію тих символів, які дозволено використовувати для імен XML.NMTOKENS
— значенням атрибута є список значеньENTITY
— значення використовується для посилання на зовнішню сутність.ENTITIES
— дозволяє задати список зовнішніх сутностей, розділених пробілами.NOTATION
— значенням атрибута може бути одна з раніше визначених нотаційNOTATIONS
— дозволяє задати список нотацій.Listings
іNOTATION-listings
ENUMERATION
— задає список можливих альтернатив значень.
Існують такі властивості за умовчуванням:
IMPLIED
— значення атрибута вказувати не обов'язково;REQUIRED
— значення атрибута обов'язково повинно бути зазначено;FIXED
— значення цього атрибута задано як константа в DTD і в документі не може бути змінено;- деяке конкретне значення, яке використовується за умовчанням.
Визначення сутності
Визначення типів документа (DTD) також можна використовувати для декларації спеціальних символів і символьних рядків, які використовуються в XML документі.Сутність складається з трьох частин: амперсанда (), імені сутності і крапки з комою (;).
<! ENTITY імя_сутності "сутність">
Приклад:
<!ENTITY myname "Дмитро Денисов">
Програма-аналізатор, переглядаючи в першу чергу вміст області DTD- визначень, опрацює цю інструкцію і при подальшому розборі документа буде використовувати вміст DTD- компонента в тому місці, де буде зустрічатися його назва. Тобто тепер в документі ми можемо використовувати вираз &myname;
, Яке буде замінено на рядок «Дмитро Денисов».
Приклад:
<!ENTITY writer "Donald Duck."> <!ENTITY copyright "Copyright W3Schools.">
В XML-документі:
<author>&writer;©right;</author>
у браузері відображатись XML-документ буде так:
Donald Duck.Copyright W3Schools.
Зв'язок документа з певним DTD
Щоб пов'язати документ з певним DTD, треба на початку тексту документа зазначити елемент DTD.
В залежності від місцезнаходження DTD, DTD можуть бути двох видів:
- Внутрішня підмножина DTD
Набір оголошень DTD міститься в самому тексті документа. Наприклад:
<!DOCTYPE foo [ <!ENTITY greeting "helloworld"> ]> <!DOCTYPE bar [ <!ENTITY greeting "helloworld"> ]>
- Зовнішня підмножина DTD
Набір оголошень DTD міститься в окремому текстовому файлі з розширенням .dtd В такому разі посилання на файл можна робити через публічний ідентифікатор та (або) через системний ідентифікатор. Наприклад:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Приклад
Приклад дуже простого XML DTD, що описує список людей:
<! ELEMENT people_list (person *)> <! ELEMENT person (name, birthdate ?, gender, social security number?)> <! ELEMENT name (#PCDATA)> <! ELEMENT birthdate (#PCDATA)> <! ELEMENT Gender (#PCDATA)> <! ELEMENT socialsecuritynumber (#PCDATA)>
Починаючи з першого рядка:
- Елемент
<people_list>
містить будь-яке число елементів<person>
. Знак<*>
означає що можливо 0, 1 або більше елементів<person>
всередині елемента<people_list>
. - Елемент
<person>
містить елементи<name>
,<birthdate >
,<gender >
і< socialsecuritynumber>
. Знак<?>
Означає що елемент необов'язковий. Елемент<name>
не містить<?>
, Що означає що елемент<person>
обов'язково повинен містити елемент<name>
. - Елемент
<name>
містить дані. - Елемент
<birthdate>
містить дані. - Елемент
<gender>
містить дані. - Елемент
<socialsecuritynumber>
містить дані.
Приклади XML-документа, що використовує цей DTD:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE people_list SYSTEM "example.dtd"> <people_list> <person> <name> Fred Bloggs </name> <birthdate> 27/11/2008 </birthdate> <gender> Male </gender> <socialsecuritynumber> 1234567890 </socialsecuritynumber> </person> </people_list>
<?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend</body> </note>
Див. також
- DITA
- XML schema
- XML Schema (W3C)
- RELAX NG
- Формальна граматика
- (Варианты DOCTYPE для HTML 4.01)
Посилання
- Визначення декларації типу XML документа в специфікації Extensible Markup Language (XML) 1.0 (четверта редакція) на W3.org [ 10 січня 2020 у Wayback Machine.](англ.)
- Довідник XML DTD [ 20 січня 2008 у Wayback Machine.](англ.)
- (рос.)
Це незавершена стаття про мови програмування. Ви можете проєкту, виправивши або дописавши її. |
Ця стаття потребує додаткових для поліпшення її . (лютий 2016) |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Viznachennya Tipu Dokumenta angl Document Type Definition DTD vklyuchaye dva ponyattya Termin sho zastosovuyetsya dlya opisu shemi dokumentu chi jogo chastini movoyu shem DTD Mova shem DTD DTD schema language shtuchna mova yaku vikoristovuyut dlya zapisu faktichnih sintaksichnih pravil metamovi rozmitki tekstu SGML ta XML Z momentu yiyi vprovadzhennya inshi movi shem dlya specifikacij taki yak XML Schema ta RELAX NG vipuskayutsya z dodatkovoyu funkcionalnistyu Document Type DefinitionData poyavi1996 1998 rikTvorciWorld Wide Web W3C RozrobnikTim Berners LeeOsnovni realizaciyiDopomoga u vidobrazheni vebstorinok i vebdodatkivOperacijna sistemaWindows IOS Android Zadaye mozhlivu strukturu dlya XML dokumentiv yak mozhut nazivatisya elementi yak voni mozhut odin v odnogo vhoditi yaki u kozhnogo elementa mozhut buti atributi Cherez pevni vidminnosti mizh XML ta SGML zastosuvannya DTD takozh maye pevni osoblivosti v zalezhnosti vid movi cilovogo dokumenta Zaraz jde vidmova vid vikoristannya DTD v XML tehnologiyi po ryadu prichin Vidsutnya pidtrimka prostoriv imen Vikoristovuyetsya vidminnij vid XML sintaksis Vidsutnya tipizaciya vuzliv DTD viznachaye dijsni budivelni bloki XML dokumenta Vona viznachaye strukturu dokumenta zi spiskom perevirenih elementiv ta atributiv DTD mozhe buti ogolosheno u XML dokumenti abo yak zovnishnye posilannya Na zminu DTD prijshov standart konsorciumu W3C XML Schema Pidklyuchennya DTD v XML dokumentPershij sposib v samomu XML dokumenti lt xml version 1 0 gt lt DOCTYPE configuration lt ELEMENT configuration gt gt lt configuration gt lt configuration gt Drugij sposib okremij fajl lt DOCTYPE configuration SYSTEM config dtd gt Tretij sposib vkazannya prostoru imen lt DOCTYPE configuration SYSTEM http myserver com config dtd gt Opis shemi dokumentaDTD opisuye shemu dokumenta dlya pevnoyi movi rozmitki cherez nabir ogoloshen ob yektiv parametriv elementiv ta atributiv sho opisuyut jogo klas chi tip z tochki zoru sintaksichnih obmezhen cogo dokumentu Takozh DTD mozhe ogoloshuvati konstrukciyi yaki ne zavzhdi neobhidni dlya viznachennya strukturi dokumenta ale natomist mozhut vplivati na interpretaciyu pevnih dokumentiv Ogoloshennya ob yektiv parametriv Ogoloshennya ob yekta parametra viznachaye makros pevnogo tipu na yakij mozhna posilatisya i yakij mozhe buti rozgornutij de nebud v DTD Ci makrosi mozhut ne z yavlyatisya v samomu dokumenti a buti lishe v DTD Yaksho na ob yekt parametr posilayutsya za im yam z DTD to vin rozgortayetsya v strichku v yakij vkazano vmist cogo ob yekta Prikladi lt ENTITY fontstyle TT I B BIG SMALL gt Ob yekt parametr fontstyle mistit v sobi grupu tegiv TT I B BIG SMALL lt ENTITY inline PCDATA fontstyle phrase special formctrl gt Ob yekt parametr inline mistit v sobi tekstovi dani ta she tri ob yekta parametra phrase special ta formctrl Ogoloshennya elementiv lt ELEMENT imya elementa vmist gt Ogoloshennya elementiv utvoryuyut perelik dozvolenih nazv elementiv v dokumenti a takozh zaznachaye informaciyu shodo tegiv chi ye voni obov yazkovimi ta modeli vmistu dlya kozhnogo elementa Rizni klyuchovi slova ta simvoli viznachayut vmist elementa Pravilo Opis E bud yaku kilkist elementiv 0 i bilshe elementiv E E prinajmni odin element 1 i bilshe elementiv E E neobov yazkova nayavnist elementa 0 abo 1 E1 E2 En Odin z elementiv E1 E2 En E1 E2 En Element E1 za yakim sliduyut E2 En PCDATA Tekst PCDATA E1 En 0 abo bilshe tekstovih elementiv i elementi E1 E2 EN roztashovani v dovilnomu poryadku zmishane utrimannya ANY Bud yakij dochirnij vuzol bud yakij vmist EMPTY Nemaye dochirnih vuzliv pustij vmist Yaksho nemaye abo element povinen buti tilki odin Prikladi lt ELEMENT title PCDATA gt lt ELEMENT DL DT DD gt Element DL maye mistiti odin abo bilshe elementiv DT chi DD v bud yakomu poryadku lt ELEMENT FORM block SCRIPT FORM gt Element FORM maye mistiti v sobi odin abo bilshe elementiv z ob yekta parametra block chi elementi SCRIPT v bud yakomu poryadku prote viklyuchena mozhlivist mistiti she odin element FORM Ogoloshennya atributiv lt ATTLIST b element b atribut b tip atributu b vlastivosti gt Z kozhnim elementom DTD dokumenta mozhna zistaviti spisok atributiv Dlya cogo vikoristovuyetsya direktiva ATTLIST v yakij zaznachayutsya im ya elementa z yakim mozhe buti zistavlenij spisok atributiv i parametri kozhnogo atributa jogo im ya tip i vlastivosti za umovchuvannyam Ogoloshennya atributiv yavlyaye soboyu dozvolenij nabir atributiv dlya kozhnogo viznachenogo elementa a takozh zaznachaye informaciyu shodo tipu znachen atributiv chi odrazu vkazanij spisok mozhlivih znachen ta informaciyu shodo potrebi vstanovlyuvati znachennya atributiv za umovchannyam Napriklad lt ATTLIST MAP name CDATA IMPLIED gt lt ATTLIST person number CDATA REQUIRED gt V comu prikladi viznachenij atribut name dlya elementa MAP Vin ne ye neobhidnim Isnuyut taki tipi atributiv CDATA Character set of data znachennyam atributa mozhut buti bud yaki simvolni dani ID znachennyam atributa povinen buti unikalnij identifikator elementa IDREF znachennyam elementa ye posilannya na element po jogo ID IDREFS tezh sho i IDREF ale z mozhlivistyu posilan ne po odnomu identifikatoru a za kilkoma NMTOKEN znachennyam atributa mozhe buti poslidovnist simvoliv v chomus shozha z im yam zvidsi i nazvoyu name token Ce ryadok yaka mistit bud yaku kombinaciyu tih simvoliv yaki dozvoleno vikoristovuvati dlya imen XML NMTOKENS znachennyam atributa ye spisok znachen ENTITY znachennya vikoristovuyetsya dlya posilannya na zovnishnyu sutnist ENTITIES dozvolyaye zadati spisok zovnishnih sutnostej rozdilenih probilami NOTATION znachennyam atributa mozhe buti odna z ranishe viznachenih notacij NOTATIONS dozvolyaye zadati spisok notacij Listings i NOTATION listings ENUMERATION zadaye spisok mozhlivih alternativ znachen Isnuyut taki vlastivosti za umovchuvannyam IMPLIED znachennya atributa vkazuvati ne obov yazkovo REQUIRED znachennya atributa obov yazkovo povinno buti zaznacheno FIXED znachennya cogo atributa zadano yak konstanta v DTD i v dokumenti ne mozhe buti zmineno deyake konkretne znachennya yake vikoristovuyetsya za umovchannyam Viznachennya sutnostiViznachennya tipiv dokumenta DTD takozh mozhna vikoristovuvati dlya deklaraciyi specialnih simvoliv i simvolnih ryadkiv yaki vikoristovuyutsya v XML dokumenti Sutnist skladayetsya z troh chastin ampersanda imeni sutnosti i krapki z komoyu lt ENTITY b imya sutnosti b sutnist gt Priklad lt ENTITY myname Dmitro Denisov gt Programa analizator pereglyadayuchi v pershu chergu vmist oblasti DTD viznachen opracyuye cyu instrukciyu i pri podalshomu rozbori dokumenta bude vikoristovuvati vmist DTD komponenta v tomu misci de bude zustrichatisya jogo nazva Tobto teper v dokumenti mi mozhemo vikoristovuvati viraz amp myname Yake bude zamineno na ryadok Dmitro Denisov Priklad lt ENTITY writer Donald Duck gt lt ENTITY copyright Copyright W3Schools gt V XML dokumenti lt author gt amp writer amp copyright lt author gt u brauzeri vidobrazhatis XML dokument bude tak Donald Duck Copyright W3Schools Zv yazok dokumenta z pevnim DTDShob pov yazati dokument z pevnim DTD treba na pochatku tekstu dokumenta zaznachiti element DTD V zalezhnosti vid misceznahodzhennya DTD DTD mozhut buti dvoh vidiv Vnutrishnya pidmnozhina DTD Nabir ogoloshen DTD mistitsya v samomu teksti dokumenta Napriklad lt DOCTYPE foo lt ENTITY greeting helloworld gt gt lt DOCTYPE bar lt ENTITY greeting helloworld gt gt Zovnishnya pidmnozhina DTD Nabir ogoloshen DTD mistitsya v okremomu tekstovomu fajli z rozshirennyam dtd V takomu razi posilannya na fajl mozhna robiti cherez publichnij identifikator ta abo cherez sistemnij identifikator Napriklad lt DOCTYPE html PUBLIC W3C DTD XHTML 1 0 Transitional EN http www w3 org TR xhtml1 DTD xhtml1 transitional dtd gt PrikladPriklad duzhe prostogo XML DTD sho opisuye spisok lyudej lt ELEMENT people list person gt lt ELEMENT person name birthdate gender social security number gt lt ELEMENT name PCDATA gt lt ELEMENT birthdate PCDATA gt lt ELEMENT Gender PCDATA gt lt ELEMENT socialsecuritynumber PCDATA gt Pochinayuchi z pershogo ryadka Element lt people list gt mistit bud yake chislo elementiv lt person gt Znak lt gt oznachaye sho mozhlivo 0 1 abo bilshe elementiv lt person gt vseredini elementa lt people list gt Element lt person gt mistit elementi lt name gt lt birthdate gt lt gender gt i lt socialsecuritynumber gt Znak lt gt Oznachaye sho element neobov yazkovij Element lt name gt ne mistit lt gt Sho oznachaye sho element lt person gt obov yazkovo povinen mistiti element lt name gt Element lt name gt mistit dani Element lt birthdate gt mistit dani Element lt gender gt mistit dani Element lt socialsecuritynumber gt mistit dani Prikladi XML dokumenta sho vikoristovuye cej DTD lt xml version 1 0 encoding UTF 8 gt lt DOCTYPE people list SYSTEM example dtd gt lt people list gt lt person gt lt name gt Fred Bloggs lt name gt lt birthdate gt 27 11 2008 lt birthdate gt lt gender gt Male lt gender gt lt socialsecuritynumber gt 1234567890 lt socialsecuritynumber gt lt person gt lt people list gt lt xml version 1 0 gt lt DOCTYPE note lt ELEMENT note to from heading body gt lt ELEMENT to PCDATA gt lt ELEMENT from PCDATA gt lt ELEMENT heading PCDATA gt lt ELEMENT body PCDATA gt gt lt note gt lt to gt Tove lt to gt lt from gt Jani lt from gt lt heading gt Reminder lt heading gt lt body gt Don t forget me this weekend lt body gt lt note gt Div takozhDITA XML schema XML Schema W3C RELAX NG Formalna gramatika Varianty DOCTYPE dlya HTML 4 01PosilannyaViznachennya deklaraciyi tipu XML dokumenta v specifikaciyi Extensible Markup Language XML 1 0 chetverta redakciya na W3 org 10 sichnya 2020 u Wayback Machine angl Dovidnik XML DTD 20 sichnya 2008 u Wayback Machine angl ros Ce nezavershena stattya pro movi programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno lyutij 2016