Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Язык представления документов SGML
Вследствие возникшего многообразия способов представления текстовой и графической информации, связанных с применением разнородных программных средств, технологий форматирования и верстки текста, методов кодировки и поддержки национальных языков, появилась потребность в разработке унифицированных решений. Одно из них содержится в стандарте ISO 8879 Standard Generalized Markup Language (SGML), определяющем обобщенный стандартный язык разметки текста. Язык разметки SGML был разработан в 60-х гг. XX в. группой энтузиастов из компании IBM, которых интересовали вопросы переноса документов между различными платформами и операционными системами. В результате возник язык разметки GML (General Markup Language), предназначенный для использования на ЭВМ семейства IBM. Создатели GML спустя несколько лет поняли, что нашли решение, позволяющее делать документы, легко переносимые с компьютера на компьютер и обрабатываемые не только на машинах IBM. Co временем GML попал под патронаж Международной организации по стандартизации ISO и в 1986 г. был утвержден как международный стандарт ISO 8879 (SGML). 214 УПРАВЛЕНИЕ ЖИЗНЕННЫМ ЦИКЛОМ ПРОДУКЦИИ 5.2.1. Введение в SGML SGML является международным стандартом на описание размеченного электронного текста. Точнее, SGML — это метаязык (metalanguage), то есть средство формального описания языка, в данном случае языка разметки (markup language).: Прежде чем продолжать, определим эти термины. Исторически слово разметка (markup) использовалось для аннотаций или | отметок в тексте, указывающих машинистке или наборщику, как именно должна | быть напечатана или набрана определенная фраза. Например, волнистое подчер-, кивание для обозначения курсива, специальные символы для пропуска отдель- j ных предложений или их печати определенным шрифтом и т. п. С автоматизацией ] форматирования и печати текстов значение термина было расширено, оно охваты- j вает сейчас всяческие коды разметки (markup codes), вставляемые в электронные } тексты для управления форматированием, печатью или иной обработкой. Обобщая, мы определяем разметку или кодирование (encoding), как любой метод I выявления интерпретации текста. На примитивном уровне все печатные тексты кода-рованы: знаки пунктуации, использование заглавных букв, размещение букв на стра- \ нице, даже пробелы между словами можно считать своеобразной разметкой, функция которой — помочь читателю определить, где заканчивается одно слово и начинается другое, либо отделить структурные элементы (например, заголовки) или элементы локальной структуры (например, подчиненные предложения). Под языком разметки мы понимаем набор соглашений о разметке, используе-, мых в комплексе для кодирования текстов. Он должен специфицировать значение, допустимость, необходимость разметки, различия разметки и текста. Особенности SGML Существуют три характеристики SGML, отличающие его от других языков разметки: его упор на описательную, а не на процедурную разметку; концепция; типа документа (document type); независимость от конкретной системы в пред-ставлении текста. Эти аспекты кратко обсуждаются ниже. Описательная разметка Система описательной разметки использует коды разметки, предоставляю-; щие названия для классификации частей документа. Код, такой как < рага>, идентифицирует часть документа и утверждает про нее: «следующий элемент—параграф». Напротив, система процедурной разметки определяет, какая обработка должна производиться в конкретной точке документа: «здесь вызвать процедуру PARA с параметрами 1, Ь и х» или «сдвинуть левую границу на 2 см влево, правую — на 2 см вправо, пропустить строку и встать на новую левую границу» и т. д. В SGML инструкции, необходимые для обработки документа с определенными целями (например, для его форматирования), четко отделяются от описательной разметки, встречающейся внутри него. Обычно они собираются вне документа в отдельных процедурах или программах. При описательной (непроцедурной) разметке один и тот же документ можно обрабатывать различными программами, каждая из них применяет разные прави- Типы документов SGML вводит понятие типа документа и, как следствие, определения типа документа (document type definition, DTD). Тип документа формально зависит от его составных частей и их структуры. Например, определение отчета показывает, что он состоит из заголовка и, возможно, имени автора, а дальше следуют аннотация и один или несколько абзацев. Все, что не имеет заголовка, в соответствии с этим формальным определением отчетом не является, так же как не является им последовательность абзацев, за которой следует аннотация, вне зависимости от того, насколько такие документы похожи на отчет для читателя. Для проверки документа, утверждающего свою принадлежность к определенному типу, можно использовать специальную программу, называющуюся анализатором (parser). Анализатор проверяет присутствие и расположение в правильном порядке всех элементов, требуемых типом документа. Что более важно, разные документы одного и того же типа могут обрабатываться одинаковым образом. Для этого конструируются программы, использующие знание структуры документа, которые действуют в более осмысленной манере. Независимость данных Основная цель создания SGML заключалась в том, чтобы обеспечить транспортабельность закодированных документов из одной аппаратной и программной среды в другую без потери информации. Два из описанных выше свойств решают эту задачу на абстрактном уровне; третье — на уровне строк байтов (символов). SGML предоставляет универсальный механизм строковой подстановки (string substitution), то есть простой машинно-независимый способ обозначить, что некоторая последовательность символов в документе должна заменяться при его обработке другой последовательностью. Одно очевидное применение данного механизма — обеспечение согласованности номенклатуры; другое, более важное, — противодействие печально известной неспособности различных компьютерных систем понимать наборы символов друг друга. Это способ в любой системе предоставить все графические символы, необходимые для конкретного приложения, путем использования описательных обозначений непереносимых символов. Строки, определенные механизмом подстановки, называются объектами (entities) и рассмотрены ниже. 216 УПРАВЛЕНИЕ ЖИЗНЕННЫМ ЦИКЛОМ ПРОДУКЦИИ 5.2.6. Структура текста Текст не является просто однородной последовательностью слов или, тем 1 более, байтов. Для различных целей он может быть разделен на множество единиц I разных типов или размеров. Текст в прозе разбивают на разделы, главы, абзацы и | предложения. Стихотворный текст делится на песни, строфы и строки. Изданные | проза и поэзия подразделяются на тома, сборники, страницы. Такого рода структурные единицы чаще всего используют для идентифика-1 ции конкретной позиции или ссылки внутри текста (например, «третье предложе-"! ние второго абзаца десятой главы» и т. п.), но они также применяются в делении] текста на осмысленные сегменты для аналитических целей («отличаются ли сред-1 ние длины предложений раздела 2 и раздела 5? »; «сколько абзацев разделяют ] появления слова ремонт? »; «сколько страниц? »). SGML -структуры Этот раздел представляет простой и согласованный механизм разметки или I идентификации структурных единиц текста, определяемый SGML. Он также опи- \ сывает, какие способы SGML предлагает для выражения правил, возможных ос-! мысленных комбинаций этих единиц в любых текстах. Элементы В стандарте SGML для текстовых единиц, рассматриваемых как структурные j компоненты, используется термин элемент (element). Разным типам элементов I даются различные названия, но SGML не предлагает никаких способов выразить значение конкретного типа, кроме его отношения к другим. То есть все, что можно сказать про элемент, называющийся < blort >, это то, что его экземпляры могут \ встречаться (а могут и не встречаться) внутри элементов типа < farble > и он раскладывается (или не раскладывается) на элементы типа < ЫогШе>. Следует подчеркнуть, что стандарт SGML совершенно не заботит семантика текстовых элементов: она зависит от приложения. В настоящий момент идет работа по созданию, с использованием синтаксиса SGML определения стандартного «языка семантики и спецификации стилей документов (document style and semantics specification language, DSSSL)». Дело создателей SGML-совместимых наборов разметок —'■ выбрать осмысленные имена идентификаторов элементов и документировать их правильное использование в разметке текстов. От необходимости выбора названий элементов, кодирующих их функцию, образован технический термин обоб щенный идентификатор (generic identifier) — GI. В размеченном тексте {экземпляре документа, document instance) каждый элемент должен быть некоторым образом отмечен. Стандарт предоставляет несколько разных способов это сделать, наиболее часто используемый из них — вставить метки (tag) в начале (открывающая метка, start-tag) и в конце элемента (закрывающая метка, end-tag). Пара открывающей и закрывающей меток используется для выделения элементов в тексте так же, как разные скобки или кавычки в обычной пунктуации. Например, элемент цитирования может быть отмечен в тексте так: Как показывает данный пример, открывающая метка имеет вид < название>, где открывающая угловая скобка обозначает ее начало, «название» — обобщенный идентификатор отмечаемого элемента, а закрывающая угловая скобка—конец метки. Закрывающая метка выглядит аналогично, за исключением того, что за открывающей угловой скобкой стоит символ косой черты, поэтому соответствующая закрывающая метка: < /название>. (На самом деле символы, используемые в качестве ограничителей (угловые скобки, косая черта, восклицательный знак) могут переопределяться, но удобнее применять символы, приведенные в этом описании.) Модели содержимого элемента: пример. Элемент может быть пустым (empty), то есть не содержать вообще ничего или содержиать просто текст. Чаще, однако, элементы одного типа целиком находятся внутри элементов другого типа (embed). Для иллюстрации рассмотрим следующую структурную модель. Предположим, что в техническом руководстве мы хотим идентифицировать системы, подсистемы, темы и их заголовки, а также параграфы, из которых они состоят. В терминах SGML тип нашего документа—техническое руководство (manual), и оно состоит из последовательности систем (system) и заголовков систем (systitle). Каждая система содержит элементы подсистемы (subsystem) и их заголовки (subsystitle). Внутри подсистемы находятся тема (topic) и ее заголовок (topictitle), каждая тема содержит несколько абзацев (paragraph). Полностью размеченный текст, отвечающий этой модели, может выглядеть так: < manual> < system> < systitle> Противообледенительная система (ПОС) < /systitle>. < subsystem> < subsystitle> ПОС предкрылков < /subsystitle>. < topiO < topictitle> Общие сведения < /topictitle>: < paragraph> 1.1. Противообледенительная система (ПОС) предкрылков предназначена для защиты их от обледенения в полете. < /paragraph> < paragraph> 1.2. По принципу действия ПОС предкрылков — электротепловая (ЭТ), обеспечивает комбинированный обогрев постоянного и циклического действия. < /paragraph> < paragraph> 1.3. Нагревательные элементы (НЭ) установлены симметрично на левой и правой частях крыла внутри электрообогреваемых обшивок II и IV предкрылков, рис. 3. (030.00.00). < /paragraph> < /topic> <! - здесь могут быть другие темы или комментарии -> <! - здесь могут быть другие подсистемы или комментарии -> < /system> <! - здесь могут быть другие системы или комментарии -> < /manual> Пробелы и возвраты каретки здесь нужны только для облегчения чтения; они не несут определенного смысла в SGML-кодировании. Кроме того, строка <! - здесь могут быть комментарии -> 218 УПРАВЛЕНИЕ ЖИЗНЕННЫМ ЦИКЛОМ ПРОДУКЦИИ называется комментарием (comment) SGML и не считается частью текста. В этом примере нет никаких предположений о правилах, устанавливающих, ] например, могут ли заголовки встречаться в других местах, кроме как предше-, ствуя подсистеме, теме или абзацу, или допустимы ли абзацы, не являющиеся час-» 1 тью темы; поэтому разметка выглядит такой многословной. В подобных случаях | начало и конец каждого элемента должны быть явно отмечены из-за отсутствия | ясных правил их разрешенного появления. Однако на практике обычно формули-! руют правила, позволяющие уменьшить число меток. Например, рассмотрев нашу | упрощенную модель стихотворения, мы можем установить следующие правила: 1. Руководство состоит из описаний систем, системы содержат описания под* \ 2. Система всегда имеет единственный заголовок, который предшествует J ■ 3. Подсистема также имеет единственный заголовок, который предшествует ] теме и не содержит других элементов. 4. Тема имеет заголовок. 5. Кроме заголовка, тема состоит только из элементов абзаца. 6. За абзацем не может следовать ничего, кроме другого абзаца или конца темы. На основе этих правил констатируется отсутствие необходимости явно отмечать концы систем, подсистем, тем или абзацев. Из правил 2-5 ясно, что нам не нужно отмечать концы заголовков — они подразумеваются началом подсистемы, темы или абзаца. С данными упрощениями то же руководство размечено так: < manual> < system> < systitle> Противообледенительная система (ПОС). < subsystem> < subsystitle> ПОС предкрылков. < topic> < topictitle> Общие сведения: < paragraph> 1.1. Противообледенительная система (ПОС) предкрылков предназначена для защиты их от обледенения в полете. < paragraph> 1.2. По принципу действия ПОС предкрылков — электротепловая (ЭТ), обеспечивает комбинированный обогрев постоянного и циклического действия. < paragraph> 1.3. Нагревательные элементы (НЭ) установлены симметрично на левой и правой частях крыла внутри электрообогреваемых обшивок II и IV предкрылков, рис. 3. (030.00.00). < /manual> Использование правил, устанавливающих, какие элементы могут быть вложены в другие, — очень важное свойство SGML. He переходя к их дальнейшему разбору, попытаемся рассмотреть, как можно обработать размеченный вышеприведенным образом текст. Простая индексирующая программа выделяет только значимые элементы для генерации списка заголовков систем, подсистем, тем; простая программа форматирования вставляет пустые строчки между абзацами, начиная с красной строки первую строчку каждого абзаца или вставляя его номер. Различные части технического руководства набираются по-разному. И конечно, представленный выше текст может быть перенесен с одного компьютера на другой и обработан любой программой, понимающей смысл внесенных в |
Последнее изменение этой страницы: 2019-03-29; Просмотров: 339; Нарушение авторского права страницы