/  
 ДОКУМЕНТІВ 
20298
    КАТЕГОРІЙ 
30
Про проект  Рекламодавцям  Зворотній зв`язок  Контакт 

SGML. SGML - структури. DTD, Детальна інформація

Тема: SGML. SGML - структури. DTD
Тип документу: Реферат
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 0
Скачувань: 1225
Скачати "Реферат на тему SGML. SGML - структури. DTD"
Сторінки 1   2   3   4   5   6  
Визначення типу і структури документа: DTD

Формальний запис правил, таких, що були неформально описані вище, є першою стадією визначення структури SGML документа, а саме стадією розробки специфікації типу документа (Document Type Definition, DTD). Розробляючи DTD, дизайнер може задати тільки загальну ідею документа, не описуючі конкретностей і обмежень, або навпаки, явно задати їхній усі - у залежності від призначення типу документа; як уже відзначалося, така воля була однієї з головних цілей розробки SGML. Баланс між двома цими формами досягається при компромісі між легкістю проходження простим правилам і складністю обробки реальних текстів. Один зі складних випадків - обробка вже існуючих текстів. Розроблювач найчастіше має тільки загальне поняття про призначення оригінальних текстів і тільки базові ідеї про їхню структуру. У таких випадках найчастіше задаються самі загальні текстові елементи і найбільш вільні правила з взаємної композиції. З іншого боку, при розробки нових текстів, призначення яких точно відомо, розумно задати безліч обмежень, домагаючись тим гарантованої правильності і без проблемною подальшої обробки. Прикладом, де важливий саме такий підхід, може бути підготовка інформації для різних баз даних і знань. Навіть у випадку існуючого тексту може бути корисно задати обмежуючі правила які описують деяку гіпотезу про структуру документа - це принаймні допоможе перевірити адекватність цієї гіпотези. Важливо розуміти, що будь-яка специфікація типу документа - це інтерпретація тексту тільки з якоїсь однієї сторони. Не може бути єдиної DTD, придатної на усі випадки життя, що є "абсолютною істиною", крім, можливо, DTD, тавтологічно визначальної, що "текст є текст". Однак звичайно від такий DTD мало реальної користі. Таким чином, для різних цілей можуть знадобитися різні DTD, хоча, безумовно, невелика їхня кількість буде покривати найбільш важливі і часто використовувані області.

В даний час SGML найбільше широко застосовується в областях, де схожість структури документів - найбільш важливий критерій. Наприклад, при розробці технічної документації, має велику важливість, щоб розділи і підрозділи були правильно вкладені, перехресні посилання були коректно дозволені і т.д. У таких ситуаціях документ розглядається як напівфабрикат, що перевіряється на відповідність визначеному набору правил. Однак як відзначалося раніше, навіть для більш вільних текстів має сенс явно задати різні правила, що стосуються змісти. Цим самим оброблювач позбавить себе від тривіальних помилок, що можуть проявитися тільки при наступній обробці і полегшить собі сам процес розмітки.

Проста DTD

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











Ці п'ять рядків приклад формальної декларації SGML-елементів. Декларація, також як і елемент, полягає в кутові дужки; перший символ після відкриваючої дужки повинний бути знак оклику, за яким одне з невеликого набору ключових слів SGML, що визначає, який об'єкт декларується. Усі п'ять декларацій вище того самого типу: вони починаються з ключового слова ELEMENT, що показує, що визначається елемент. Кожна декларація складається з трьох частин: ім'я тега (GI) чи група імен, два символи, які описують правила мінімізації, і модель змісту. Кожна їхньої цієї частин більш докладно описується далі. Компоненти декларації розділяються символом space, яким є послідовність пробілів, табуляцій і кінців рядків.

Generic Identifier

Перша частина декларації задає GI елемента, наприклад title, poem і т.д. Можливо одночасно визначити кілька елементів; ця можливість описується нижче.

Правила мінімізації

Друга частина декларації визначає те, що називається правилами мінімізації елемента. Правила мінімізації визначають, чи є необхідним явна вказівка старт- і енд-тегів при позначці елемента і записуються за допомогою пари символів, що відносяться до старт- і енд-тегу відповідно і розділених space символом. У будь-якому випадку, повинний бути заданий символ `-' (мінус), якщо тег обов'язковий, і `O' (omissible), якщо тег може бути опущений.

Таким чином, кожен елемент, крім повинний мати старт-тег. Тільки елемент повинний мати енд-тег.

Модель змісту

Третя частина декларації, укладена в дужки, називається моделлю вмісту (content model) елемента, оскільки вона описує елементи, що можуть міститися в даному. Вміст описується в термінах інших елементах і спеціальних зарезервованих словах. Існує кілька таких слів, з яких найбільше часто зустрічається #PCDATA, що є присутнім і в прикладі. Це абревіатура для послідовності символів, і вона означає, що елемент, описаний з її допомогою, може містити будь-як припустимі символи, тобто власне вміст тексту. Якщо розглядати специфікацію структури як дерево відносини елемент-вміст (мал. 2), що має одну кореневу вершину (у нашому випадку, ) і проміжні вершини (, , ...), то листами цього дерева майже у всіх випадках будуть #PCDATA.

Рис. 2 Дерево відносини елемент-вміст

У нашому випадку в такий спосіб задані і <line>. Оскільки їхня модель умісту містить тільки #PCDATA, те вони не можуть містити інших вкладених елементів.<br><br>Регулярні оператори декларації<br><br>При завданні моделі вмісту, а в деяких випадках і при вказівці імен тегов, що декларуються, використовуються оператори, подібні з операторами, використовуваними для завдання регулярних виражень. Далі описуються їхні функціональні групи.<br><br>1. Оператори повторень<br><br>Декларація елемента <stanza> у прикладі вище вказує, що строфа складається з однієї чи більш рядка. Оператор повторення `+' (плюс) указує цей факт. Синтаксис SGML містить три операторів повторення:<br><br>Таблиця 7 Оператори повторення SGML<br><br>Символ оператора повторень Зміст оператора<br><br>? Попередній елемент опціонален, тобто може повторюватися 0 чи 1 раз<br><br>* Попередній елемент може повторюватися 0 і більш раз<br><br>+ Попередній елемент може повторюватися 1 і більш раз<br><br> </TD> </TR> </TABLE> <TABLE width=100% border="0" cellspacing="0" cellpadding="5"> <TR> <TD><font class=title>Сторінки</font></TD> <TD width=100%> <a href="/ukr/details/15683/1/" class=title>1</a>   <a href="/ukr/details/15683/2/" class=title>2</a>   <a href="/ukr/details/15683/3/" class=title>3</a>   <a href="/ukr/details/15683/4/" class=title>4</a>   <font class=titlewhite>5</font>   <a href="/ukr/details/15683/6/" class=title>6</a>   </TD> </TR> </TABLE> <TABLE cellpadding=0 cellspacing=0 align=center width=213 height=40> <TR> <TD class=bg08 align=center style="padding-top:16px"><b>Коментарі до даного документу</TD> </TR> </TABLE> <TABLE cellpadding=0 cellspacing=0 align=center width=213 height=40> <TR> <TD class=bg08 align=center style="padding-top:16px"><a href="javascript:showObject('head');" STYLE="cursor:hand">Додати коментар</a></TD> </TR> </TABLE> <div id='head' style="DISPLAY: none; head:"> <table align=center bgcolor=#ffffff cellpadding=1 cellspacing=2 bordercolor=ffffff bordercolorlight=ffffff bordercolordark=ffffff> <FORM name=form2 action="/ukr/refcommentadd/15683/" method="POST"> <TR><TD colspan=2><font class=data>Коментар:<br><textarea cols=70 class=navigform TYPE="TEXT" name="message" rows="6" maxLength=800></textarea></TD></tr> <TR><TD align=right style="padding-top:3px"><font class=data>Ім`я:</td><td><input size=50 class=navigform TYPE="TEXT" name="cname" value=""></TD></TR> <TR><TD align=right style="padding-top:3px"><font class=data>e-mail:</td><td><input size=50 class=navigform TYPE="TEXT" name="cemail" value=""></TD></TR> <TR><TD align=right style="padding-top:3px"><font class=data>Другий місяць року?</td><td><input size=50 class=navigform TYPE="TEXT" name="control" value=""></TD></TR> <tr><td colspan=2 align="center"><input class=sbttn type="button" value="Додати" onclick=check_form2();></FORM> <SCRIPT> function EmailValidation(cemail) { var re=new RegExp("^([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~]+\\.)+[a-zA-Z]{2,6}\$"); if(!re.test(cemail)) return false; } function check_form2(){ var d=document.form2; var flag=true; if(d.cname.value.length < 4){alert('Ім`я');d.cname.focus();flag=false;return false;} if(d.cemail.value.length < 4){alert('e-mail?');d.cemail.focus();flag=false;return false;} if(d.message.value.length < 10){alert('Коментар');d.message.focus();flag=false;return false;} if(d.control.value.length < 5){alert('Другий місяць року?');d.control.focus();flag=false;return false;} if (EmailValidation(d.cemail.value)==false) {d.cemail.focus();alert('e-mail?');return false;} if(flag){d.submit();} } function bg(arg){ event.srcElement.className=arg; } </SCRIPT> </TD></TR></TABLE> </div> </TD></TD> </TR> </TABLE> <table border="0" cellPadding="0" cellSpacing="1" width=737 align=center> <tr><td> </td></tr> <tr><td align=center> <!-- Ukrainian Banner Network 468x60 START --> <center> <!-- <script> //<!-- user = "8694"; page = "1"; pid = Math.round((Math.random() * (10000000 - 1))); document.write("<iframe src='http://banner.kiev.ua/cgi-bin/bi.cgi?h" + user + "&"+ pid + "&" + page + "' frameborder=0 vspace=0 hspace=0 " + " width=468 height=60 marginwidth=0 marginheight=0 scrolling=no>"); document.write("<a href='http://banner.kiev.ua/cgi-bin/bg.cgi?" + user + "&"+ pid + "&" + page + "' target=_top>"); document.write("<img border=0 src='http://banner.kiev.ua/" + "cgi-bin/bi.cgi?i" + user + "&" + pid + "&" + page + "' width=468 height=60 alt='Украинская Баннерная Сеть'></a>"); document.write("</iframe>"); </script> --> <!-- Ukrainian Banner Network 468x60 END --> </td> </TR> <tr><td align=center> <!-- MarketNews Start --> <!-- <div id="MarketGid3981"><center> <a href="http://marketgid.com" target="_blank">Загрузка...</a> --> <!-- </center></div> --> <!-- MarketNews End --> <!-- pered </body> --> <!-- <script type="text/javascript" src="http://mg.dt00.net/js/r/e/referaty.com.ua.i1.js" encoding="windows-1251"></script> --> </td> </TR> </TABLE> </td> </TR> </TABLE> <!-- // content part -->