Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Определение структуры документов SGML - DTD



Рассмотренные правила—первый шаг в создании формальной спецификации структуры SGML-документа или определения типа документа, обычно сокра­щаемого, как DTD ( Document Type Definition ). При создании DTD дизайнер произвольно задает жесткую или сколь угодно гибкую структуру. Нужно найти компромисс между удобством следования простым правилам и сложностью под­держки реальных текстов. Это особенно важно, когда определяемые правила от­носятся к уже существующим текстам: дизайнер может иметь очень туманное представление об изначальном предназначении или смысле старых текстов, поэто­му задание непротиворечивых правил, касающихся их структуры, будет крайне сложным. С другой стороны, при спецификации нового текста, например, для ввода в некоторую базу данных, чем точнее установлены правила, тем лучше они могут быть выдержаны. Даже в случае разметки уже существующего текста име­ет смысл ограничивающий набор правил, относящихся к его определенному про­чтению, — хотя бы как средство проверки своего мнения. Каждое определение типа документа является интерпретацией текста. Не существует единственного DTD, охватывающего все сведения о тексте, несмотря на удобство предпочтения одних DTD другим для конкретных типов анализа.

В настоящее время SGML шире всего применяется там, где основным требо­ванием служит единообразие структуры документов. Например, при производ­стве технической документации весьма важно, чтобы разделы и подразделы были соответствующим образом вложены, перекрестные ссылки производились кор­ректно и т. д. В таких ситуациях к документам относятся, как к сырому материалу, к которому применяется заранее определенный набор правил. Однако, как гово­рилось выше, простые правила могут сильно упростить задачу аккуратной раз­метки элементов и менее ограниченных текстов. Делая правила явными, исследо­ватель уменьшает свою работу по разметке и проверке, в то же время выявляя интерпретацию структуры и значимые особенности кодируемого текста.

Пример DTD

DTD в SGML выражается в виде набора описательных утверждений с ис­пользованием определенного в стандарте простого синтаксиса. Для нашей модели технического руководства подойдут следующие описания:

<! ELEMENT manual — (system+)>

<! ELEMENT system — (systitle?, subsystem+)>

<! ELEMENT subsystem — (subsystitle?, topic+)>

<! ELEMENT topic — О (topictitle?, paragraph+)>

