Базовые информационные технологии и процессы. И процессы
Скачать 2.47 Mb.
|
< head> / type= Section > " " Разметка в SGML Рис. 3.1 – Пример SGML-элемента. Важным достоинством SGML является то, что он не определяет заранее имена элементов и их атрибуты. Например, если автор документа считает, что семантически корректнее определить в тексте два типа списков: список фамилий и список компаний, то он может ввести два элемента: listofpeople и listofcom- panies. В дальнейшем эти элементы могут обрабатываться как различные семан- тические единицы. Чтобы документ являлся синтаксически корректным с точки зрения SGML, необходимо, чтобы его разметка подчинялась некоторому набору правил, опре- деляемых стандартом ISO. Одно из правил состоит в том, что допускается лишь полная вложенность одного элемента в другой. Таким образом, в каждом доку- менте всегда будет один корневой элемент и некоторое количество иерархически вложенных элементов. Допускается наложение на документ двух независимых разметок, элементы одной из которых могут не являться вложенными в другую, но это предмет отдельного обсуждения. Вложенность является одним из видов связей между вершинами графа компонентов. Размеченный документ предназначен для дальнейшей обработки различ- ными программами, каждая из которых может применять свои правила обра- ботки к тем или иным элементам документа. Одна программа может преобразо- вывать текст к виду, пригодному для печати на бумаге, а другая – лишь извлекать некоторые данные (например, названия терминов) и помещать их в таблицу или базу данных. Структурная разметка не предназначена для обеспечения удобочитаемости документов. Для этого существуют разметка представления и соответствующие программные средства, преобразующие структурную разметку в разметку пред- ставления. Эти и другие программы, обрабатывающие документ, должны уметь распознавать элементы структуры и атрибуты элементов и применять необходи- мые операции к определенным элементам. 69 В SGML это достигается с помощью определений типов документов (Do- cument Type Definition – DTD), посредством конструкций языка, называемых де- кларациями элементов. В то время как разметка документа занимается описа- нием семантических единиц, DTD определяет набор всех возможных разметок документов описываемого типа. Тип документа формально определяется его составными частями и их структурой. Например, письмо можно определить как документ, имеющий рек- визиты отправителя и получателя, заголовок, несколько абзацев и дату отправ- ления. Если документ не имеет реквизитов отправителя, то, в соответствии с нашим определением, письмом он не является. DTD определяет допустимые элементы для данного типа документа на лю- бом из уровней вложенности, допустимое содержание каждого из элементов и набор допустимых атрибутов. При этом наличие DTD является обязательным для любого документа. Можно сказать, что в рамках SGML имеют право на су- ществование информационные объекты, состоящие из размеченного документа и его DTD. Декларация элементов в DTD определяет допустимое содержание как тела элемента, так и его атрибутов. Предположим, например, что необходимо дать определение элемента
Пример 3 Первая декларация (вторая строка листинга, так как первая является ком- ментарием) обозначает, что список может включать необязательный заголовок, но обязательно содержит один или несколько элементов списка. Вторая декларация говорит, что заголовок содержит некоторое количество символов (текст). Третья декларация указывает на то, что каждый элемент списка в свою оче- редь состоит из одного или более абзацев. И, наконец, последняя декларация, как и вторая, говорит, что абзацы со- держат символьный текст. 70 Символ «0» в колонке MIN обозначает, что закрывающий маркер в данном элементе может быть опущен без нарушения структуры документа. Следующий открывающий маркер такого же элемента или маркер внешнего элемента факти- чески будет выполнять ту же функцию. Возможное использование списков приведено в примере 4. Пример 4
Перечень важных дел
Перечень важных дел Одним из достоинств SGML является то, что он позволяет работать не только со структурированными текстами, но и с произвольными информацион- ными объектами. Для этого вводится понятие объекта (entity). Объектом может быть строка символов или файл (текстовый или бинар- ный). Для включения его в документ используется конструкция, известная в ряде языков программирования как ссылка на объект. Например, объявление определяет объект, называющийся SGML, значением которого является строка "Standard Generalized Markup Language". Это пример декларации объекта (entity declaration), которая содержит внутренний объект (internal entity). Следующее объявление, напротив, вводит системный объект (system entity): 71 В этом случае определен объект, являющийся рисунком, а не структуриро- ванным текстом. При обработке документа некоторой программой файл picture.gif может быть, например, выведен на экран монитора для иллюстрации соответствующего текста. SGML представляет собой достаточно емкий и в то же время сложный ме- таязык. На его основе создаются языки разметки, используемые в различных об- ластях: подготовка книг, документация, построение систем визуализации дан- ных и т. д. Такие языки, как HTML, XML, MathML, GML, KML, и многие другие созданы на основе SGML и полностью ему соответствуют. Широта охвата порождает вместе с тем и ряд недостатков. Так, например, создание единого DTD для подготовки документации в рамках одной организа- ции, несомненно, имеет преимущества, такие как унификация исходного кода, возможность автоматического индексирования данных, ведение единого словаря терминов, написание стандартных средств обработки документов, получение стандартного бумажного представления и т. п. Но как только мы выходим за рам- ки организации, проекта или отрасли, то все упирается в утверждение данно- го DTD в качестве общего стандарта. Кроме того, как только принимается стан- дарт на некоторый DTD, сразу начинается борьба за его расширение, и так может продолжаться до бесконечности. Другой недостаток проявляется при создании программ (например, для ре- дактирования SGML-документов), которые должны позволять работать с любы- ми возможными DTD и учитывать все возможности, предоставляемые стандар- том SGML. К сожалению, это возможно лишь теоретически, так как объем таких программ будет чрезвычайно велик. Вот почему со временем возникла тенденция создания языков разметки с более простым синтаксисом, которые в то же время подчинялись бы требова- ниям стандарта SGML. 3.4 Язык разметки гипертекста HTML Язык разметки HTML (HyperText Markup Language – язык разметки гипер- текстов) родился в Лаборатории физики высоких энергий (CERN) в Женеве в 1990 г. Первоначально HTML был предназначен для разметки научных докумен- тов и их последующего совместного использования сотрудниками разных инсти- тутов и лабораторий. HTML состоял из небольшого фиксированного набора эле- ментов – заголовков нескольких уровней, абзацев, списков и др., но главной его особенностью было использование гиперссылок и специальных меток (anchors) 72 для указания точек перехода. Все вместе позволяло достаточно легко размечать простые документы и устанавливать связи как между ними, так и между компо- нентами одного документа. Человек всегда обрабатывает и анализирует инфор- мацию нелинейным образом. Поэтому возможности нелинейного хранения ин- формации, простота использования языка разметки и широкие возможности при- менения привели к тому, что популярность HTML стала быстро расти и вне ака- демических рамок. Как это часто бывает с гениальными открытиями, успех пре- взошел все ожидания создателей. В 1992 г. HTML был формализован в качестве SGML DTD, при этом в его спецификацию была заложена возможность дальнейшего расширения. Простой синтаксис языка, в отличие от SGML, позволял создавать простые программы для анализа размеченного текста и его отображения. Начался бурный рост пуб- ликаций в HTML-формате и рост числа приложений, поддерживающих этот фор- мат. Потребности пользователей, а также конкурентная борьба производителей программного обеспечения привели к тому, что в HTML стали добавляться не- специфицированные элементы разметки. Отсутствие строгих синтаксических правил и использование нестандартных элементов вынудили производителей программного обеспечения допускать использование синтаксически некоррект- ных конструкций. Отметим, что в WWW найдется не так много документов, пол- ностью удовлетворяющих общепринятым спецификациям. В целях регулирования процесса роста и стандартизации предлагаемых ре- шений для WWW в октябре 1994 г. была создана координирующая рабочая груп- па – World Wide Web Consortium (W3C), которая объединяет представителей бо- лее чем 370организаций. Основными задачами W3C являются накопление ин- формации о WWW, необходимой как разработчикам, так и пользователям, под- готовка и утверждение стандартов (технических спецификаций) на технологии, связанные с WWW, и создание прототипов и образцов приложений для демон- страции использования новых технологий. Положительная роль W3C в судьбе HTML очевидна – этот язык удалось сохранить от разделения на несколько диалектов, правда, ценой постоянного принятия все новых и новых расширенных спецификаций, которые сменяют друг друга с периодичностью раз в два года. Но нельзя же до бесконечности рас- ширять язык, изначально предназначенный совсем для других целей! Борьба за перетягивание одеяла на свою сторону двумя крупнейшими разработчиками веб- навигаторов в конце концов привела к тому, что стандарты начали плыть, а поль- зователям приходилось очень часто менять программное обеспечение. Сами же 73 пользователи все больше и больше становились зависимыми от разработчиков программных продуктов – у них не было возможности добавлять собственные расширения в языки разметки. За время своего существования HTML претерпел множество изменений, что весьма неприятно для создателей документов и разработчиков программ. Но гораздо большей неприятностью стало то, что HTML, изначально задуманный как язык структурной разметки, в результате своего развития превратился в язык разметки представления. Чего стоит, например, форматирование документа для улучшения его внешнего вида с помощью таблиц! Исходный текст таких доку- ментов становится практически нечитаемым, а доля полезной информации со- ставляет лишь несколько процентов. К счастью, ситуация постепенно начинает улучшаться. В версии языка HTML 4.0 содержится около 80 элементов. Темп роста их числа заметно умень- шился. Этому способствовало, прежде всего, введение атрибута CLASS во все элементы. Используя этот атрибут, можно определить новые семантические еди- ницы без изменения синтаксиса языка в целом (рис. 3.2). Кроме того, несомнен- ным шагом вперед по направлению к структуризации языка стало удаление ряда элементов, отвечающих только за внешнее представление, и декларирование строгой необходимости использования таблиц стилей (style sheets) для целей внешнего представления. Несмотря на массовое признание и использование HTML, а также на ряд разумных шагов, предпринятых W3C, в HTML все еще имеются существенные недостатки. Отсутствие жесткой иерархии элементов приводит к тому, что один и тот же документ может быть размечен и, соответственно, будет интерпретироваться программным обеспечением различными способами. Так, например, текст HTML-документа или любая его часть может предваряться заголовком любого уровня, что оставляет автору слишком большую свободу выбора, а читателю со- здает некоторые трудности при работе с документами разных авторов. 74 Дуров Илья durov@jet.msk.su "> Рис. 3.2 – Пример использования атрибута CLASS Далеко не всякая метаинформация может быть простым и корректным об- разом вставлена в документ, поэтому при преобразовании произвольного доку- мента в формат HTML часть информации может быть потеряна. Использование атрибута CLASS только частично решает эту проблему. Для некоторых областей деятельности HTML не предоставляет возможно- стей ни структурно размечать требуемые элементы, ни правильным образом вы- водить их на экран или принтер. Математикам необходима возможность работы с формулами, химикам нужно отображать структуру химических соединений, и вместе с тем всем разработчикам и пользователям WWW необходимо наличие единых принципов разметки документов, универсальность их обработки и отоб- ражения. 3.5 Расширяемый язык разметки XML Из предыдущих параграфов понятно, что, с одной стороны, максималист- ский подход при создании SGML привел к чрезмерной сложности языка и соот- ветствующих программных продуктов, а это неприемлемо для массового потреб- ления, с другой стороны, простота и ограниченность HTML создавали трудности при описании сложных информационных объектов, поиске необходимой инфор- мации, создании приложений, обменивающихся данными через Интернет. По- этому в 1996 г. была сформирована рабочая группа W3C, основной задачей ко- торой являлось создание нового языка разметки. Этот язык должен был включать в себя гораздо больше возможностей SGML, чем HTML, но в то же время оста- ваться подходящим для использования в WWW. Чуть позже этот язык стал изве- стен как XML (eXtensible Markup Language – расширяемый язык разметки). Раз- работка нового языка разметки велась около двух лет, и в начале февраля 1998 г. 75 W3C утвердила в качестве рекомендации первую спецификацию XML – XML версии 1.0. За сравнительно недолгий срок с момента своего появления на свет XML сумел завоевать огромную популярность среди разработчиков интернет-техно- логий. Число созданных и разрабатываемых программных продуктов на основе XML, число компаний, включающих поддержку XML в свои уже готовые про- дукты, количество публикаций в компьютерной прессе уже весьма велико и про- должает расти. Что это – дань моде или естественное желание сохранить конку- рентоспособность, используя современные и прогрессивные технологии? Как и SGML, XML является метаязыком для формального описания при- кладных языков разметки, предназначенных для кодирования структурирован- ных документов. Спецификация XML определяет, как стандартным способом разметить документ, выделяя все семантически значимые компоненты. При разработке нового языка разметки учитывались достоинства и недо- статки уже существующих языков, а также то, что основным местом применения XML является Интернет. Основные требования к создаваемому языку были сформулированы следующим образом: 1. XML должен быть годен к непосредственному применению в Интер- нете. 2. XML должен быть совместим с SGML (XML-документ должен одно- временно являться и SGML-документом без внесения каких-либо изме- нений или дополнений). 3. Число необязательных свойств в XML должно быть минимальным, в идеале нулевым (любая XML-программа должна уметь читать любой XML-документ). 4. XML-документы должны быть легко читаемы с помощью простейших текстовых процессоров. 5. XML-разметка должна быть простой для понимания. Формальное описание нового языка разметки состоит из нескольких взаи- мосвязанных частей: 1) спецификации eXtensible Markup Language (XML) 1.0, которая опреде- ляет синтаксис языка; 2) спецификаций XML Pointer Language (XPointer) и XML Linking Lan- guage (XLink), которые определяют стандартные механизмы установ- ления связей между компонентами XML-документов; 76 3) спецификации eXtensible Style Language (XSL), которая определяет ме- ханизмы для внешнего представления XML-документов. По своей структуре XML-документ очень похож на SGML- или HTML-до- кумент. В примере 5 приведено уже знакомое нам начало п. 3.2. Существует несколько основных правил составления XML-документа. Пример 5 |