<! ELEMENT systitle — О (#PCDATA)>

<! ELEMENT subsystitle — О (#PCDATA)>

<! ELEMENT topictitle — О (#PCDATA)>

<! ELEMENT paragraph — О (#PCDATA)>



220
221


УПРАВЛЕНИЕ ЖИЗНЕННЫМ ЦИКЛОМ ПРОДУКЦИИ
Глава 5. ТЕХНОЛОГИЯ УПРАВЛЕНИЯ ДАННЫМИ ОБ ИЗДЕЛИИ



Эти восемь строчек — примеры формальных описаний элементов SGML. Описание, как и элемент, ограничено угловыми скобками; первым символом за открывающей скобкой должен быть восклицательный знак, за которым сразу следует одно из ключевых слов, указывающее на тип описываемого объекта. Все восемь описаний имеют одинаковый тип: каждое начинается с ключевого слова ELEMENT, показывающего, что описывается элемент в определенном выше тех­ническом смысле. Описание состоит из трех частей: названия или группы назва­ний; двух символов, задающих правила минимизации (minimization rules), и модели содержимого (content model). Каждая из данных частей рассмотрена ниже. Компоненты описания разделяются «пустым местом», то есть одним или более пробелом, табуляцией или переводом строки.

Первая часть описания определяет обобщенный идентификатор описываемо­го элемента, например, manual, system и т. д. Как будет показано ниже, в одном утверждении можно описывать несколько элементов.








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

Вторая часть описания задает правила минимизации для элемента. Они опре­деляют обязательность открывающей и закрывающей меток для каждого появле­ния данного элемента и имеют вид пары символов, разделенных пробелом, где первый символ относится к открывающей, а второй — к закрывающей метке. В обоих случаях должны присутствовать или минус или буква О; минус означает, что метка обязана быть, а буква О — что ее можно опустить.

Модель содержимого

Третья часть каждого описания, заключенная в круглые скобки, называется моделью содержимого элемента. Она указывает, что входит в экземпляры элемен­та. Содержимое описывается либо в терминах других элементов, либо при помо­щи специальных зарезервированных слов. Есть несколько таких зарезервирован­ных слов, из которых самое часто используемое — #PCDATA. Это сокращение от «parsed character data» (разобранные символьные данные), оно означает, что опи­сываемый элемент может включать любые разрешенные символьные данные. Если представить себе SGML-описание в виде структуры наподобие генеалогического дерева с одним предком наверху (в нашем случае < тапиа> \ то почти всегда, следуя по ветвям дерева вниз (например, от < manuat > к < system >, < subsystem >, < topic >, < paragraph > ), мы придем к #PCDATA. В нашем примере так определены < systUle >, < subsystitle >, < topictitle > и < paragraph >. Так как в их модели содержи­мого указано только #PCDATA и не названо никаких включаемых элементов, они не содержат других элементов.

Обозначения включения

Вышеприведенное описание для < manuat > устанавливает, что руководство состоит из одной или более систем. Оно использует обозначение включения (occurence indicator) — зцак плюс — для указания того, сколько раз может встре­чаться элемент, названный в модели содержимого. В синтаксисе SGML есть три
обозначения включения, обычно представленных знаком «+», вопросительным знаком и звездочкой. (Так же как и ограничители, они имеют формальные наиме­нования и могут быть переопределены соответствующим SGML-описанием.) Знак «+» означает, что соответствующий элемент может встречаться один или более раз; вопросительный — что он встретится лишь однажды; звездочка — что эле­мент будет или отсутствовать, или появляться один и более раз. Так, если бы мо­дель содержимого для < manual > была (system*), допускалось бы руководство без систем, так же как и с несколькими системами. Если бы она была (system? ), то пустое руководство было бы тоже допустимо или оно имело бы только одну систему.


Связки

Модель содержимого элемента system (systitle?, subsystem+) содержит боль­ше одного компонента. Поэтому нужно дополнительно указать порядок, в кото­ром они (< systitle > и < subsystem > ) могут появляться. Это упорядочение опреде­ляется связкой (group connector) между компонентами. Существуют три воз­можные связки, представляемые запятой, вертикальной чертой и знаком «& ». (Так же как ограничители и обозначения включения, связки имеют в стандарте формальные имена и могут быть переопределены соответствующим SGML-описанием.)

Запятая означает, что оба компонента, которые она соединяет, должны встре­чаться в порядке, указанном в модели содержимого. Знак «& » обозначает, что два компонента встречаются в произвольном порядке. Вертикальная черта показы­вает, что мы увидим только один из компонентов, которые она соединяет. Если в нашем примере запятую заменить на знак «& », то заголовок появится или перед подсистемами, или после них (но не между). Если ее заменить на вертикальную черту, то система будет состоять или из заголовка, или только из систем (но не из того и другого).

Атрибуты

В контексте SGML слово атрибут (attribute), подобно другим, имеет стро­гий технический смысл. Оно используется для информации, в каком-либо смыс­ле описательной для конкретного элемента, не являющейся частью его содержи­мого. Например, можно добавить атрибут status к экземплярам некоторых эле­ментов для обозначения степени их достоверности или атрибут identifier, чтобы ссылаться на появление элемента из других мест документа. Атрибуты полезны именно в таких случаях.

Хотя несколько элементов могут иметь атрибуты с одинаковыми названиями, такие атрибуты всегда считаются различными и обладают различными значения­ми. Если элемент имеет атрибуты, их значения задаются в документе как пары «атрибут - значение» внутри открывающей метки экземпляра элемента. Зак­рывающая метка не может содержать спецификаций «атрибут - значение», так как это было бы излишним.

Например:

< system id = 214.030.000.00 status = «drafb»... < /system>.



222
223


УПРАВЛЕНИЕ ЖИЗНЕННЫМ ЦИКЛОМ ПРОДУКЦИИ
Глава 5. ТЕХНОЛОГИЯ УПРАВЛЕНИЯ ДАННЫМИ ОБ ИЗДЕЛИИ



Элемент < system > содержит два атрибута: id и status. Для экземпляра ' < system >, представленного многоточием, id имеет значение 214.030.000.00, а status — значение draft. SGML-процессор может применять значения атрибутов произвольным образом. Например, форматирование печатает элементы систе­мы со значением атрибута status draft и revised по-разному. Другой процессор; будет использовать тот же атрибут, чтобы определить, нужно ли вообще обра­батывать соответствующие элементы системы. Атрибут «/является особым слу­чаем, так как по соглашению он всегда применяется для снабжения конкретного экземпляра элемента уникальным значением, которое может использоваться для перекрестных ссылок.

Как и элементы, атрибуты описываются при объявлении типа документа с упот­реблением довольно похожего синтаксиса. Кроме спецификации названия атрибута и элемента, к которому он относится, можно указать (в некоторых границах), какие виды значений приемлемы для атрибута и каковы они по умолчанию.

Для определения двух атрибутов, указанных у элемента < system >, использу­ют следующие объявления:

<! ATTLIST system id ID#IMPLIED status (draft | revised | published) draft>.

Объявление начинается с символа ATTLIST, который открывает специфика­ цию списка атрибутов (attribute list specification). Первая его часть указывает рассматриваемый элемент (или элементы). В нашем примере атрибуты объявля­ются только для элемента < system >. Если несколько элементов имеют одни и те же атрибуты, все они могут быть определены в одном объявлении. Для этого, точно так же как и в объявлениях элементов, нужно задавать в круглых скобках список из нескольких названий. За названием (или списком) следует набор строк, где объявляются по одному атрибуты; каждое объявление содержит три части. Они соответственно обозначают название атрибута, тип принимаемых им значений и значение по умолчанию.

Названия атрибутов ( id и status в нашем примере) подпадают под те же огра­ничения, что и другие идентификаторы в SGML; однако они должны быть уни­кальны не в пределах всего DTD, а только в списке атрибутов данного элемента.

Вторая часть спецификации атрибута может принимать одну из двух рассмот­ренных выше форм. В первом случае используется одно из нескольких ключевых слов, объявляя тип значений, принимаемых атрибутом. В примере фигурирует специальное ключевое слово ID, показывающее, что атрибут id будет применен для указания уникального идентифицирующего значения каждой системы. Рас­смотрим другие ключевые слова SGML.

CDATA

Значение атрибута может содержать любые разрешенные символьные дан­ные. В него входят метки, но их не распознает синтаксический анализатор SGML, и они не будут обрабатываться как обычно.

IDREF

Значение атрибута в обязательном порядке указывает на некоторый другой элемент (см. дальнейшее обсуждение//)).
NMTOKEN

Значение атрибута является идентификатором (name token), то есть (более или менее) произвольной строкой алфавитно-цифровых символов.

NUMBER

Значение атрибута состоит только из цифр.

В предыдущем примере был задан список возможных значений атрибута status. Синтаксический анализатор может убедиться, что в документе нет < system > со значением атрибута status не из draft, revised или published. Либо, если это значе­ние CDATA или NAME, анализатор будет принимать почти любую строку сим­волов (status = awful или status = 12345678 при значении NMTOKEN; status = «сойдет что попало» или status = «ну, ПОЧТИ что попало», если оно было CDATA ). Конечно, иногда набор возможных значений нельзя определить заранее.

Последняя часть информации в каждом определении атрибута указывает, как анализатор должен интерпретировать отсутствие рассматриваемого атрибута с помощью одного из нижеперечисленных ключевых слов или (как в данном слу­чае) конкретного значения, которое трактуется по умолчанию. В нашем примере, если система размечена, как < system >, анализатор будет считать его < system status = " draft " >. В ином случае значение по умолчанию для атрибута может быть ука­зано при помощи одного из следующих ключевых слов.

« REQUIRED

Значение должно быть указано.

« IMPLIED

Значение не обязано быть указано (как в случае с ID выше).

« CURRENT

Если значение не указано, следует использовать последнее из обозначенных.

Например, если вышеприведенные определения атрибутов переписать в виде

<! ATTLIST system id ID #IMPLIED status (draft | revised | published) #CURRENT>,

то системы, названные в руководстве < system >, будут трактоваться аналогич­но статусу предыдущей системы. Если вместо « CURRENT употребить ключевое слово « REQUIRED, анализатор будет считать такие системы ошибочно разме­ченными или значение будет отличаться от draft, published или revised. Использо­вание « CURRENT подразумевает, что значение, указанное для него в первой системе, применяется ко всем следующим, пока его не заменят. Следовательно, когда статусы всех систем одинаковы, его нужно обозначить только у первой.

Иногда необходимо в одном элементе сослаться на другой, очевидными приме­рами чего служат фразы «см. замечание 6» или «как указано в главе 5». Во время подготовки текста действительные номера, соответствующие замечаниям или гла­вам, могут быть не определены. Если мы используем описательную разметку, такие вещи как номера страниц или глав, будучи целиком и полностью вопросом пред­ставления, ни в коем случае не присутствуют в размеченном тексте: они будут присвоены приложением, обрабатывающим текст (и часто отличаются в разных приложениях). SGML предоставляет специальный механизм, с помощью которого экземпляру любого элемента можно присвоить идентификатор (вроде метки), кото-



224
225


УПРАВЛЕНИЕ ЖИЗНЕННЫ М ЦИКЛОМ ПРОДУКЦИИ
Глава 5. ТЕХНОЛОГИЯ УПРАВЛЕНИЯ ДАННЫМИ ОБ ИЗДЕЛИИ



рый применяется для ссылок на него из любого другого места текста. Перекрестная ссылка сама по себе является элементом специального вида, он также должен быть объявлен в DTD. В любом случае идентифицирующая метка (которая может быть произвольной) указывается в качестве значения специального атрибута.

Предположим, что мы хотим из одной системы сослаться на другую. Сначала нужно присоединять метку к каждой из них определением атрибута для элемента < system >, как рекомендовано выше. <! ATTLIST system

id ID #IMPLIED>

Здесь мы определяем атрибут id, значение которого должно быть типа ID. Название id для типа ID не является обязательным. Однако это удобное соглаше­ние, которому практически всегда следуют. Заметим, что не каждая система долж­на нести атрибут id, и анализатор свободно игнорирует его отсутствие. Только те системы, на которые мы собираемся ссылаться, нуждаются в его использовании. В открывающую метку каждой такой системы мы должны включить некоторый уникальный идентификатор, например:

< SYSTEM ID = ПОО (Текст ситемы с идентификатором «ПОС».) < /SYSTEM>;

< SYSTEM ID = 214.030.000.00> (Текст системы с идентификатором «214.030.000.00».) < / SYSTEM>; < SYSTEM> (У этой системы нет идентификатора.)

< / SYSTEM>.

Далее мы определим новый элемент для перекрестных ссылок. Он не будет иметь содержимого — являясь только указателем, он содержит атрибут, значени­ем которого служит идентификатор указываемого элемента. Это достигается сле­дующим объявлением:

<! ELEMENT systemref — О EMPTY> <! ATTLIST systemreftarget IDREF #REQUIRED>.

Элемент < systemref > не нуждается в закрывающей метке, так как у него нет содержимого, что указывается в модели с помощью ключевого слова EMPTY (пустой). Его единственный атрибут— target, чей тип значения IDREF (ключевое слово, используемое для перекрестных указателей такого типа) обязан быть ука­занным. Используя эти объявления, мы можем закодировать ссылку на систему с id 214.030.000.00 следующим образом:

Описание работы противообледенительной системы < S YSTEMREF TARGET = 214.030.000.00>...

Когда анализатор SGML дойдет до пустого элемента, он просто проверит суще­ствование элемента с идентификатором 214.030.000.00. Различные SGML-приложе­ния предпринимают разнообразные дополнительные действия: форматировщик мо­жет сконструировать точную ссылку на номер страницы и строки описания системы в текущем документе и вставить ее или просто процитировать заголовок, а также
первые строки системы. Гипертекстовый процессор применяет этот элемент как сиг­нал активизации ссылки на систему. Назначением SGML-разметки является фиксация существования ссылки: она не определяет, что приложение будет с ней делать.

















Объекты SGML

Обсуждавшиеся до сих пор аспекты SGML имели отношение к разметке струк­турных элементов документа. SGML также предоставляет простой и гибкий ме­тод кодирования и наименования произвольных частей содержимого документа. В SGML слово объект (entity) несет специальный смысл: оно означает именован­ную часть размеченного документа безотносительно к структуре. Объектом мо­гут быть строка символов или целый файл текста. Для включения его в документ используется конструкция, известная как ссылка на объект (entity reference). Например, следующее объявление

<! ENTITY pos «Противообледенительная система»>

определяет объект pos, значением которого является строка «Противообледе­нительная система». (По соглашению названия объектов бывают чувствительны­ми к регистру в отличие от названий элементов.) Это был пример объявления объекта (entity declaration), которое обозначает внутренний объект (internal entity). Следующее объявление, напротив, указывает системный объект (system entity):

<! ENTITY ChapTwo SYSTEM «sgmlmkup.txb».

Здесь определяется системный объект ChapTwo, значением которого служит текст, ассоциированный с системным идентификатором. В этом случае системный идентификатор — имя файла операционной системы. Текст замещения объекта является содержимым файла.

После того как объект объявлен, на него можно ссылаться в любом месте документа. Это делается путем использования его названия, перед которым ста­вится символ «& », а после — точка с запятой. Точка с запятой может быть опуще­на, если за ссылкой на объект следуют пробел или конец записи.

Когда SGML-анализатор встречает ссылку на объект, он немедленно подстав­ляет вместо названия объекта нужное значение. Так, фраза «схема защищаемых участков самолета от обледенения и размещение агрегатов & pos показаны на рис. 2» будет интерпретирована SGML-процессором так, как если бы это было — «схема защищаемых участков самолета от обледенения и размещение агрегатов противообдеденительной системы показаны на рис. 2». В системном объекте под­ставляется содержимое файла операционной системы. Фраза «следующий текст был опущен: & ChapTwo; » будет включать все, что система найдет в файле sgmlmkup.txt. Строго говоря, SGML не требует, чтобы системные объекты были файлами. Они могут в принципе быть любыми источниками данных, доступными SGML-процессору: файлами, результатами запросов к базе данных, результата­ми вызовов системных функций и т. д. Однако при изучении SGML проще пред­ставлять себе системные объекты ссылающимися на файлы, и настоящее обсужде­ние далее игнорирует прочие возможности. Все существующие SGML-процессо­ры поддерживают использование системных объектов для ссылок на файлы; лишь некоторые учитывают другие их возможности.



226
227


УПРАВЛЕНИЕ ЖИЗНЕННЫМ ЦИКЛОМ П РОДУКЦИИ
Глава 5. ТЕХНОЛОГИЯ УПРАВЛЕНИЯ ДАННЫМИ ОБ ИЗДЕЛИИ



Это, очевидно, экономит время и упрощает проблему непротиворечивости набо­ра документов. Если печать сложного документа происходит во многих местах, тело документа может использовать ссылку на объект (такую как & site; ) там, где требуется название места. Затем можно добавить разные объявления объектов для подстановки вместо нее соответствующего названия, не меняя текст самого документа.

Механизм строковой подстановки имеет много применений. Его можно ис­пользовать для ликвидации неравенства компьютерных систем в представлении полного диапазона символов английского алфавита (не говоря уже о требованиях других современных или древних языков). Так называемые «специальные симво­лы», напрямую не доступные с клавиатуры (или неправильно транслируемые при передаче), указываются ссылкой на объект.

Предположим, что мы хотим закодировать использование лигатур в старых печатных текстах. «Лигированная» форма ct должна отличаться от нелигирован-ной путем кодирования ее (как & ctlig; ), а не в виде ct. Прочие специальные типог­рафские элементы (вроде линеек или leafstops) точно так же обозначены, как мнемонические ссылки на объекты. При обработке текстов будет добавлено объяв­ление объектов, и мы получим желаемое представление подобных элементов тек­ста. Если, например, лигированные буквы интереса не представляют, мы можем просто добавить объявление вида <! ENTITY ctlig «ct»>,

и различие в исходном документе будет снято. Когда используется формати­рующая программа, способная представить лигированные символы, заменим объявление объекта так, чтобы дать ту последовательность символов, которую требует такая программа.

Список объявлений объектов известен как набор объектов (entity set). Стан­дартные наборы объектов, доступные для большинства SGML-процессоров, обыч­но включают названия, взятые из списков имен, опубликованных как приложение к стандарту SGML в других местах.

Значения подстановок, заданные в объявлениях объектов, конечно, системно­зависимы. Если примененные в них символы нельзя набрать напрямую, SGML предоставляет механизм их спецификации по численным значениям— ссылки на символы (character references). Ссылка на символ отличается от остальных симво­лов в строках подстановки тем, что начинается со специального символа (обычно — последовательности & Щ и заканчивается точкой с запятой. Например, если используемый форматировщик представляет лигированную форму ct по симво­лам с и t, предваряемым символом с десятичным значением 102, объявление объекта может выглядеть так:

<! ENTITY ctlig «& #102; ct»>.

Заметим, что ссылки на символы обычно не имеет смысла переносить между программными или аппаратными платформами, поэтому они применяются только в ситуациях, подобных описанной.

Хотя механизм ссылок на объекты и полезен для редких отклонений от ожида­емого набора символов, никто не будет пользоваться им для кодирования длин­ных предложений, например цитат на греческом или русском в английском тексте. В подобных случаях работают с иными механизмами.

228
В объявлениях SGML-разметки может использоваться специальная форма — параметрические объекты (parameter entities). Они отличаются от ранее обсуждавшихся объектов, которые называются обычными (general entities), двумя свойствами:

> применяются только внутри объявлений SGML-разметки и обычно не встречаются в документе;

^ ограничиваются знаком процента (а не знаком «& ») и точкой с запятой.

Объявления параметрических объектов имеют тот же вид, что и объявления обычных, но между ключевым словом ENTITY и названием вставляется знак процента (%), с обеих сторон отделенный пустыми местами (пробелами, табуляци­ями или переводами строк).









Отмеченные секции

Иногда удобно отметить некоторые части текста, чтобы SGML-анализатор относился к ним по-особому. Технические руководства для связанных продуктов содержат множество информации, но отличаются в некоторых деталях. Часто ин­формация о целом наборе сходных продуктов находится в одном документе, а в момент показа или печати выбираются только те его части, что относятся к конк­ретному продукту. (Скажем, описание того, как заменять моторное масло, может использовать один и тот же текст для большинства шагов, но содержать разные советы по удалению карбюратора, зависящие от модели двигателя.)

Для подобных случаев SGML предоставляет конструкцию отмеченных сек­ций (marked sections). Она гораздо удобнее при производстве новых текстов, а не при кодировании уже существующих.

«Специальная обработка», предлагаемая в SGML для отмеченных секций, бывает нескольких типов, каждый из которых ассоциируется с одним из следую­щих ключевых слов.

INCLUDE

Отмеченная секция должна быть включена в документ и нормально обработана.

IGNORE

Секцию следует целиком проигнорировать; если SGML-приложение генери­рует данные на основании документа, она будет из них исключена.

CDATA

Может содержать строки символов, которые выглядят, как метки SGML или ссылки на объекты, но не должны распознаваться в качестве таковых SGML-анализатором (их используют для включения примеров SGML-разметки).

RCDATA

Включает строки символов, которые выглядят, как метки SGML, но не рас­познаются в качестве таковых SGML-анализатором. Ссылки на объекты, с другой стороны, могут присутствовать и будут распознаны и заменены как обычно.

TEMP

Предложения, входящие в отмеченную секцию, являются временной частью документа. Секция в основном используется для обозначения их положения, что­бы позже они могли быть удалены или пересмотрены.

229


УПРАВЛЕНИЕ ЖИЗНЕННЫМ ЦИКЛОМ ПРОДУКЦИИ
Глава 5. ТЕХНОЛОГИЯ УПРАВЛЕНИЯ ДАННЫМИ ОБ ИЗДЕЛИИ



Когда в тексте появляется отмеченная секция, ей предшествует строка откры­ тия отмеченной секции (marked-section start), содержащая одно или несколько ключевых слов из приведенного списка. Ее конец отмечается строкой закрытия отмеченной секции (marked-section close). Вторая и последняя строки следую­щего примера — открытие и закрытие игнорируемой отмеченной секции.

В таких случаях банк возместит клиенту все потери.

<! [ IGNORE [

Ответственность ограничена $50000.

]]>

Из ключевых слов наиболее важными являются INCLUDE и IGNORE. Они используются при выборочном включении и исключении частей документа (DTD) для подгонки его под конкретные условия (например, чтобы дать пользователю возможность выбирать части DTD, подходящие нужному документу).

Однако буквальное применение ключевых слов INCLUDE и IGNORE не по­могает в настройке DTD. (Например, чтобы вставить исключаемую фразу, пользо­вателю нужно будет вручную редактировать текст, сменив IGNORE на INCLUDE. С тем же успехом можно просто убирать или добавлять фразу в текст.) Но ключе­вые слова не обязаны быть представлены буквальными значениями — они могут быть ссылками на параметрические объекты. Скажем, в документе некоторые фразы, следует включить только в раздел Maryland. Каждая фраза заключается в отмеченную секцию, чье ключевое слово представлено ссылкой на параметри­ческий объект под названием Maryland.

В таких случаях банк возместит клиенту все потери.

<! [%Maryland; [

Ответственность ограничена $50000.

]]>

Когда параметрические объекты таким образом используются для управле­ния отмеченными секциями DTD, внешний файл DTD обычно содержит объявлс ■ ния по умолчанию. Если пользователь хочет это изменить (например, включив секции для Maryland ), достаточно добавить соответствующее объявление в под­множество DTD. (Объявления в подмножестве DTD читаются раньше файлов DTD, а силу имеет объявление, прочитанное первым.)





Использование SGML

Существует множество программных средств для создания, проверки и обработки SGML-документов. Сердцем большинства продуктов служит син­таксический анализатор SGML, то есть программный модуль, принимаю­щий определение типа и генерирующий систему проверки любого документа с таким DTD. Ответом анализатора в простейшем случае будет «да» (экземп­ляр документа правилен) или «нет». Большинство анализаторов, кроме того, выдают новую версию документа в канонической форме (canonic form), со­держащую добавленные закрывающие метки и разрешенные ссылки на объек­ты или сформатированную в соответствии с заданием пользователя. Эта фор­ма может быть затем использована другими частями программной системы (более или менее тесно связанными с анализатором) для выполнения дополни-

230
тельных функций, таких как структурное редактирование, форматирование или управление базой данных.

Структурный редактор (structured editor) является интеллектуальным тек­стовым процессором. Он применяет информацию, выделенную из обработанного DTD, чтобы подсказывать пользователю, какие элементы требуются в разных местах текста в процессе редактирования. Он также может сильно упростить зада­чу подготовки документа, автоматически вставляя метки.

Форматировщик (formatter) использует размеченный экземпляр для генера­ции его печатной формы. Многие типографские различия набора (начертания шрифта или его размер) тесно связаны со структурными различиями текста, так что форматировщики применяют сведения, заложенные в описательной разметке. Можно, кроме того, определять структуру разметки для форматирующей про­граммы при помощи параллельной структуры документа.

Системы управления текст-ориентированными базами данных обычно ис­пользуют инвертированные индексы, указывающие на документ или его подраз­деления. Можно организовывать поиск вхождений некоторого слова или образца внутри документа или его части. Осмысленное подразделение входящих докумен­тов будет, безусловно, тесно связано с делением, заданным описательной размет­кой. Таким образом, системам текстовых баз данных просто работать с размечен­ными в SGML документами. В настоящее время большое число исследований в области расширения возможностей существующих (нетекстовых) систем управ­ления базами данных проводится для использования преимуществ явной SGML-разметки структурированной информации.

Гипертекстовые (hypertext) системы поддерживают ассоциативные связи внутри и между документами. Строительные блоки, необходимые им, являются также и базовыми блоками SGML: возможность идентифицировать и связывать отдельные элементы документа вытекает из методов работы SGML. Явно раз­мечая связи вместо использования закрытого программного обеспечения, авто­ры гипертекстов могут быть уверены, что создаваемые ими ресурсы надолго останутся доступными. Все, что требуется для загрузки SGML-документа в гипертекстовую систему, — это процессор, умеющий корректно интерпрети­ровать метки SGML.

Помимо текстовой и графической информации в SGML-стандарт часто встав­лены мультимедийные элементы: аудио- и видеозаписи и клипы. Технология встрой­ки мультимедийных элементов регламентируется специальным расширением SGML, описанным в стандарте ISO 10744 HyTime (Hypermedia/TimeBased Structuring Language) языком «привязки» мультимедийных объектов.

5.2.18. Преимущества SGML Повышение производительности

Структурный подход позволяет создателю документа организовать инфор­мацию и хранить его содержание отдельно от формата. Это помогает централи­зованно настроить формат документов, поэтому их авторы могут сосредотачи­вать свои усилия на содержании, а не на оформлении, что удваивает производи­тельность.

231


УПРАВЛЕНИЕ ЖИЗНЕННЫМ ЦИКЛОМ ПРОДУКЦИИ
Глава 5. ТЕХНОЛОГИЯ УПРАВЛЕНИЯ ДАННЫМИ ОБ ИЗДЕЛИИ


Поделиться:



Последнее изменение этой страницы: 2019-03-29; Просмотров: 431; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.074 с.)
Главная | Случайная страница | Обратная связь