Формальные структуры текстовых документов Курс лекций В.А.Капустин
Введение Формальная структура документа – зачем? Зачем беспокоиться о формальной структуре документа? И какого документа? Конечно, есть много видов документов, для которых формальная структура важна: 1. Законодательство 2. Документация на программные средства 3. И вообще разнообразная документация 4. Словари – несколько неожиданно 5. Что ещё? Но выявление формальной структуры и в документах других видов, не исключая деловую и литературную прозу, поэтические и драматургические произведения, также может оказаться небесполезным.
Наиболее очевидная польза от явного выявления (разметки) формальной структуры – воз‐ можность автоматической публикации документа в различных визуальных представлениях (конечно, «ручная подгонка» внешнего вида может понадобиться, но выгода от использования разметки может быть весьма значительной). Современный инструментарий для работы с XML‐ документами (XSLT‐преобразования) позволяет преобразовывать XML‐документы в любые мыслимые визуализируемые форматы документов, начиная от простого текста и заканчивая языками описания страниц. Такое применение разметки, между прочим, говорит о том, что для неё следует применять XML, поскольку для других способов разметки подобные инструменты либо совсем отсутствуют, либо далеко не так мощны, как XSLT, либо гораздо более сложны (только представим себе сочетание sed, awk и troff). Но польза разметки может быть и в другом. Представим себе, что в сборнике биографических статей размечены все упоминания о лицах. Это позволило бы, например, не только получить при публикации указатель лиц, но и организовать поиск текста, в котором упоминается требуемое лицо! Подобные применения разметки могут быть весьма разнообразны: можно выделять грамматические формы, а можно – географические названия... Кроме упомянутых применений, которые сейчас составляют 99% применений разметки формальной структуры документа, можно придумать еще много. В частности, если разметка стандартизована, то возникает возможность обмена размеченными документами между информационными системами.
Немного истории Интерес к разметке формальной структуры документов возник с появлением самых первых средств разметки и форматирования текста в конце 50‐х – начале 60‐х годов XX века. Но в этих средствах, как правило, присутствует возможность выделить в документе только наиболее очевидные формальные структуры: разделы, абзацы и т.п. Наследниками этих средств разметки стали современные текстовые процессоры, яркий представитель которых – Microsoft Word. Все подобные средства позволяют смешивать визуальную разметку со структурной, что чрезвычайно затрудняет автоматизацию обработки так размеченных текстов. Другой наследник – TEX, который, в принципе, позволяет полностью отделить структурную разметку от визуальной и выделить в тексте любые структуры. Практика применения TEX, однако, далека от такого идеала. В конце 60‐х – начале 70‐х годов XX века появились языки структурной разметки. Среди них выделяется SGML – Structured Generalized Markup Language – язык, который принципиально не связывает разметку с каким бы то ни было визуальным представлением текста, и который предназначен исключительно для выявления формальных структур в тексте.
Однако лишь в начале 90‐х годов XX века стали появляться приложения SGML, позволяющие размечать более или менее произвольные тексты. Дело в том, что наличие подходящего языка разметки – лишь необходимое, но недостаточное условие для осуществления разметки. Для того, чтобы структурная разметка, с одной стороны, была более содержательна, чем просто выделение заголовков и абзацев, а, с другой стороны, была бы полезна более чем для одного применения, необходимы выделение тех структур текста, которые подлежат разметке и стандартизация обозначений для этих структур. Из множества инициатив в настоящее время активно используются результаты двух: DocBook и TEI. С появлением в конце прошлого века языка XML и DocBook, и TEI были перенесены в XML.
Кратко о DocBook DocBook первоначально появился как приложение SGML для подготовки изданий издательства O’Reilly, специализирующемся на компьютерной литературе. Подобные приложения существовали и продолжают существовать во многих издательствах, но DocBook оказался не слишком сложным и был с энтузиазмом воспринят компьютерным сообществом, которое к тому времени искало замену форматтеру программной документации troff. Автор DocBook Норман Уолш проделал (и продолжает) огромную работу по выделению возможных формальных структур в околокомпьютерных текстах; многие из этих структур важны и для других типов текстов. С 1998 г. и по настоящее время ответственность за DocBook несет Технический комитет DocBook (DocBook Technical Committee, http://www.oasis-open.org/docbook/) Организации по внедрению структурных информационных стандартов (Organization for the Advancement of Structured Information Standards – OASIS). Фактически, DocBook является международным стандартом. Текущей версией DocBook является 5.0. DocBook в полном объеме содержит около 400 элементов и многие сотни атрибутов и при‐ меняется не только для подготовки компьютерной документации и книг по компьютерной тематике, но в для других текстов. Имеются сокращенные варианты (DocBook Simplified, ~100 элементов). DocBook ориентирована, прежде всего, именно на подготовку текста, а не на разметку уже существующего текста, в отличие от TEI, которая ориентирована на работу с существующими текстами.
Кратко о TEI TEI – аббревиатура от Text Encoding Initiative. TEI поддерживают Association for Computers and the Humanities (Ассоциация по компьютерам и гуманитарным наукам), Association for Computational Linguistics (Ассоциация по вычислительной лингвистике) и Association for Literary and Linguistic Computing (Ассоциация по компьютерным технологиям в литературе и лингвистике). Финансирование осуществляют U.S. National Endowment for the Humanities (Американский Национальный фонд пожертвований на гуманитарные науки), Directorate General XIII of the Commission of the European Communities (XIII Управление комиссии Европейского сообщества), Andrew W. Mellon Foundation (Фонд Эндрю У. Меллона) и Social Science and Humanities Research Council of Canada (Совет по социальным наукам и гуманитарным исследованиям Канады). Принципы системы TEI опубликованы в мае 1994 года, после шести (!) лет разработки, в которую были вовлечены многие сотни ученых различных специальностей из разных стран мира.
В основу TEI должны были быть положены следующие принципы: возможность получать в тексте эффекты, необходимые для исследовательской работы; простота, ясность и конкретность; несложность для использования без специализированного программного обеспечения; возможность точного определения и эффективной обработки текстов; возможность расширений, определяемых пользователем; соответствие существующим и новым стандартам.
Мир гуманитарных наук велик и разнообразен. Чтобы система с данными принципами стала широко распространенной, важно гарантировать, что: 1. общее ядро текстовых элементов легко выделяется; 2. дополнительные специальные элементы и атрибуты можно легко добавить в текст (или удалить из него); 3. имеется возможность нескольких представления (различной разметки) одной и той же функции; 4. богатство разметки определяется пользователем, а набор минимальных необходимых условий очень невелик; 5. доступна соответствующая документация по текстам и их разметке. TEI включает сотни элементов. Имеется диалект TEI – TEI Light, – содержащий около сотни элементов, а также специализированные диалекты для прозы, стихотворных текстов, дра‐ матургии, словарей и пр.
DocBook Несколько вводных слов DocBook требует планирования структуры создаваемого текста. Хотя формально DocBook в состоянии обеспечивать разметку некоторых элементов бесструктурного текста, наиболее
эффективно применение DocBook именно для текстов с предварительно продуманной структурой (это не значит, конечно, что эту структуру невозможно изменить в процессе работы над текстом). «Просто текст» (как в «Блокноте» или редакторах типа TextPad), также как и текст, подготавливаемый в текстовых процессорах типа Microsoft Word, также как и текст, подготавливаемый в виде HTML‐страниц, вообще говоря, либо бесструктурны, либо (в случае Word/HTML) содержат смесь структурных и чисто оформительских компонентов. Отделение структуры от оформления в этих случаях требует существенных усилий (разработки стилей для всех структурных элементов). DocBook принципиально абстрагируется от оформления и описывает только структуру текста. В результате автор не должен думать об оформлении и может сосредоточиться на собственно тексте, а дизайнер – думать только об оформлении. У такого подхода есть оборотная сторона – такой подход приводит как к непростым тех‐ ническим проблемам, так и проблемам нетехническим. Технические проблемы включают прежде всего необходимость (как правило) нетривиальной обработки текста размеченного для получения текста оформленного. В настоящем курсе мы познакомимся с такой обработкой (XSLT). Вторая техническая проблема касается, в основном, именно документации и связана с управлением текстами. Дело в том, что различные компоненты документации часто используют одни и те же фрагменты текста. Обеспечить включение требуемого фрагмента текста с соблюдением структуры всего текста может быть непростой задачей.
Нетехнические проблемы связаны с необходимостью изменения подхода авторов к тексту. Планирование; написание текста в жестких рамках разработанной структуры; написание текста с целью его повторного использования в различных более широких контекстах требует от авторов выработки новых подходов к работе с текстом. Решение и тех и других (технических и нетехнических) проблем облегчается при наличии соответствующих инструментов. Мы познакомимся с одним из них – Altova Authentic.
Элементы DocBook DocBook – приложение XML. Это означает, что: 1. существует DTD DocBook (для DocBook версий 4.* этого достаточно, для DocBook версий ≥5.0 применяется XML‐схема), 2. текст, подготовленный в формате DocBook, является XML‐документом, 3. этот XML‐документ является не только правильно сформированным, но и правильным, т.е. структура его элементов соответствует DTD (и схеме). Формально это означает, что изучение DocBook сводится к изучению сотен элементов, представленных в DTD DocBook. Фактически чаще всего применяются немногие из этих элементов, и поэтому можно начать изучение именно с них. Кроме того, элементы DocBook можно сгруппировать по характеру их использования. Именно с такой группировки мы и начнем знакомство с ними. Итак, по характеру использования элементы DocBook распадаются на две группы: элементы иерархии элементы прозы (информационного пула, как называет их Норман Уолш) Элементы иерархии определяют общую, наиболее грубую структуру текста. Элементы прозы определяют локальные структуры: списки, выделения (собственно выделения, замечания и т.п.),
цитаты, примеры, уравнения, рисунки и др. Одна и та же иерархия может быть использована с разным текстом (и разными локальными структурами в нём), одни и те же фрагменты текста (с локальными структурами в нём) могут быть погружены в разные иерархии.
Элементы иерархии Сначала я перечислю несколько элементов иерархии (элементам прозы будет посвящены последующие занятия): set – набор книг («собрание сочинений) book – книга part – часть reference – набор справочных записей, указатель preface; chapter; appendix; bibliography; glossary – предисловие; глава; приложение;
список публикаций; словарь терминов article – статья section, sect1...sect5, simplesect – раздел; подраздел уровня 1...5; раздел, не имеющий
подразделов refentry – элемент указателя refsect1...refsect3 – разделы указателя
Затем рассмотрим примеры:
Книга An Example Book Norman Walsh 2004 Sun Microsystems, Inc. 1234 Our Favorite Sponsor Introduction ... The First Chapter ... An Appendix ...
Статья An Example Article Norman Walsh 2004 Sun Microsystems, Inc. 15 Nov - 19 Nov 2004 XML 2004 A Section ... An Appendix ...
FAQ
Sample Questions Q1 Question para 1 Question para 2 A1 Answer para 1 Answer para 2 Imponderables Why? Why did the chicken cross the road? To get to the other side Some other silly reason I've forgotten.
Медиа‐объекты Energy is equal to mass times the speed of light squared. E=mc^2
Описание функции #include
#include <sys/types.h> struct passwd *getpwnam const char * name struct passwd *getpwuid uid_t uid
Создание документов DocBook Кратко про разметку Документ DocBook – XML‐документОшибка! Источник ссылки не найден.. Поэтому основными составляющими разметки являются элементы, атрибуты и сущности.
Элементы и атрибуты Основными являются элементы, именно они передают структуру текстового документа. DocBook использует, в основном, элементы‐контейнеры (многие – со смешанным содержимым), однако для служебных целей (например, для создания указателей и закладок) используются пустые элементы. Многие элементы DocBook могут (но не обязаны) содержать атрибуты. Атрибуты используются, как правило, для служебных целей (перекрестных ссылок, организации поиска или уточнения). Однако возможно использование атрибутов для уточнения роль некоторых элементов, например при описании программного обеспечения:
Сущности Параметрические сущности в DocBook используются исключительно для тонкой настройки и/или модификации DTD DocBook, поэтому здесь мы рассматривать их не будем, а рассмотрим только использование общих (непараметрических) сущностей. Если какой‐то фрагмент встречается в тексте несколько раз, то удобно определить разбираемую сущность (parsed entity) :
Ссылка на общую сущность состоит из амперсанда, имени сущности и точки с запятой: &dbd; в документе DocBook будет заменено на «документ DocBook». Для русского языка применение сущностей не всегда оправдано. Обратите внимание на то, что вторая из объявленных сущностей содержит ссылку на другую сущность (&). Это обычное явление и оно вполне приемлемо.
Документ DocBook может быть разделен на несколько физических фрагментов (файлов), в этом случае целесообразно использовать внешние разбираемые сущности: "ch02.ent"> "ch03.ent"> "ch04.ent">
При таком подходе основной документ содержит только ссылки на эти сущности: &ch01; &ch02; &ch03; &ch04;
Неразбираемые сущности (unparsed entities) используются в DocBook для представления графических элементов. Пусть, например, изображение дерева находится в файле tree.jpg. Тогда для описания этого факта используется неразбираемая сущность:
В объявлении неразбираемой сущности используется ключевое слово NDATA (non‐parsed data) и указание на MIME‐тип нетекстовых данных (JPG). Неразбираемую сущность в XML можно использовать исключительно как значение атрибута. В DocBook – это атрибут entityref некоторых элементов, прежде всего, элемента graphic:
XML‐документ Документ DocBook – XML‐документ. Он должен быть не только правильно сформированным, но и правильным относительно DocBook DTD. Это, частности, означает, что документ DocBook обязан содержать пролог, который, в свою очередь, должен содержать объявление XML и объявление типа документа:
Документ DocBook часто содержит внутреннее ограничение, объявляющее сущности: ]> &ch01; &ch02; &ch03; &ch04;
Следует не забывать, что внутреннее ограничение всегда обрабатывается первым, и все объ‐ явления во внутреннем ограничении имеют приоритет над объявлениями (сущностей, элементов и атрибутов), содержащимися во внешних ограничениях.
XML‐каталог Использование публичных идентификаторов ставит вопрос доступа к соответствующим ресурсам. Так, DocBook DTD, упомянутое в предыдущем примере, при отсутствии доступа к Интернету может оказаться недоступной, и многие инструменты, предназначенные для работы с DocBook, откажутся это делать. Да и при наличии доступа к Интернету перекачивание 31 файла объемом около 400 Кбайт каждый раз, когда потребуется верификация структуры документа DocBook, не обеспечивает комфортности работы даже при скорости соединения 100 Mbps. Есть два решения этой проблемы. Наиболее простой способ – скачать DocBook DTD и временно изменить системную часть публичного идентификатора (URL), указав путь к этому DTD в локальной файловой системе:
Формально такой способ некорректен – URL должен соответствовать официальному месту хранения DTD. Можно полностью заменить публичный идентификатор на системный:
В обоих случаях получающиеся XML‐документы невозможно опубликовать – при их раз‐ мещении для публичного доступа путь к DocBook DTD, конечно, будет другим. Перед пуб‐ ликацией таких XML‐документов необходимо изменить URL в объявлении типа документа на стандартный. Это, конечно, затрудняет сопровождение документов DocBook, однако может оказаться единственно возможным подходом, если приложение, с которым вы работаете, не поддерживает XML‐каталог. Наиболее правильный способ обеспечить для DTD DocBook ссылку на локальный ресурс – использовать XML‐каталог. XML‐каталог позволяет указать локальный URL для публичного идентификатора и, тем самым, избежать медленной подгрузки DTD с сайта OASIS. Впрочем, некоторые инструменты (вроде Altova Authentic, который мы будем использовать), даже в случае использования правильно настроенного каталога обращаются к официальному расположению DTD.
Логические составляющие DocBook Основными структурными составляющими DocBook являются: Комплекты (set) Книги (book) Компоненты, которые подразделяют книгу на части Компоненты, которые подразделяют книгу или её разделы (части и т.п.) на главы («главоподобные» элементы) Компоненты, которые подразделяют главоподобные элементы на более мелкие составляющие (разделы, пункты и т.д.) – секции Метаинформация Блочные элементы Потоковые элементы Остановимся на каждой категории составляющих DocBook.
Комплект Элемент set используется на верхнем уровне иерархии документов DocBook. Этот элемент представляет комплект книг, будь то собрание сочинений, продолжающееся издание, комплект документации на космический корабль или на программный продукт.
Книга Чаще всего для корневого элемента DocBook используется элемент book. Определение «книги», используемое DocBook, является очень общим и достаточно свободным. Невозможно строго навязать последовательность элементов, составляющих книгу – обеспечение поддержки всего разнообразия публикаций, для которых используется DocBook, и разнообразия национальных традиций организации материала в публикации при строгой последовательности элементов сделало бы модель содержания XML‐документа DocBook крайне сложной. Вместо строгости DocBook дает вам достаточную свободу. Если вы хотите реализовать более строгий подход, вам придется написать свой настроечный слой DTD.
Книги DocBook состоят из смеси следующих компонентов: Посвящение (dedication). Посвящение, как правило, расположено в начале книги. Навигационные компоненты. Навигационных компонентов немного: toc (Tables of Contents – Содержание), lot (Lists of Titles – списки иллюстраций, таблиц, примеров и т.д.) и index – для указателей. Разделы Раздел – верхний уровень иерархии книги. Разделы могут представлять собой либо части (part), либо т.н. справочные разделы (происходящие от формата руководств – man pages – Unix) – reference. Части содержат компоненты, а справочные разделы – элементы справки (refentry). Компоненты. Компоненты представляют собой «главоподобные» составляющие книги или части книги (book или part). В основном, это предисловие (preface), глава (chapter), приложение (appendix), словарь (glossary), указатель (index), и список литературы (bibliography). В состав компонентов может входить статья (article) и некоторые другие элементы (навигационные компоненты). Компоненты обычно содержат блочные элементы и/или секции, а также могут содержать навигационные компоненты и элементы справки.
Секции Секции подразделяют главоподобные элементы на более мелкие составляющие (разделы, пункты и т.д.). В DocBook есть несколько видов секционирующих элементов. sect1 ... sect5
Эти элементы используются чаще всего. Они должны быть правильно вложены: sect2 может встречаться только внутри sect1, sect3 – внутри sect2 и т.д. Разрешено использовать только пять уровней вложенности. Преимущество использования секций с явным указанием уровня вложенности в возможности независимой автоматической нумерации секций при их визуализации (например, section1 нумеруется с использованием римских цифр, section2 – с использованием арабских цифр, а section3 – с использованием букв). Реализация подобных решений для элемента section, допускающего произвольный уровень вложенности, гораздо сложнее. section
Это альтернатива секциям с нумерованным уровнем. Элементы section могут иметь любой уровень вложенности. simplesect
Это «финальная» секция. Она может появляться на любом уровне вложенности, но сама не может содержать никакой секционирующий элемент.
bridgehead
«Предмостное укрепление» – служит для размещения заголовка секции без создания собственно секции (заголовок без содержимого). refsect1 ... refsect3
Эти секционирующие элементы могут появляться только в элементе справки – refentry. В справке допускается только три уровня вложенности секций. glossdiv, bibliodiv и indexdiv
Словари, списки литературы и индексы могут содержать только один уровень секци‐ онирования. Эти элементы не допускают вложенности.
Метаинформация Большинство элементов на уровне секций и выше могут содержать «обёртку» для метаин‐ формации. Как правило, имя элемента такой обёртки образуется как конкатенация имени соответствующего элемента (set, book, ... sect5) и слова info: setinfo, bookinfo, sect5info. Метаинформация включает библиографическую информацию (автор, заглавие, издатель и т.д.), а также и другие метаданные, например, историю изменений, ключевые слова, термины для индексирования и пр.
Блочные элементы Компоненты и секции непосредственно содержат блочные элементы. Грубо говоря, блочные элементы – это элементы уровня абзаца. Блочные элементы подразделяются на несколько категорий: списки замечания строко‐ориентированные элементы разного рода аннотации таблицы иллюстрации примеры разные (около дюжины элементов)
На уровне абзаца принято выделять два класса элементов: блочные и потоковые. Со струк‐ турной точки зрения, различие базируется, в основном, на величине элемента, но проще описывать эти классы элементов с точки зрения их визуализации. Блочные элементы обычно визуализируются в виде абзаца (или более крупного визуального компонента) с отбивками перед и после него. Многие блочные элементы могут содержать другие блочные элементы. Многие блочные элементы также могут содержать символьные данные и потоковые элементы. Наиболее часто встречающиеся примеры блочных элементов (в скобках приведены не имена соответствующих элементов DocBook, а английские названия блочных элементов): абзац (paragraph), заметка на полях (sidebar), таблица, блочная цитата (block quotation). Потоковые элементы обычно не содержат отбивок. Для визуализации поточных элементов наиболее характерно изменение шрифта, но поточный элемент может совершенно не выделяться при визуализации. Потоковые элементы содержат символьные данные и, возможно, другие потоковые элементы, но никогда не содержат блочные элементы. Поточные элементы используются для разметки таких данных, как перекрёстные ссылки, имена файлов, код, опции, индексы (верхние и нижние), словарные термины и т.п.
Списки DocBook содержит несколько видов списков: calloutlist
Список выносок (к графическим и другим вынесенным из контекста элементам). glosslist
Список словарных терминов и их определений. Используется тогда, когда важна семантика словаря (например, в документе присутствует словарь – glossary, – и из него есть ссылки на помещенную в список информацию). Если семантика списка терминов и определений не связана со словарём, то следует использовать variablelist. itemizedlist
Неупорядоченный (маркированный) список. Элемент имеет атрибуты, позволяющие управлять маркерами. orderedlist
Нумерованный список. Элемент имеет атрибуты, позволяющие управлять способом нумерации. segmentedlist
Повторяющийся набор именованных сущностей (не XML‐сущностей). Пример: субъекты Российской Федерации и их столицы.
simplelist
Список «без украшений». Такие списки могут быть потоковыми или визуализироваться в несколько столбцов. variablelist
Список терминов и их определений и описаний. Используется вне связи со словарем (элемент glossary). Все использованные списки могли бы быть описаны как variablelist. Замечания (Admonitions) DocBook содержит 5 видов замечаний: «обратите снимание» (caution), «важно» (important), «замечание» (note), «совет» (tip), и «предупреждение» (warning). Семантика замечаний не связана с их названиями. Все эти элементы имеют одну и ту же структуру: необязательный заголовок (title), за которым следуют элементы уровня абзаца.
Строко‐ориентированные элементы Строко‐ориентированные элементы предназначены для передачи пробельного материала (включая переводы строк), содержащегося в символьных данных. DocBook не имеет аналога (из HTML), так что DocBook не позволяет произвольно вставить разрыв строки в поток текста. address
Предназначен для почтовых адресов (с учетом разбивки на строки для печати на конверте). Содержит дополнительные элементы для разметки имён и элементов адреса. literallayout
Строко‐ориентированный элемент без определенной семантики. programlisting
Используется для исходного текста программ, фрагментов кода и подобных листингов. Обычно выводится моноширинным шрифтом. screen
Используется для передачи моноширинного вывода. Часто применяется как универсальный строко‐ориентированный элемент.
screenshot
Обёртка для элемента graphic, предназначенная для описания изображений (части) экрана. synopsis
Предназначен для описаний функций (языков программирования) и команд (оболочек операционных систем и других приложений). Примеры, иллюстрации и таблицы Примеры, иллюстрации и таблицы – часто используемые блочные элементы: example, informalexample, figure, informalfigure, table и informaltable. Различие между «формальными» и «неформальными» элементами заключается в том, что формальные элементы имеют заглавия, а неформальные – нет. Абзацы para, simpara и formalpara
Существует три вида абзацев. Простой абзац (simpara) не может содержать другие блочные элементы. Формальный абзац имеет заглавие.
Уравнения equation и informalequation
Уравнения. Для поточных уравнений (формул) используется inlineequation. Графические элементы graphic, figure, mediaobject
Для поточных иллюстраций используются inlinegraphic и inlinemediaobject. В DocBook 5.0 graphic отсутствует. FAQ qandaset
Список вопросов и ответов и аналогичные списки.
Потоковые элементы DocBook предоставляет много различных потоковых элементов. На практике авторы ис‐ пользуют не все, а только необходимые потоковые элементы, поскольку использование большого числа разнообразных потоковых элементов требует значительных затрат времени. При этом обычно размечаются не все отрезки текста, которые можно было разметить, а только те, разметка которых абсолютно необходима. В приводимом ниже списке потоковых элементов я сохраню их классификацию, приведенную в Ошибка! Источник ссылки не найден., при этом некоторые элементы попадают в несколько категорий. Приводимый мной список не является исчер‐ пывающим, полный список потоковых элементов приведен в книге Н.Уолша Ошибка! Источник ссылки не найден..
Традиционные типографские потоковые элементы Эти элементы предназначены для выделений, встречающихся в большинстве публикаций. abbrev
Аббревиатура, как правило, оканчивающаяся точкой. acronym
Сокращение, образованное из заглавных (или некоторых) букв фразы (или слова), например РФ – Российская Федерация. emphasis
Выделение. footnote
Сноска. Положение сноски в визуализованном документе (в нижней части страницы, в конце документа или другое) определяется стилевым файлом (например, XSLT). На ту же сноску возможны ссылки из других мест документа. Для этого используется элемент footnoteref. phrase
Сегмент текста. Аналог span из HT ML. quote
Потоковая цитата. trademark
Упоминание торговой марки.
Перекрестные ссылки Перекрестные ссылки позволяют разметить как явные (link), так неявные (glossterm) пе‐ рекрестные ссылки. Неявные перекрестные ссылки могут быть сделаны явными в результате визуализации, если у соответствующих элементов присутствует атрибут linkend. anchor
Место в документе. Аналог в HTML. citerefentry
Ссылка на страницу справочного руководства. firstterm
Первое появление термина в документе. glossterm
Упоминание словарного термина. link
Внутренняя ссылка в документе. ulink
Внешняя ссылка (с использованием URL). xref
Ссылка на часть документа
Разметка Потоковые элементы этой группы используются для особой обработки при выводе. foreignphrase
Слово или фраза на языке, отличном от основного языка документа. wordasword
Слово дословно. computeroutput
Данные, выводимые компьютером. markup
Разметка, которую нужно трактовать не как разметку, а как выводимый текст. prompt
Приглашение ввода данных. replaceable
То, что должно быть заменено пользователем, «местозаместитель» (например, в шаблоне). userinput
Текст, вводимый пользователем.
Математика DocBook не предоставляет достаточно полного набора элементов для разметки произвольных математических выражений. Если необходимо, можно воспользоваться пространством имён MathML (приложение XML, позволяющее размечать математические тексты). inlineequation
Формула. subscript
Нижний индекс, как в H2O. superscript
Верхний индекс, как в x2 или U235. Интерфейс пользователя accel
Горячая клавиша. guibutton
Текст на кнопке. guilabel
Подпись к элементу управления.
guimenu
Название меню. guimenuitem
Текст позиции меню. keycap
Название клавиши, написанное на клавише. keycode
Код (как правило, числовой), генерируемый при нажатии клавиши. keysym
Символическое обозначение клавиши. menuchoice
Последовательность выборов из меню. mousebutton
Название кнопки мыши. shortcut
Комбинация горячих клавиш.
Языки программирования Многие элементы разметки этой категории соответствуют английским названиям соответ‐ ствующих конструкций распространенных языков программирования. classname
Имя класса в объектно‐ориентированном языке программирования. constant
Константа. errorcode
Код ошибки. errorname
Название ошибки. errortype
Тип ошибки. function
Имя функции или процедуры. interface
Элемент графического интерфейса пользователя.
literal
Литерал. msgtext
Текст сообщения. parameter
Значение или символическая ссылка на значение (передаваемое куда‐то). property
Единица данных, связанная с какой‐либо частью компьютерной системы. replaceable
То, что должно быть заменено пользователем, «местозаместитель» (например, в шаблоне). returnvalue
Значение, возвращаемое функцией. structfield
Поле структуры (член, свойство объекта). symbol
Имя, которое будет заменено на значение перед обработкой, идентификатор.
token
Единица обрабатываемой информации, лексема. type
Тип данных. varname
Имя переменной.
Операционные системы Эти потоковые элементы предназначены для идентификации компонентов операционной системы или среды. application
Название программы или комплекта программ. command
Команда операционной системы или оболочки. envar
Имя переменной среды окружения. filename
Имя файла. medialabel
Надпись на физическом носителе данных. msgtext
Текст сообщения.
option
Опция, выбираемый параметр (например, в конфигурационном файле или в интерфейсе настройки). prompt
Приглашение ввода данных. systemitem
Фраза или термин, относящиеся к системе.
Потоковые элементы универсального технического применения application
Название программы или комплекта программ. database
База данных или её часть. email
Адрес электронной почты. filename
Имя файла. hardware
Текст, относящийся к физическому компоненту компьютерной системы. inlinegraphic
Ссылка на потоковое изображение. optional
Необязательная информация.
Компоненты книги Рассмотрим некоторые составляющие книги более подробно. Многие элементы (например, связанные с описанием персоны) могут использоваться в раз‐ личных местах издания. Я рассмотрю такие элементы в том месте, в котором они встретятся впервые (например, информация об авторе – author – и другие элементы, связанные с размет‐ кой информации о персоне, будут рассмотрены при знакомстве с элементом bookinfo). Многие элементы имеют аналогичную модель содержания: в них используются символьные данные и некоторые потоковые элементы. ::= (#PCDATA|link|olink|ulink|emphasis|trademark|replaceable|remark| subscript|superscript|inlinegraphic|inlinemediaobject|indexterm)*
В качестве могут выступать составные части имени, названия организации, адреса и пр. Элементы с таким содержимым я буду называть «элементами с символьно‐смешанным содержимым» (калька с имени соответствующей параметрической сущности, позволяющая отличить такой элемент от произвольного элемента XML со смешанным содержимым).
В DTD DocBook для содержимого таких элементов используется параметрическая сущность:
Параметрическая сущность local.docinfo.char.mix по умолчанию содержит пустую строку. Назначение других параметрических сущностей очевидно: ссылки, комментарии и индексы (верхние и нижние), термины для построения указателей:
Общие характеристики элементов Все элементы (как книги, так и комплекта, статьи и пр.) имеют некоторые общие характе‐ ристики, прежде всего, набор необязательных атрибутов, которые могут быть у каждого элемента, и т.н. ожидания обработки.
Ожидания обработки Стандарт DocBook для каждого элемента определяет т.н. “Processing expectations” – «Ожидания обработки» – то, что следует ожидать от визуализации элемента. Эти ожидания обработки следует принимать во внимание при подготовке размеченных документов.
Общие атрибуты Таких атрибутов 14: Имя атрибута
Тип значения атрибута
arch
CDATA
condition
CDATA
conformance
NMTOKENS
id
ID
Описание Используется для обозначения архитектуры компьютера, к которой относится элемент. Применяется в документации Для использования в конкретных приложениях – на усмотрение пользователя Указание на соответствие стандартам для того элемента, к которому атрибут относится. На усмотрение пользо‐ вателя Для некоторых элементов – обязательный. Уникальный идентификатор элементы в документе
Имя атрибута
Тип значения атрибута
lang
CDATA
os
CDATA
remap
CDATA
role
CDATA
revision
CDATA
revisionflag
(Changed| Added| Deleted| Off)
security userlevel
CDATA CDATA
Описание Двухсимвольное обозначение языка по ISO 639, за которым может следовать (через дефис) необязательное двухсимвольное обозначение страны по ISO 3166, напр., en‐US. Используется тогда, когда необходимо изменить характеристики визуализации документа (правила пе‐ реноса, кавычки и пр.). Используется для обозначения операционной системы, к которой относится элемент. Применяется в докумен‐ тации Для связи с другими методами разметки. Должен содержать имя элемента или аналогичный по смыслу идентификатор объекта разметки, который соответствует данному элементу при другом методе разметки Используется для классификации. Наборы ролей для различных групп элементов могут различаться Редакция. Номер редакции документа, к которой при‐ надлежит элемент Статус редакции элемента. Следует использовать исключительно для пометки изменений статуса от одной редакции к другой; для управления версиями должна использоваться полноценная система управления версиями (CVS, Subversion или что‐либо аналогичное) Уровень допуска (секретность) Уровень опытности пользователя, для которого элемент предназначен
Имя атрибута
Тип значения атрибута
vendor
CDATA
xreflabel
CDATA
Описание Поставщик оборудования или программного обеспече‐ ния, к оборудованию или программному обеспечению которого относится элемент Имя для построения ссылок (аналог в HTML)
Все рассматриваемые мной элементы имеют необязательные атрибуты, не входящие в число общих. Ниже будут представлены не все эти атрибуты.
book book ::= ((title,subtitle?,titleabbrev?)?, bookinfo?, (dedication|toc|lot|glossary|bibliography|preface|chapter| reference|part|article|appendix|index|setindex|colophon)*)
Книга начинается с необязательной последовательности заглавия, подзаголовка и сокращенного заглавия. Последние два компонента в этой тройке могут отсутствовать. Далее идёт необязательная метаинформация (bookinfo), за которой следует собственно содержимое книги: смесь посвящений, оглавлений, различных словарей, указателей, списков литературы, справочной информации, частей и глав и даже концовки (colophon), обычно печатаемой на обратной стороне обложки. Дело автора навести в этом произволе порядок, придерживаясь определенной иерархии и последовательности разметки текста.
Ожидания обработки Книга форматируется как блок. Этот блок обычно начинается с новой страницы (важно для комплекта); нумерация страниц в нём начинается с начала (важно для комплекта); для книги, возможно, генерируются обложка, титульные листы, оглавления, указатели и пр. Порядок основных компонентов книги должен соответствовать желательному порядку визуализации.
Атрибуты Элемент book имеет три необязательных атрибута: Имя атрибута Тип значения атрибута fpi
CDATA
label
CDATA
status
CDATA
Описание Формальный публичный идентификатор книги (в настоя‐ щее время в XML‐версии DocBook не используется) Метка может быть использована для целее визуализации. Например, третий том в комплекте мог бы иметь метку "Том 3". Используется тогда, когда система печатной подготовки не может самостоятельно сгенерировать аналог метки. Если атрибут label указан, то он должен иметь приоритет над теми аналогами метки, которые будут сгенерированы системой печатной подготовки Состояние публикации (черновик, в работе, чистовой вариант и т.п.)
title Элемент title – заглавие – может использоваться не только в книге, но и примерно в сотне других элементов DocBook. Заглавие имеет смешанное содержимое: наряду с текстом
(символьными данными) в элементе title могут быть использованы более сотни других элементов (потоковых: являющихся отсылочными, размечающими компоненты программного обеспечения, персон и пр.).
Ожидания обработки Поскольку заглавие какого‐то элемента может воспроизводиться во многих местах книги, то единственное требование – заглавие должно визуализироваться как блок. К сожалению (или к счастью) управлять разрывами строк в заглавии невозможно (именно потому, что одно и то же заглавие может появиться в нескольких местах визуализированной книги).
bookinfo Элемент bookinfo, подобно многим элементам с суффиксом info, содержит метаинфор‐ мацию. Он может включать около 70 других элементов, наиболее частыми из которых являются: legalnotice (заявление о юридических требованиях или обязательствах)
различные варианты ключевых слов (предметные рубрики – subjectset, термины указа‐ телей – itermset, ключевые слова неконтролируемой лексики – keywordset) аннотация (abstract) автор или группа авторов (author или authorgroup) коллективный автор (corpauthor) библиографическая информация информация о конференции сведения о контракте информация об авторских правах сведения о дате и номере издания, об издателе сведения о продукте (оборудовании, программном обеспечении), к которым относится книга
Ожидания обработки Не визуализируется.
Атрибуты Имя атрибута Тип значения атрибута contents
IDREFS
Описание Список идентификаторов всех главоподобных элементов книги в том порядке, в котором они входят в книгу
author Информация об индивидуальном авторе: 1 2 3 4 5
author ::= ((personname| (honorific|firstname|surname|lineage|othername|affiliation| authorblurb|contrib)+), (personblurb|email|address)*)
Таким образом, элемент author состоит из двух частей. Сначала (строки 2–4) идёт либо элемент personname (содержащий только личную информацию о персоне, см. ниже), либо подробное описание персоны (смесь элементов, описывающих персону, в любом количестве и в любом порядке (см. ниже), – важно, чтобы хотя бы один элемент присутствовал). Затем (строка 5 правила) идёт необязательная смесь описательной информации о персоне (personblurb), электронных и почтовых адресов.
Ожидания обработки Зависят от контекста: может быть потоковым элементом, блоком или не визуализироваться.
personname Данные об имени персоны: personname ::= ((honorific|firstname|surname|lineage|othername)+)
Ожидания обработки Зависят от контекста: может быть потоковым элементом, блоком или не визуализироваться.
surname, firstname, othername Фамилия, имя и т.н. «другие имена» (в русском языке сюда попадает отчество). Удивительным образом DocBook использует для этих элементов символьно‐смешанное содержимое, позволяя в каждом из этих элементов использовать массу возможностей, а не только текст (символьное содержимое – #PCDATA, впрочем, наличие indexterm вполне естественно – для составления указателей): firstname ::= (#PCDATA|link|olink|ulink|emphasis|trademark|replaceable|remark| subscript|superscript|inlinegraphic|inlinemediaobject|indexterm)*
Правила для surname и othername содержат точно такие же правые части.
Ожидания обработки Потоковое форматирование (как правило).
lineage Часть имени, описывающая отношение к предкам (напр., «мл.»; в случае царствующих особ – номер при имени; и т.п.). Содержание элемента lineage такое же, как и у других элементов имён (символьно‐смешанное), ожидания обработки – такие же: lineage ::= (#PCDATA|link|olink|ulink|emphasis|trademark|replaceable|remark| subscript|superscript|inlinegraphic|inlinemediaobject|indexterm)*
honorific Титул (звание и пр.). По составу и ожиданиям обработки совпадает с другими элементами имени (символьно‐смешанное содержимое).
authorblurb, personblurb Названия этих элементов происходят от blurb – краткая издательская реклама или аннотация (часто помещаемая на обложку книги). Оба этих элемента содержат необязательное заглавие, за которым следуют обычные абзацы: authorblurb ::= (title?, (formalpara|para|simpara)+) personblurb ::= (title?, (formalpara|para|simpara)+)
Ожидания обработки Блок или подавление визуализации.
affiliation Принадлежность персоны к организации. affiliation ::= (shortaffil?,jobtitle*,orgname?,orgdiv*,address*)
Необязательное краткое описание (shortaffil – символьно‐смешанное содержимое), за которым следуют должность (jobtitle), название организации (orgname), название подразделения (orgdiv) и адрес (address). Любой из последних четырех элементов может отсутствовать, но хотя бы один из них должен быть. Должностей, подразделений и адресов может быть несколько, но организация, если она указана, – только одна. Содержимое jobtitle и orgdiv символьно‐смешанное, элементы orgname и address обладают особыми атрибутами, а address – ещё и иной структурой.
Ожидания обработки Зависят от контекста: может быть потоковым элементом, блоком или не визуализироваться.
orgname Название организации имеет символьно‐смешанное содержимое: orgname ::= (#PCDATA|link|olink|ulink|emphasis|trademark|replaceable|remark| subscript|superscript|inlinegraphic|inlinemediaobject|indexterm)*
Для организаций вне элемента affiliation лучше использовать элемент corpname, по составу совпадающий с affiliation, но не имеющий специальных атрибутов.
Атрибуты Имя атрибута
Тип значения атрибута
otherclass
CDATA
class
(consortium| corporation| informal| nonprofit| other)
Описание Строка, описывающая тип организации, если значение атрибута class равно "other" Тип организации. Умолчание отсутствует.
address Адрес может содержать множество составляющих (в произвольном количестве и произвольном порядке: address ::= (#PCDATA|personname|honorific|firstname|surname|lineage|othername| affiliation|authorblurb|contrib|street|pob|postcode|city|state| country|phone|fax|email|otheraddr)*
Каждый элемент адреса имеет символьно‐смешанное содержимое.
Атрибуты Имя атрибута linenumbering
language xml:space continuation
format
Тип значения атрибута (numbered| unnumbered)
CDATA
(preserve) (continues| restarts)
(linespecific)
Описание linenumbering = "numbered" требует нумеро‐ вать строки адреса, linenumbering = "unnumbered" отменяет нумерацию. Положе‐
ние номеров строк определяется обрабаты‐ вающим приложением. Назначение не описано Сохранение пробельного материала Если continuation = "continues", то нуме‐ рация строк адреса (если linenumbering = "numbered") продолжается от номера последней строки предыдущего элемента address, иначе начинается с 1.
Умолчание: "linespecific". Означает, что пробельный материал должен быть сохранён (видимо, рудимент SGML)
Имя атрибута startinglinenumber
Тип значения атрибута CDATA
Описание Начальный номер строки адреса (при нумерации)
Обработка документов DocBook с помощью стилевых файлов XSLT Для изучения существующих способов обработки документов DocBook с помощью стилевых файлов XSLT существуют два источника: свободно распространяемый набор стилевых файлов DocBook XSL (в последней стабильной версии 1.69.1 от 11 августа 2005 г. – 1934 файла общим объемом более 14 Мб) и книга Б.Сейтона Ошибка! Источник ссылки не найден.. Любая книга отстаёт от развития программного обеспечения; книга Сейтона – не исключение (последние изменения в неё внесены в феврале 2005 г.).
Стандартный набор стилевых файлов Стандартный набор стилевых файлов DocBook (DocBook XSL) предоставляет разнообразные возможности визуализации документов DocBook: HTML, XHTML (оба варианта – как один большой файл или как набор нескольких меньших файлов), HTML Help и JavaHelp, Formatting Objects для непосредственного вывода на печать и получения PDF. Этот набор файлов можно скачать с http://docbook.sourceforge.net.
Архив, содержащий DocBook XSL, содержит следующие каталоги (эту же структуру следует сохранить при его распаковке): common
Общие модули всех стилевых файлов (включая настройку на язык) extensions
Программы, необходимые для расширения возможностей DocBook XSL для конкретных XSLT‐процессоров fo
Модули для получения вывода в формате XSL‐FO html
Модули для получения вывода в формате HTML images
Значки и другие изображения, используемые при порождении вывода lib
Компоненты, не зависящие от DTD Этот архив содержит также и другие каталоги, содержащие модули, предназначенные для получения других видов вывода и использования DocBook XSL с некоторыми распро‐ страненными приложениями (например, Eclipse).
Документация DocBook XSL поставляется отдельным архивом, который содержит два каталога: doc
Документация в HTML‐формате (фактически, часть книги Ошибка! несколько устаревшая)
,
Источник ссылки не найден.
docsrc
Документы DocBook, из которых получена документация. Кроме поддержки распространенных форматов вывода, существует отдельный набор стилевых файлов, обеспечивающий поддержку веб‐сайтов, получаемых из документов DocBook, – DocBook Website. Комплект DocBook XSL может быть распакован в любой каталог файловой системы, однако для его эффективного использования может понадобиться настройка XML‐каталога. Для применения DocBook XSL необходим XSLT‐процессор (например, встроенный в Windows MSXML), а для получения Formatting Objects и/или PDF – и другие программные средства (XSL‐ FO‐процессор, Adobe Acrobat или иные средства генерации PDF).
Использование параметров DocBook XSL DocBook XSL имеет огромное количество параметров, которые позволяют в значительной мере изменять поведение DocBook XSL при генерации вывода (в основном эти параметры относятся к порождению вывода, предназначенного для печати – FO или PDF). Для многих XSLT‐процес‐ соров эти параметры можно задавать в командной строке, но если таких параметров много, то следует применить т.н. «слой настройки» (“customization layer”) – собрать параметры в один или несколько файлов («обёртки»). Например, задать стилевой файл для порождаемого HTML и задать особое выделение для предупреждений в тексте можно так:
Этот файл следует присоединить к документу DocBook или использовать в командной строке XSLT‐процессора. Значения всех строковых параметров должны заключаться в апострофы (обратите внимание на то, что имя стилевого файла CSS записано как 'corpstyle.css').
При использовании слоя настройки DocBook XSL следует обращать внимание на использование путей: XSLT‐процессор не всегда считает, что рабочий каталог совпадает с тем, в котором находится обрабатываемый документ, так что рекомендуется использовать URL с абсолютными путями, например: В документе DocBook:
В стилевом файле my.xsl:
Настройка порождения HTML Порождение HTML‐документа из документа DocBook может быть параметризовано для: Разбиения одного документа DocBook на несколько HTML‐файлов Обработки части документа DocBook (например, одной книги из комплекта) Перекодирования документа в другую кодировку с указанием кодировки Подключения CSS к выходному документу Изменения способов нумерации глав и/или секций Указания графических изображений для предупреждений, навигации (в случае порождения нескольких HTML‐документов) и выносок Форматирования дат и времени (не работает с MSXML, – XML‐процессором, по умолчанию используемом в Windows)
Подключение CSS к выходному HTML-документу Подключение CSS к выходному HTML‐документу проиллюстрировано выше. Для использования CSS необходимо знать, какие элементы HTML из каких элементов DocBook порождаются. Проще всего выяснить это, выполнив XSL‐преобразование, поскольку от версии к версии DocBook XSL это соответствие может изменяться. Вот некоторые соответствия для версий DocBook 4.2 и DocBook XSL 1.69.1: bookinfo bookinfo bookinfo bookinfo bookinfo part part
title
chapter
title ⇒ h1 class="title" subtitle ⇒ h2 class="subtitle" author ⇒ div class="author" author firstname ⇒ h3 class="author" author lastname ⇒ h3 class="author"
⇒ ⇒
div class="part" Part Title
⇒
div class="chapter"
chapter
section1 section1
para emphasis phrase
title
title
⇒
Chapter Title
⇒ ⇒
div class="section1" Section1 Title
⇒ ⇒ ⇒
p em span
Обратите внимание на то, что и заголовки глав и заголовки секций первого уровня в HTML преобразуются в заголовки второго уровня, и, если вы хотите, чтобы они выглядели по‐разному, нужно тщательно проектировать CSS: div.chapter div.titlepage h2.title { font-size: 16pt; } div.section1 div.titlepage h2.title { font-size: 14pt; }
Подавление локальных оглавлений средствами CSS Без дополнительной настройки DocBook XSL порождает оглавления для каждого структурного раздела документа: глав и секций любого уровня. Зачастую это нежелательно. Простейший способ подавить визуализацию такого оглавления (не порождение, а именно только визуализацию) – использовать CSS, поскольку оглавления помещаются в отдельные идентифицируемые блоки: div class="toc"
помещённые внутрь блока структурного раздела. Например, чтобы подавить визуализацию оглавления от уровня частей книги и глубже, достаточно использовать следующий стиль: div.part div.toc { display: none; }
Для выборочного отображения оглавлений придётся потрудиться. Например, для подавления визуализации оглавлений на уровне частей, но вывода оглавлений на уровне глав придется использовать div.part div.toc { display: none; } div.chapter div.toc { display: block; }
Пользовательские классы Для четырёх элементов DocBook возможно автоматическое преобразование атрибута role в класс CSS. Это элементы para (абзац), emphasis (выделение), phrase (фраза) и entry (ячейка таблицы). Для включения такого преобразования в стилевой файл – обёртку XSLT – следует добавить строки вида (пример приведён для абзаца):
а в стилевой файл CSS – требуемый стиль: p.special { background-color: rgb(128,255,64); }
Тогда абзацы (элементы документа DocBook) с атрибутом role="special" при выводе приобретут зеленоватый цвет. Поскольку элемент phrase не имеет в DocBook строго определенной семантики, то исполь‐ зование этого элемента с различными классифицирующими ролями позволяет разработать т.н. «микроформат» – собственную систему классов CSS, передающую семантику предметной области документа. DocBook XSL может передавать в HTML и значения атрибута id, однако возможности такой передачи ограничены небольшим набором элементов уровня главы и выше.
Управление нумерацией Для подавления нумерации главоподобных элементов или секций в XSLT‐обёртку следует включать строки вида:
Вместо chapter может стоять имя любого элемента, для которого необходимо подавить нумерацию (appendix, section и т.п.). Можно подавить нумерацию на определённой глубине вложенности элементов:
Тонкая настройка DocBook XSL DocBook XSL, как уже говорилось, имеет большое количество настроек. Здесь мы рассмотрим только две из них: настройку языка и настройку оглавлений.
Указание языка DocBook XSL содержит служебные текстовые строки для порождения элементов заголовков (например, «Глава») на 45 языках. Для применения необходимого языка соответствующий элемент должен иметь необходимое значение атрибута lang: . . .
Но вместо этого можно использовать параметр DocBook XSL, управляющий локализацией порождаемого текста:
Замечание Программный продукт Authentic компании Altova поставляется с устаревшим набором файлов DocBook XSL, не поддерживающим локализацию.
Управление оглавлениями Для управления оглавлениями DocBook XSL использует параметр generate.toc. В отличие от большинства других параметров DocBook XSL, этот параметр является непустым элементом, например (значения по умолчанию): appendix toc,title article/appendix nop article toc,title book toc,title,figure,table,example,equation chapter toc,title part toc,title preface toc,title qandadiv toc qandaset toc reference toc,title sect1 toc sect2 toc sect3 toc sect4 toc sect5 toc section toc set toc,title
Значение этого параметра – пары, разделённые пробельным материалом (ведущие пробелы не учитываются). Первый элемент пары – имя элемента, второй – список подпараметров, указыва‐ ющий, какое именно оглавление будет сформировано для этого элемента (частный случай – никакого). В списке подпараметров возможно использование следующих значений: toc
Следует генерировать оглавление (из заглавий вложенных элементов) nop
Не генерировать оглавление title
Включать заглавие оглавления, например, «Содержание» figure,table,example,equation ...
Перечень элементов, для которых следует генерировать оглавление (указатель) В качестве разделителя в списке подпараметров используется запятая, пробелы не допускаются.
Управление глубиной оглавления Глубиной оглавления можно управлять при помощи параметра toc.section.depth:
выводит в оглавление книги только список глав и полностью подавляет оглавления в главах; положительные значения toc.section.depth определяют уровень вложенности секций, до которого заглавия секций включаются в оглавление. По умолчанию параметр toc.section.depth имеет значение 2., т.е. в оглавления выводятся заглавия двух верхних уровней секций. Рассмотренный параметр управляет «абсолютной» глубиной используемых в оглавлениях заголовков. DocBook XSL позволяет использовать и другой параметр, toc.max.depth, управляющий «относительной» глубиной:
заставит XSLT‐преобразование вывести во все оглавления заглавия (глав/секций) не более чем на два уровня вглубь.
Выборочное исключение заглавия элемента из оглавления Для выборочного исключения заглавия элемента из оглавления используется атрибут role. Если, например, значение этого атрибута, равное 'NotInToc', должно означать, что заголовок соответствующей секции не должен попадать в оглавление, в XSLT‐обёртку следует добавить правило:
которое фактически отключит порождение строки оглавления для секции с указанным значением атрибута role. Оглавления секций В приведённом на предыдущей странице параметре generate.toc по умолчанию секции всех уровней имеют оглавления. Однако рассмотрение реально сгенерированного вывода показывает, что секции оглавлений не имеют. Такое поведение связано с наличием ещё одного настроечного параметра – generate.section.toc.level, определяющего глубину вложенности секции, для которой будет создано оглавление. Оглавление также может отсутствовать из‐за того, что включение необходимых заглавий подавлено параметром toc.section.depth. Параметры generate.section.toc.level, toc.section.depth и toc.max.depth позволяют гибко управлять видимостью заголовков в оглавлениях. Их взаимодействие проще всего представить на следующих примерах:
Таблица 1 Управление глубиной оглавлений (generate.section.toc.level / toc.section.depth) – абсолютный уровень включаемых секций generate.section.toc.level
toc.section.depth
2 1
3 4 2
2
3 4 2
3
3 4
Оглавление секции включает: sect1 sect2 sect2 sect3 sect2 sect3 sect4 sect2 sect2 sect3 sect2 sect3 sect4 sect2 sect2 sect3 sect2 sect3 sect4
sect2
sect3
sect4
Пусто Пусто Пусто Пусто Пусто Пусто Пусто Пусто Пусто Пусто Пусто Пусто sect3
Пусто Пусто
sect3 sect4
Пусто Пусто
Пусто Пусто Пусто sect3
Пусто Пусто
sect3 sect4 sect4
Пусто
Таблица 1 построена в предположении, что параметр toc.max.depth имеет достаточно большое значение.
Таблица 2 Управление глубиной оглавлений (generate.section.toc.level / toc.max.depth) – относительный уровень включаемых секций generate.section.toc.level
toc.max.depth 1 2
1 3 1 2 2 3 1 2 3 3
Оглавление секции включает: sect1 sect2 sect2 sect3 sect2 sect3 sect4 sect2 sect2 sect3 sect2 sect3 sect4 sect2 sect2 sect3 sect2 sect3 sect4
sect2
sect3
sect4
Пусто
Пусто
Пусто
Пусто
Пусто
Пусто
Пусто
Пусто
Пусто
sect3 Пусто sect3 Пусто sect4 sect3 sect4 Пусто sect5 sect3 sect4 sect3 sect4 sect4 sect5 sect3 sect4 sect4 sect5 sect5 [sect6]
Пусто Пусто Пусто Пусто Пусто Пусто
Таблица 2 построена в предположении, что параметр toc.section.depth имеет достаточно большое значение.
TEI Основное назначение TEI, в отличие от DocBook, заключается не в передаче логической структуры документа, а в выделении в документе тех его составляющих, которые необходимы для конкретных целей (исследования, поиска и пр.). При этом могут оставаться без внимания (и, следовательно, без разметки) многие другие элементы структуры текста. Как и DocBook, TEI позволяет размечать документы различного уровня: от корпуса (собрания документов, не имеющего аналога в DocBook) до фрагмента технической документации. TEI, в отличие от DocBook, не представляет собой единственное объявление типа документа. TEI имеет модульную структуру, позволяющую собирать DTD для конкретного применения из нескольких десятков модулей. Для управления такой сборкой в TEI использован механизм условных разделов DTD. Поэтому сначала рассмотрим этот механизм.
Ещё несколько слов про XML Общая структура DTD содержит внешнее и внутреннее ограничения (Ошибка! разд. 2.8):
,
Источник ссылки не найден.
'' ExternalID указывает на внешний по отношению к DTD ресурс (URL или файл), содержащий
часть объявлений (сущностей, элементов и атрибутов); текст этого ресурса называется внешним ограничением (для того XML‐документа, который будет связан с рассматриваемым DTD); intSubset содержит объявления, обладающие приоритетом по отношению к объявлениям,
содержащимся во внешнем ограничении; эта совокупность объявлений называется внутренним ограничением. В принципе, структура текста внутреннего и внешнего ограничений имеет единственное отличие (Ошибка! Источник ссылки не найден., разд. 2.8): в части DTD, вынесенной во внешнее ограничение (или во внешние параметрические сущности) допускается использование так называемых условных разделов (conditional sections): intSubset
::= ( markupdecl | DeclSep)*
extSubsetDecl ::= ( markupdecl | conditionalSect | DeclSep)* markupdecl представляет объявления (сущностей, элементов и атрибутов); DeclSep – разделители (пробельный материал, инструкции обработки и комментарии);
conditionalSect – те самые условные разделы, которые мы сейчас и рассмотрим.
Условные разделы объявления типа документа Условный раздел имеет следующую структуру (следующие 5 правил приведены в Ошибка! ссылки не найден., разд. 3.4; я сохранил нумерацию правил): [61] [62] [63] [64] [65]
Источник
conditionalSect ::= includeSect | ignoreSect includeSect ::= '' ignoreSect ::= '' ignoreSectContents ::= Ignore ('' Ignore)* Ignore ::= Char* - (Char* ('') Char*)
Интерпретация этих правил проста: [61] – условный раздел может представлять включаемый или исключаемый раздел. [62] – включаемый раздел оформляется как начало DTD ( ]]> ]]>
Приведённый пример иллюстрирует использование условных разделов объявления типа документа: в DTD включается весь текст, который может/должен быть использован в различных ситуациях применения DTD, сами ситуации обозначаются параметрическими сущностями, имеющими значения INCLUDE или IGNORE; части текста DTD, которые должны быть использованы в соответствующей ситуации, включаются в раздел, в котором вместо ключевых слов INCLUDE или IGNORE использована ссылка на параметрическую сущность. Замена значений сущностей изменит DTD:
TEI использует сотни параметрических сущностей со значениями INCLUDE или IGNORE, что, с одной стороны, позволяет производить тонкую настройку DTD, но, с другой стороны, требует тщательного изучения DTD TEI.
Версии TEI Текущая стабильная версия Текущей стабильной версией TEI является версия 4. Предыдущие версии разрабатывались, в основном, для SGML. В версии 4 DTD разработано так, что обеспечивает поддержку как SGML‐ документов, так и XML‐документов. Для работы с XML‐документами при использовании полного варианта TEI, однако, необходимо включение соответствующего модуля:
Руководства по настройке и применению текущей стабильной версией TEI находятся на сайте консорциума TEI Ошибка! Источник ссылки не найден..
TEI Light Кроме полного варианта DTD TEI существует официальный упрощенный вариант, т.н. TEI Light. TEI Light включает несколько наиболее употребительных модулей TEI: TEI.linking 'INCLUDE' > TEI.analysis 'INCLUDE' > TEI.figures 'INCLUDE' > TEI.extensions.ent SYSTEM 'teilitex.ent' > TEI.extensions.dtd SYSTEM 'teilitex.dtd' > TEI.XML "INCLUDE">
DTD TEI Light не содержит условных разделов. Руководство по TEI Light также можно найти на сайте консорциума TEI (причем на русском языке Ошибка! Источник ссылки не найден.).
Разрабатываемая версия В настоящее время разрабатывается пятая версия TEI. Она разрабатывается с использованием XML‐схемы. Рабочий вариант пятой версии TEI (вместе с предварительной версией документации) находится на «фабрике проектов» Source Forge (проект TEI).
TEI Light Объявление типа документа TEI Light, как правило, используется для разметки единственного документа (а не для разметки корпусов как целого). Именно такое применение TEI Light мы и будем рассматривать. Для единственного документа документ TEI Light всегда имеет один и тот же корневой элемент с именем TEI.2, состоящий из заголовка TEI и собственно размеченного текста («текста TEI»):
Заголовок TEI (часто называемый «электронный титульный лист»), как видно из приведённого объявления элемента TEI.2, обязан присутствовать. В заголовке TEI содержится информация, аналогичная той, что находится на титульном листе печатного текста (метаданные). Она может содержать до четырех частей: библиографическое описание ма‐ шиночитаемого текста, описание способа разметки, небиблиографическое описание текста (параметры текста), и архив исправлений. Более подробно заголовок будет рассмотрен ниже.
Текст TEI может быть монолитным (отдельное произведение) или объединенным (набор отдельных произведений, как, например, в антологии). В любом случае текст может иметь необязательные вводную (front) и закрывающую (back) части. Между ними располагается основная часть текста (body), которая, в случае объединенного текста, может состоять из групп (group), а они, в свою очередь, из других групп или текстов:
В результате разметки монолитного текста получается структура, подобная приведенной ниже:
Объединенный текст также имеет необязательные вводную и закрывающую части. Между ними располагается одна или несколько групп текстов, каждая из которых тоже может иметь свои собственные вводные и завершающие части. Таким образом, в результате разметки объединенного текста получается структура, подобная приведенной ниже:
Разметка основной части текста Элемент body содержит всю основную часть одного монолитного текста, исключая то, что относится к вводной или завершающей частям текста. Этот элемент включает несколько классов элементов: Блочная структура текста Сюда входят абзац (p) и разделы (div1 … div7, div), аналогичные частям, главам и секциям (вместе взятым) DocBook; заголовки и заключения (head и trailer) разделов. В этот же класс элементов включаются обозначения структур, специфических для определенного жанра: строфа (lg), стихотворная строка (l), обозначение персонажа (speaker) и прямой речи персонажа (sp), авторские замечания (stage, как правило, в тексте пьесы). Закладки Закладки – это, прежде всего, номера строк (lb, этим элементом помечаются также разрывы строк) и страниц (pb). Номера строки страниц обычно связаны с конкретным изданием. Кроме этих элементов, в классе закладок присутствует элемент, предназначенный для обозначения произвольного маркера – milestone.
Выделения Выделения общего вида (когда причина выделения неизвестна) размечаются элементом hi (от английского highlight). В том случае, когда причина выделения ясна, можно использовать специализированные элементы, размечающие слова или фразы: выделяемые с целью получения лингвистического или риторического эффекта (emph); написанные на языке, отличающемся от языка основного текста (foreign); упомянутые, но не использованные (mentioned); рассматриваемые как технический термин (term); содержащие название произведения (title). Большинство элементов, не связанных непосредственно с выделениями в тексте, имеет атрибут rend, значения которого позволяют передавать типографские особенности выделения (например, особенности шрифта и блочность или потоковость выделения).
Цитаты TEI позволяет размечать 4 вида цитат: цитата общего вида (речь или мысль, отмеченные как принадлежащие другому автору (независимо от того, действительно ли данный отрывок является цитатой); в сюжетно‐повествовательных текстах таким образом отмечается прямая речь персонажа или оратора, а в словарях элемент этот элемент можно использовать для обозначения реальных или искусственных примеров использования) размечается элементом q; слова или фразы упомянутые, но не использованные (mentioned); слова или фразы, за которые автор или рассказчик снимает с себя ответственность, что обозначается кавычками или курсивом (soCalled); слова или фразы, которые представляют собой толкование (глоссу) или определение какого‐либо другого слова или фразы (gloss). Примечания Любые примечания, которые печатаются в виде сносок, примечаний в конце текста, маргиналий (примечаний на полях) или как‐либо по‐иному, следует обозначать с помощью одного и того же элемента note.
Перекрёстные ссылки и связи Перекрёстные ссылки и связи внутри документа TEI и перекрёстные ссылки и связи с другими документами (TEI и не TEI) размечаются по‐разному. Для ссылок внутри документа TEI используются два элемента: ref и ptr (первый – контейнер, который может содержать текст и/или другие элементы; второй – пустой). Ссылка всегда должна вести к элементу, поэтому для создания в документе точек или сегментов, на которые можно было бы ссылаться, можно использовать любые элементы TEI, в том числе и специально для этого предназначенные: anchor и seg (первый – пустой – для создания точки, на которую можно сослаться; второй – контейнер – для отметки произвольного отрезка текста). Для связи с другими документами используются элементы xref и xptr, причем для указания точки связывания в других документах используется язык XPath. Для всех элементов TEI определены атрибуты связывания, позволяющие во многих случаях обойтись без использования элементов ref, ptr, anchor и seg.
Редакторская правка, пропуски, удаления и дополнения Элементы этого класса используются для разметки исправлений, т.е. изменений, внесенных редактором в тех местах, где по его мнению, в оригинале имеется ошибка. Кроме исправления или нормализации слов и фраз, редакторы и публикаторы могут предложить вставить пропущенные материалы, не публиковать некоторые материалы или ввести материалы, вычеркнутые из оригинала. Кроме того, некоторые материалы могут оказаться исключительно сложными для передачи, поскольку их непросто разместить на странице (например, рисунки рукописи). Имена, даты, числа, сокращения и адреса Этот класс содержит элементы: для разметки имён собственных (name), относящихся к персонам, и т.н. «называющих строк» (rs), которые представляют собой имена собственные, относящиеся к объектам (географические названия, названия кораблей и т.п.); дат (date) и времён (time); чисел (num); сокращений (abbr) с указанием соответствующих полных форм (в виде значения атрибута expan элемента abbr); адресов (addr). Адрес (addr), в свою очередь, состоит из строк адреса (addrLine).
Списки Этот класс элементов содержит собственно список (list) и элемент списка (item). Нумерованность или маркированность списка управляются атрибутами. Ненумерованный и немаркированный список может использоваться как глоссарий; в этом случае для терминов используется элемент label, а определения размечаются элементом item. Элемент label позволяет размечать достаточно произвольные списки. Библиографические ссылки Для разметки библиографических ссылок используется элемент bibl. Его содержимое может (но необязательно) быть структурировано с помощью элементов author (первичные сведения об ответственности), title (заглавие), editor (вторичные сведения об ответственности), imprint, publisher и pubPlace (сведения о публикации), series (сведения о серии), biblScope (подробность и уровень описания). Таблицы Этот класс элементов содержит три элемента: table, row, cell.
Рисунки и графика Для рисунков и графики используется один из двух элементов: figure или figDescr. Первый используется тогда, когда графика должна быть представлена в электронном документе; в этом случае графический файл должен быть представлен т.н. неразбираемой сущностью XML. Элемент используется для описания графического компонента текста в том случае, когда этот компонент по каким‐то причинам не будет визуализирован. Интерпретация и анализ Этот класс элементов на самом деле содержит элементы, назначение которых может меняться от приложения к приложению. Для выделения неделимых фрагментов текста (часто – слов, например, для синтаксической разметки) используется элемент s. Элементы s не следует вкладывать друг в друга, хотя это формально и не запрещено. Для создания «опорных точек» – фрагментов текста, на которые можно ссылаться, используется элемент seg. Для произвольных интерпретаций (комментариев, морфологической разметки и пр.) используется пустой элемент interp, содержащий интерпретирующую аннотацию, которую можно связать с некоторой частью текста. Элементы interp можно объединять в группы – контейнеры interpGrp.
Техническая документация Элементы этого класса применяются как для разметки документации (подобно DocBook), так и для целей подготовки документов TEI к публикации. Некоторые элементы этого класса предназначены для разметки специфических фрагментов текстов документации: кратких примеров (eg); фрагментов кода (code), идентификаторов (ident); имена элементов XML или SGML (gi); ключевых слов на формальном языке (kw); математических, химических и иных формул (formula). Для записи формул, как правило, используется TEX и, при необходимости, секции символьных данных (). Другие элементы предназначены для указания мест в документе, в которые будут помещены разделы, создаваемые обрабатывающим документ приложением: разделы общего вида (divGen) и указатели (index). Кроме элементов, руководство Ошибка! Источник ссылки не найден. (разработанное ещё в до‐ Юникодовскую эру) настоятельно рекомендует для всех символов, отличных от латиницы и цифр, а также от небольшого набора знаков препинания, использовать общие сущности, обозначающие соответствующий символ, например, % вместо знака "%" (DTD TEI Light содержит 340 объявлений подобных сущностей). В настоящее время применение XML/Unicode эту рекомендацию сделало неактуальной, её следует соблюдать только в том случае, если документ будет обрабатываться в устаревшем приложении.
Разметка вводной части текста Структура вводной части текста определяется следующим объявлением:
Фактически, вводная часть текста может содержать информацию о титульном листе (titlePage) и/или его фрагментах и/или элементах, расположенных на контртитуле, обороте титульного листа и т.п. (части объявления, начинающиеся с элемента argument), а также различные вводные тексты (элементы div и div1). Титульный лист Никакие вложенные в элемент front элементы не являются обязательными (обратите внимание на наличие знаков * и ?), однако рекомендуется использовать по крайней мере элемент titlePage, описывающий титульный лист произведения, или те элементы, которые входят в него, но могут быть использованы непосредственно в элементе front:
В структуре титульного листа могут быть выделены следующие элементы, не являющиеся служебными: docTitle
Содержит название документа, включая все его составляющие, в том виде, как они приведены на титульном листе. Должен содержать по крайней мере один элемент titlePart. titlePart
Содержит подразделы или части названия произведения, как они представлены на ти‐ тульном листе; этот элемент используется также для свободно размещаемых фрагментов титульного листа, не являющихся частями названия документа, для указания авторства и т.д. Может включать разнообразные элементы разметки. byline
Содержит первичные сведения об ответственности, приведенные на титульном листе, либо в начале или в конце произведения.
docAuthor
Содержит имя автора документа, как приведено на титульном листе (часто, но не всегда содержится в элементе byline). docDate
Содержит дату (создания, печати) документа, как она представлена (обычно) на титульном листе. docEdition
Содержит сведения о редакции документа («Издание 2‐е, исправленное и дополненное»), как они представлены на титульном листе. docImprint
содержит сведения об издании (место и дату публикации, название издательства), как представлено (обычно) в нижней части титульного листа. epigraph
содержит цитату, анонимную или с указанием автора, которая приводится в начале раздела, главы или на титульном листе.
Фрагменты титульного листа и других вводных элементов документа Руководство Ошибка! Источник ссылки не найден. ошибочно описывает некоторые элементы, как допустимые во вводной и завершающей частях текста. Текущая версия DTD TEI Light некоторые из описанных в Ошибка! Источник ссылки не найден. элементов допускает только в завершающей части текста, но не во вводной. Приведу некоторые элементы, допустимые во вводной части текста (другие допустимые в этом месте элементы уже описаны выше): argument
Формальный список или описание тем, раскрываемых в данном подразделе текста. head
Заголовок. Может содержать многочисленные элементы фразовой разметки. Во вводной части документа часто содержит элементы argument и byline и следующие элементы: salute
Содержит приветствие, предваряющее предисловие, посвятительное послание или другой раздел текста, а также приветствие в конце письма, предисловия и т.п. dateline
Содержит краткое описание места, дату, время и т.п. создания письма, газетной статьи или другого произведения, предваряющее его как особый вид заголовка. opener
Группирует вместе элементы dataline, byline, salute или подобную им информацию, которая появляется в качестве вступительной части в начале раздела, особенно в начале письма. Может содержать многочисленные элементы фразовой разметки. Крупные блоки текста во вводной части следует выделять с помощью элементов div или div1.
Разметка завершающей части текста Структура завершающей части текста отличается от структуры вводной части наличием в ней (в конце завершающей части) элементов trailer и/или closer и определяется следующим объявлением:
Элементы trailer и closer почти неотличимы друг от друга – они содержат, в основном, элементы фразовой разметки, closer может содержать три элемента, который не могут входить в trailer: знакомые нам salute и dateline, а также signed, который содержит заключительное приветствие и т.п., следующее за разделом текста.
Структура основной части документа TEI Основная часть текста (body), как уже говорилось выше, может содержать элементы нескольких классов: Блочная структура текста Закладки Выделения Цитаты Примечания Перекрёстные ссылки и связи Редакторская правка, пропуски, удаления и дополнения Имена, даты, числа, сокращения и адреса Списки Библиографические ссылки Таблицы Рисунки и графика Интерпретация и анализ Техническая документация Некоторые из них используются для разметки блоков текста, другие – для разметки потоковых фрагментов текста. Не все они употребляются одинаково часто. Остановимся подробнее на некоторых часто используемых элементах.
Блочная структура текста Полная DTD TEI имеет блочную организацию; в ней отдельные группы элементов, которые должны встречаться вместе, собраны в параметрические сущности, поэтому устройство этого DTD более или менее может быть понято (более или менее потому, что этим параметрическим сущностям даны, в отличие от DocBook, недостаточно мнемонические имена). DTD TEI Light, однако, вообще не использует параметрические сущности, что делает изучение этого DTD непростым занятием. Я соберу некоторые группы элементов TEI Light в классы, для обозначения каждого такого класса использую параметрическую сущность, которой дам своё имя.
Структура тела документа Сначала я определю класс «маркирующих» элементов, предназначенных для отметки видимой или невидимой области в документе (эта область может вырождаться и точку, например, для элементов anchor и pb):
Затем определяем класс элементов, которые могут входить как в заголовок, так и в завер‐ шающую часть тела (не путать с титульным листом и завершающей частью документа – TEI допускает дополнительный заголовок и завершающую часть для тела документа и даже для разделов):
Теперь можно определить заголовок и завершающую часть тела (перечисление элементов, которые могут входить только в заголовок, и элементов, которые могут входить только в завершающую часть, я вынес в отдельные параметрические сущности). Вот структура заголовка:
Завершающая часть в TEI Light определена несколько иным способом (явно выделена про‐ извольная цепочка маркирующих элементов):
Причины для такого различия в определениях заголовка и завершающей части мне непонятны – и заголовок, и завершающая часть, как мы вскоре увидим, могут встречаться в теле документа произвольное количество раз, так что можно было бы и унифицировать определения. Теперь можно перейти к определению собственно (тела ☺) тела документа. Это тело тела может состоять непосредственно из размеченного текста (за которым может следовать некоторый набор разделов), либо только из некоторого набора разделов. Сначала соберём в отдельный класс элементы, которые могут быть использованы вне разделов (out of div – «внераздельная» разметка):
На уровне тела тела документа нельзя использовать произвольные разделы: это должны быть разделы уровней 0 (div0) или 1 (div1) или рекурсивные разделы (div), либо разделы, сгенерированные программно (текстовым процессором или иной программой – «авто‐ матические разделы» divGen). Чтобы яснее выразить праворекурсивные правила, определяющие возможность использования вперемешку разделов одного и того же уровня и программно сгенерированных разделов (вместе с маркирующими элементами), определим «хвостовые» части цепочек, состоящих из одних и тех же разделов:
Теперь можно определить сами цепочки, состоящие из одних и тех же разделов:
«Ручная разметка» состоит из разделов одного и того же вида (уровней 0 или 1 или рекурсивных разделов):
Автоматическая разметка может перемежаться маркировочными элементами:
В результате определение тела документа приобретает понятный вид: сначала в теле документа должны быть использованы элементы заголовка тела (в любом количестве; в том числе заголовок тела может и отсутствовать), затем идёт «тело тела», а затем – элементы завершающей части тела, которая также может отсутствовать:
Строение «тела тела» также теперь очевидно. Оно может быть образовано двумя способами: 1 2 3 4 5 6
( ( %body.outOfDiv; , ( %body.marks; )* )+ , %body.div.generated;*, %body.div.byHand;? ) | ( %body.div.generated;*, %body.div.byHand;? )
В первом способе перед необязательными разделами следует некоторая часть текста, раз‐ меченная с использованием элементов класса body.outOfDiv (вперемешку с маркирующими элементами). Во втором – такая часть текста отсутствует.
Замечание Наличие именно таких альтернатив в описании тела тела документа объясняется необ‐ ходимостью допустить три варианта строения этой части элемента: Только внераздельная разметка (строка 2) Внераздельная разметка (строка 2), за которой следуют разделы (строка 3) Только разделы (строка 6) Четвёртый вариант – отсутствие содержимого – невозможен из‐за наличия скобок, ок‐ ружающих «тело тела» (выделены полужирным шрифтом в объявлении body) – поскольку после скобок нет знаков ? или *, то что‐нибудь из описанного внутри скобок содержимого должно присутствовать. Если думать о DTD как о порождающей грамматике (это так в случае применения DTD в инструментах типа Altova Authentic), то объявление тела документа можно было бы ещё сократить:
Однако, возможно, распознающая грамматика с таким правилом не является детерми‐ нированной – это нуждается в проверке. На самом деле DTD TEI Light порождается из DTD TEI автоматически, поэтому подобные сокращения следует делать с осторожностью.
Раздел Все разделы ручной разметки (рекурсивные div и разделы всех уровней – от div0 до div7), имеют одинаковую структуру (с той лишь оговоркой, что в разделы div0 – div6 входят разделы следующего уровня, в раздел div – только разделы div, а в div7 никакие разделы не входят – место вхождения таких разделов я выделил полужирным шрифтом). Структура раздела напоминает структуру тела тела документа (и даже можно использовать уже объявленные сущности):
Приведу для примера объявление раздела первого уровня:
В этих объявлениях важно обратить внимание на структуру тела раздела. Существуют два варианта этой структуры: Тело раздела начинается с раздела (более глубокого уровня в случае нумерованного раздела; рекурсивного раздела div в случае рекурсивного раздела div; или сгенерированного раздела). В этом случае элементы, расположенные вне разделов, на уровне раздела употреблять нельзя. На уровне раздела используются исключительно разделы более глубокого уровня, сгенерированные разделы и маркирующие элементы. Тело начинается с элементов, которые расположены вне раздела. В этом случае за цепочкой элементов, которые расположены вне раздела (возможно, разбавленной маркирующими элементами), идёт цепочка разделов более глубокого уровня, сгенерированных разделов и маркирующих элементов. Таким образом, раздел может начинаться с элементов, которые допустимы в разделе (%outOfDiv;), и состоять только из таких элементов, но вслед за такими элементами могут идти другие разделы. Генерируемые разделы – divGen – представляют собой пустой элемент.
Другие элементы блочной структуры К блочной структуре также относятся: p – абзац ab – «анонимный блок», содержащий произвольную часть текста (например, фразу), без
семантической нагрузки, которую несёт абзац lg – стихотворная строфа l – стихотворная строка stage – авторские замечания (ремарки в пьесе и т.п.)
Элементы, которые могут считаться блочными или потоковыми Вне или в начале разделов в теле тела документа могут использоваться и такие элементы, которые при визуализации оказываются либо блочными, либо потоковыми (в зависимости от ситуации).
Списки list – список label – метка элемента списка, термин в словаре/глоссарии
Примечание note – примечание/аннотация (в тексте)
Цитаты cit – цитата из некоторого другого документа, а также библиографическая ссылка на ее
источник q – цитата или кажущаяся цитата – цитата общего вида (речь или мысль, отмеченные
как принадлежащие другому автору (независимо от того, действительно ли данный отрывок является цитатой); в сюжетно‐повествовательных текстах таким образом отмечается прямая речь персонажа или оратора, а в словарях элемент этот элемент можно использовать для обозначения реальных или искусственных примеров использования)
Библиография bibl – библиографическая ссылка произвольной структуры biblFull – полностью структурированная библиографическая ссылка listBibl – список библиографических ссылок
Обозначение прямой речи sp – прямая речь персонажа (контейнер, содержащий, в том числе, и обозначение
персонажа)
Элементы технической документации eg – содержит простой краткий пример к некоторой обсуждаемой технической теме,
например фрагмент программы или пример кодирования Замечание Обратим внимание на то, что такие элементы, как, например, table, на уровне тела тела документа или на уровне раздела отсутствуют. Они могут присутствовать только внутри других элементов разметки, таких, как абзац (p), цитата (q), выделение (emp) и др.
Абзац Абзац имеет смешанное содержимое – в абзаце может присутствовать смесь текста с 54 (в TEI Light) другими элементами (последовательность перечисления элементов в DTD мной сохранена):
code name corr unclear hi ptr seg figure listBibl anchor lb
| | | | | | | | | | |
kw num del formula mentioned ref gi cit note gap milestone
| | | | | | | | | | |
abbr rs orig emph soCalled xptr eg q stage index pb
| | | | | | | | | |
address time reg foreign term xref bibl label table interp
Общие атрибуты всех элементов Все элементы документов TEI Lite имеют следующие общие (необязательные) атрибуты (я привожу фрагменты объявления списка атрибутов).
Глобальные атрибуты 5 атрибутов являются общими и в полной спецификации TEI. Первые четыре из них объ‐ единены в т.н. класс глобальных атрибутов: id ID #IMPLIED
Уникальный (в пределах документа) идентификатор элемента; должен начинаться с буквы, может содержать буквы, цифры, дефисы и точки. n CDATA #IMPLIED
Имя или номер элемента; может использоваться любая последовательность символов. Значение этого атрибута не обязательно должно быть уникальным в документе. Часто применяется для записи традиционных систем ссылок или нумерации (глав и т.п.). lang IDREF #IMPLIED
Язык текста в данном элементе; если значение не указано, считается, что в элементе использован тот же язык, что и в окружающем контексте. Значение атрибута – ссылка на элемент language в TEI‐заголовке документа. rend CDATA #IMPLIED
Указывает способ начертания элемента в оригинале текста: italic (курсив), roman (прямой светлый шрифт), display block (выделенный блок) и т.п. Значением может быть любая строка символов.
Пятый атрибут – TEIform – имеет разное значение для каждого из элементов. Значением TEIform является строка, обозначающая так называемее «каноническое имя» элемента. Например для абзаца: TEIform CDATA "p"
Эти значения определены в DTD TEI/TEI Light, так что заботиться о придании значения этому атрибуту нет необходимости. Атрибут предназначен для идентификации элементов в случае допустимых модификаций DTD – значение этого атрибута при переименовании элемента модифицировать нельзя. TEI Light в дополнение к глобальным атрибутам определяет ещё 4 общих атрибута: три атрибута связывания (в полной DTD TEI эти три атрибута не являются глобальными, а от‐ носятся к отдельному классу атрибутов связывания) и один – указания интерпретации (в полной DTD TEI этот атрибут выделен в отдельный класс атрибутов анализа).
Связывание Простейший механизм связывания любых элементов обеспечивает атрибут corresp, значением которого является список идентификаторов элементов: corresp IDREFS #IMPLIED
Связывает элемент с одним или несколькими соответствующими (в смысле, определяемом целями разметки данного документа/корпуса) элементами. TEI/TEI Light содержат и более мощные механизмы связывания, использующие специальные элементы (ref и ptr для связей внутри документа; xref и xptr – для связей с другими документами; anchor и seg – для создания точек и сегментов, с которыми можно осуществлять связь). Использование элементов (а не атрибута corresp) для организации связей позволяет указывать роли связей и создавать разнообразные структуры связей.
Использование XML (и SGML) для разметки произвольных концепций, накладываемых на текст, порождает серьёзную проблему: сегменты текста, соответствующие элементам одной из концепций, не являются строго вложенными в сегменты текста, которые соответствуют элементам другой концепции, в то время как структурные языки разметки требуют вложенности элементов. Преодолеть эту проблему можно, используя упомянутые механизмы связывания, однако зачастую проще связать несколько сегментов текста (или других элементов) в цепочку, соответствующую концепции разметки, которая по каким‐то причинам не совместима с основной разметкой текста. Для облегчения этой задачи служат два атрибута, позволяющие явно указать отношение следования: next IDREF #IMPLIED
Связывает данный элемент со следующим элементом в некоторой совокупности элементов. prev IDREF #IMPLIED
Соединяет данный элемент с предыдущим элементом в некоторой совокупности элементов.
Интерпретация ana IDREFS #IMPLIED
Связывает элемент и его интерпретацию. Идентификаторы в списке идентификаторов – значении атрибута ana, – должны принадлежать так называемым элементам интерпретации: interp или interpGrp, – или элементу note.
Заголовок TEI (электронный титульный лист). Визуализация документа TEI Размеченный текст должен быть снабжён метаинформацией, документирующей сам текст, кодировку, вносимые изменения и др. Эта метаинформация необходима как исследователям, использующим размеченный текст, так и программам, которые этот текст обрабатывают, а также и каталогизаторам (в библиотеках). Содержание этой метаинформации похоже на содержание титульного листа печатного издания. Поскольку основной текст (тело) документа TEI может вообще практически не содержать разметки, заголовок TEI является важнейшим элементом документа TEI. Поэтому рассмотрим заголовок TEI подробно.
Общие сведения о заголовке TEI Метаинформация в документе TEI размещается в обязательном заголовке TEI:
Структура заголовка TEI Заголовок TEI состоит из четырёх частей, лишь первая из которых – описание файла, fileDesc – обязательна. Таким образом, минимальный заголовок TEI имеет вид: ...
Почти всегда, однако, присутствуют и необязательные элементы. Следует отличать заголовок TEI (элемент teiHeader), предназначенный для размещения в нём метаинформации, от элемента front, предназначенного для разметки вводной части текста. Полная версия TEI в некоторых случаях (например, при разметке корпуса) допускает ис‐ пользование нескольких заголовков TEI. TEI Light разрешает использовать лишь единственный заголовок TEI.
Остановимся вначале на каждом элементе заголовка TEI кратко: Описание файла (элемент fileDesc) содержит полное библиографическое описание самого компьютерного файла. Когда здесь говорится о компьютерном файле, имеется в виду вся совокупность физических сущностей, на которые разбит документ TEI. Из этого описания пользователь может получить точную библиографическую ссылку, а библиотекарь или работник архива может создать правильную библиографическую запись, идентифицирующую наличие этого файла в коллекции. Описание файла также включает информацию об источнике, из которого был создан электронный документ. Описание кодирования (элемент encodingDesc) предназначено для подробного отражения связей между электронным документом и его источником (источниками). Оно предназначено для детального описания таких аспектов преобразования текста в электронную форму, как нормализация, устранение неоднозначностей; здесь также приводится информация об использованной разметке, глубине анализа и т.п.
Параметры текста (элемент profileDesc) – это классификационная и контекстная ин‐ формация о тексте. В этом элементе могут присутствовать предметные рубрики, история создания, персоналии, связанные с текстом (как ответственные лица, так и описываемые в тексте), и т.п. Этот элемент часто используется при работе с корпусами – в этом случае для значений вложенных в него элементов применяются словари с контролируемой лексикой, что позволяет, например, автоматизировать отбор текстов для последующей обработки. История изменений (элемент revisionDesc). Этот элемент используется для управления версиями размеченного документа.
Типы содержимого в заголовке TEI Проза Большинство элементов заголовка содержат элементы прозы, такие как абзац или список. Некоторые элементы, однако, могут содержать только символьные данные (возможно, с разметкой фразового уровня). Группирующие элементы. Имена группирующих элементов заканчиваются суффиксом Stmt (например, editionStmt или titleStmt) Группирующие элементы используются для записи структурированной информации, например, соответствующей области библиографического описания. Зачастую группирующий элемент имеет две альтернативы: структурированную (состоящую из отдельных элементов) и неструктурированную. В неструктурированном варианте используется один элемент, формально содержащий прозу, в котором разметка составных частей выполнена в соответствии с местными традициями (например, библиографическое описание в соответствии с ГОСТ 7.1–2003). Объявления. Имена элементов объявлений имеют суффикс Decl (например, subjectDecl или refsDecl). Объявления содержат информацию о конкретном применении разметки в данном тексте, зачастую в кодированном виде. На эту информацию можно ссылаться в разметке текста, используя атрибут decls. Описания. Имена элементов объявлений имеют суффикс Desc (например, settingDesc или projectDesc). Эти элементы содержат тексты соответствующих описаний.
Описание файла Элемент fileDesc – первый и единственный обязательный элемент заголовка TEI:
Структура этого элемента напоминает структуру библиографического описания. Элемент fileDesc содержит три обязательных (titleStmt, publicationStmt и sourceDesc) и четыре необязательных элемента. Все эти (как обязательные, так и необязательные) элементы имеют только глобальные атрибуты.
Группа заглавия Элемент titleStmt группирует информацию о заглавии произведения и лицах, ответственных за интеллектуальное содержание произведения. Этот элемент идёт первым в описании файла и является обязательным.
Группа заглавия содержит заглавие, данное электронному произведению (это заглавие может, вообще говоря, отличаться от заглавия произведения‐источника), а также может содержать один или несколько необязательных элементов, несущих в себе сведения об ответственности, идентифицирующие автора, разметчика, составителя и др. лиц (физических и/или организаций), каким‐либо образом ответственных за электронный документ. В сведениях об ответственности должны присутствовать элементы author – автор произведения – и principal – автор электронной размеченной версии. Остальные сведения об ответственности факультативны. Все имена и названия организаций должны приводиться в наиболее развёрнутой форме (в частности, персональные имена – не только в виде фамилий с инициалами, но, по крайней мере, в виде фамилий и полных личных имён).
Пример Two stories by Edgar Allen Poe: electronic version Poe, Edgar Allen (1809-1849) compiled by James D. Benson
Заглавие Заглавие – это элемент прозы. Для удобства дальнейшего описания я сначала определю две параметрические сущности, которые в совокупности определяют все элементы прозы (см. описание абзаца выше):
Элемент title имеет два (сверх обычных глобальных) атрибута: level – библиографический уровень заглавия (статья – article, книга – monograph, журнал –
journal, продолжающееся издание – series, неопубликованный материал – unpublished): level (a | m | j | s | u) #IMPLIED type – вид заглавия, в соответствии с принятой (коллективом, размечавшим текст)
типологией заглавий: type CDATA #IMPLIED
Элемент title содержит основное заглавие файла, включая все альтернативные заглавия и подзаголовки. Форма, в которой представляется заглавие, оставляется на усмотрение того, кто создаёт этот элемент. Если электронный текст является производным от существующего неэлектронного источника, то следует в элементе title воспроизвести точное заглавие этого источника, дополнив его фразой типа «электронный вариант / издание / текст» и т.п. для того, чтобы надёжно отличать размеченный документ от исходного (в том числе в каталогах, содержащих описания обоих документов). Руководство по TEI настоятельно не рекомендует использовать системное имя файла в качестве значения элемента title, поскольку системное имя файла подвержено частым изменениям. Полезным руководством по определению того, как следует формировать заглавие, может служить ГОСТ 7.1–2003 Ошибка! Источник ссылки не найден..
Автор, редактор, спонсор, финансовая поддержка, ответственный исполнитель Все эти элементы содержат сведения о лицах или организациях, выступающих в определённой роли относительно данного текста. В этих элементах допустимы не все элементы прозы. author
Имя персоны или коллектива, которые являются автором произведения; первичные сведения об ответственности. editor
Вторичные сведения об ответственности. Элемент содержит информацию о редакторах, составителях, переводчика и пр. лицах (персонах или организациях), участвовавших в создании произведения. sponsor
Название организации или лица, оказавшего спонсорскую (не обязательно финансовую) поддержку созданию произведения. funder
Название организации, структуры или лица, ответственных за финансирование проекта разметки или создания данного текста. principal
Имя лица, ответственного за создание данного электронного текста
Сведения об ответственности Для детализации указания сведений об ответственности используется элемент respStmt:
Обычно этот элемент содержит пару элементов resp и name: resp
Содержит фразу, описывающую вид интеллектуальной ответственности. name
Содержит имя или именную фразу.
Группа издания Группа издания – элемент editionStmt – объединяет информацию, относящуюся к одному изданию текста:
Элемент editionStmt содержит либо фразу, описывающую издание (элементы p – абзацы), либо структурированную информацию в виде элемента edition, описывающего особенности издания, и списка (respStmt*) сведений об ответственности, относящихся к указанному изданию. Термин «издание» по отношению к печатным текстам используется в TEI в традиционном смысле. По отношению к электронным документам «издание» примерно эквивалентно версии (version) или выпуску (release). Слова «издание», «версия» и т.п. должны включаться в содержимое элемента editionStmt (в элемент edition или p). Все даты в элементах edition или p внутри элемента editionStmt должны быть заключены в элемент date. Слова «подверсия» (revision) или обновление (update), напротив, не могут служить признаком «издания». Все изменения в электронной версии текста, однако, могут быть зафиксированы в элементе revisionDesc – «История изменений» (см. ниже).
Размер Необязательный элемент extent описывает размер электронного текста, размещенного на некотором носителе, в каких‐либо приемлемых единицах. Этот элемент не имеет никакой специальной структуры:
Примеры: между 1 16-битовым мегабайтом и 2 16-битовыми мегабайтами 4.2 MB 4532 bytes 3200 предложений 5 3.5" дискет высокой плотности
Группа выходных данных (сведения о публикации) Группа выходных данных – обязательный элемент publicationStmt – объединяет инфор‐ мацию, относящуюся к публикации или распространению исходного или электронного текста. Этот элемент содержит либо прозу, либо структурированную информацию. В этом элементе разрешены маркирующие элементы (%body.marks;):
В группе выходных данных обязательно присутствие информации об одном из трёх лиц или организаций: издателе (publisher), распространителе (distributor) или о лице или организации, отвечающей за доступность произведения (authority). Остальные элементы необязательны: место издания – pubPlace, почтовый или иной адрес – address, стандартный или нестандартный идентификационный номер издания – idno, сведения о доступности (включая информацию об авторских правах) – availability, дата публикации – date (именно дата публикации; дата создания документа приводится в элементе profileDesc – Параметры текста). Рекомендуется приводить элементы именно в указанном порядке.
Пример: Oxford University Press Oxford 1989 0-19-254705-4 Copyright 1989, Oxford University Press
Группа серии Необязательный элемент seriesStmt объединяет информацию о серии, к которой при‐ надлежит публикация. На «библиографическом жаргоне» серию можно определить одним из трёх способов: Группа отдельных публикаций, связанных друг с другом тем фактом, что каждая публикация, кроме собственного заглавия, имеет также общее, объединяющее все эти публикации, заглавие. Индивидуальные публикации могут быть, а могут и не быть пронумерованы. Каждый из двух или более томов литературных произведений, лекций, статей, или других однородных публикаций, изданных последовательно. Пронумерованная последовательность томов внутри периодического или продолжа‐ ющегося издания. Элемент seriesStmt содержит либо прозу, либо структурированную информацию.
Все элементы содержимого группы серии уже были рассмотрены выше. В элементе title следует указывать атрибут level со значением s (серия). В использовании элемента idno в группе серии есть некоторые особенности: обычно используются не менее двух элементов idno. Один содержит стандартный номер (ISSN), а другой – номер публикации в серии:
Machine-Readable Texts for the Study of Indian Literature ed. by Jan Gonda 1.2 0 345 6789
Номера публикации в серии рекомендуется кодировать арабскими цифрами с точкой в качестве разделителя: вместо VI/xix:33 в содержимом элемента idno должно стоять 6.19.33.
Группа примечаний Группа примечаний – notesStmt – содержит разнообразные примечания (структурированный текст – %structuredText; – может включать анонимные блоки ab, элементы стихотворного текста l и lg, абзацы p и прямую речь персонажей sp, – всё это может появляться в тексте примечания):
Элемент note имеет, кроме глобальных, ещё 6 атрибутов (напомню, что значение по умолчанию #IMPLIED означает, что атрибут не является обязательным): Имя атрибута
Тип значения атрибута
type resp
CDATA #IMPLIED CDATA #IMPLIED
place anchored
CDATA "unspecified" (yes | no) "yes"
target
IDREFS #IMPLIED
targetEnd
IDREFS #IMPLIED
Описание Тип примечания Указывает лицо, ответственное за данное примечание (автор, редактор, переводчик и пр.) Есть ли примечание в основном тексте Указано ли конкретное место примечания в тексте (в виде ссылки ил описания места) Идентификаторы отрезков текста, к которым относится примечание Идентификаторы элементов, которые завершают отрезки текста, к которым относится примечание (при необходимости должны использоваться пустые элементы)
В традиционной библиографии некоторые виды информации о произведении размещаются в примечаниях. TEI требует, чтобы для перечисленных ниже видов метаинформации использовались специально предназначенные для них элементы: Происхождение, назначение, художественная форма, жанр или другая интеллектуальная категория – profileDesc. Формальный реферат, не содержащий оценки произведения – profileDesc. Подробное библиографическое описание (традиционного, как правило, не электронного) источника или источников текста электронного документа – sourceDesc. Любая информация, относящаяся к выходным данным, распространению текста (включая то, как можно получить текст), любая информация об ограничениях или условиях доступа – publicationStmt. Общедоступные идентификационные номера и шифры (прежде всего, ISBN и ISSN) – publicationStmt (вложенный элемент idno).
Элемент notesStmt можно использовать для передачи следующей информации о файле и его особенностях: Дат (например, «предположительно, 1983». Имён лиц и названий коллективов (организаций), имеющих отношение к процессу создания и разметки электронного документа, но которые по каким‐то причинам не упомянуты в сведениях об ответственности. Доступности электронного документа на тех или иных носителях; доступности доку‐ ментации; доступности имеющей отношение к электронному документу дополнительной информации (например, в случае неполной оцифровки/разметки исходного источника). Языке текста и реферата. Уникальном названии, присвоенном серии в Международной системе данных о сериях (ISDS). Связанных публикациях (например, описывающих текст произведения – источника). Пример: Historical commentary provided by Mark Cohen. OCR scanning done at University of Toronto.
Группа источника Последний элемент описания файла – обязательный элемент sourceDesc. Он предназначен для передачи информации об источнике (источниках), которые послужили основой для создания электронного размеченного текста – документа TEI. Таким источником может быть печатный текст, рукопись, другой компьютерный файл, аудио или видеозапись, и др., или любая комбинация подобных источников. Источник, впрочем, может и вовсе отсутствовать. Элемент sourceDesc содержит библиографическое описание источника. Элемент sourceDesc содержит либо прозу (абзац p), либо (предпочтительнее) структу‐ рированное библиографическое описание:
Полная DTD TEI допускает использование ещё двух элементов для описания источника в случае, когда источником послужила записанная устная речь: scriptStmt – для описания того, как речь была записана на бумаге, recordingStmt – для описания того, какой набор физических записей был использован (включая информацию об оборудовании). Пример (из оригинального руководства по TEI): No source: created in machine-readable form.
Производные документы TEI Если источником документа TEI является другой документ TEI, то данные из заголовка TEI этого второго документа должны быть включены в заголовок первого документа в соответствии со следующими правилами: Элемент fileDesc источника переносится в элемент sourceDesc/biblFull нового доку‐ мента (я использую нотацию XPath для адресации элементов). Элемент profileDesc переносится в profileDesc без изменений. Элемент encodingDesc, как правило, создаётся заново, поскольку принципы разметки нового документа и документа‐источника, скорее всего, существенно различаются. Элемент revisionDesc может быть как абсолютно новым (собственно, создан новый документ), так и содержать часть информации из элемента исходного документа TEI. В последнем случае необходимо чётко выделить то, к какому именно документу относится приводимая информация (даты, редакции и т.п.).
Описание кодирования Описание кодирования – элемент encodingDesc – предназначен для передачи принципов и способов преобразования документа‐источника в документ TEI. Этот элемент может содержать объявления некоторых обозначений (кодов), используемых в других местах заголовка TEI. Объявление описания кодирования в TEI Light имеет вид:
Содержимым этого элемента может быть проза (абзац p), либо (предпочтительнее) струк‐ турированный перечень спецификаций процесса кодирования: описания проекта (projectDesc), методики отбора источников (samplingDecl), принципов редактирования (editorialDecl), собственно разметки (tagsDecl), разработанной ссылочной структуры (refsDecl), использованных классификаций/таксономий (classDecl). В полной DTD TEI в описание кодирования можно добавить описания: системы черт (когда недостаточно классификаций/таксономий), метрической структуры текста, использованных вариантов кодирования.
Описание проекта Описание проекта содержит описание цели создания электронного документа, а также процесса его создания. Описание проекта особенно важно при работе с корпусами текстов.
Пример: Документ предназначен для ...
Методика отбора Так же, как и описание проекта, содержит прозу, описывающую принципы отбора текста (или фрагмента текста), использованного для разметки:
Элемент важен для корпусов текстов.
Принципы редактирования В TEI Light этот элемент содержит прозу:
В полной DTD TEI этот элемент может иметь структуру, описывающую отдельные состав‐ ляющие процесса редактирования (нормализацию, исправления, использование кавычек, переносы и пр.).
Разметка Элемент tagsDecl используется для передачи следующей информации о разметке: Количестве тех или иных элементов в документе TEI – для проверки целостности разметки. Описания особенностей использования того или иного элемента, если для такого описания не нашлось места в другом элементе заголовка TEI. Объявления методов визуализации элементов, используемых по умолчанию (при отсутствии атрибута rend в элементе). Структура tagsDecl проста:
Каждый элемент в последовательности элементов rendition должен иметь атрибут id (естественно, с различными значениями) – чтобы на них можно было бы ссылаться в основном тексте. Последовательность элементов tagUsage состоит из большого количества элементов – по одному на каждый элемент, встречающийся в самом внешнем элементе text (следующем непосредственно за teiHeader), – таково требование стандарта.
Элемент tagUsage имеет следующие атрибуты (помимо глобальных): Имя атрибута
Тип значения атрибута
gi
CDATA #REQUIRED
occurs
CDATA #IMPLIED
ident
CDATA #IMPLIED
render
IDREF #IMPLIED
Описание Имя элемента (из используемого DTD), к которому относится данный элемент tagUsage («описываемый элемент») Количество появлений описываемого элемента в разметке текста Количество появлений описываемого элемента в разметке текста, имеющих атрибут id (естест‐ венно, каждый раз с различными значениями) Идентификатор элемента rendition, который должен использоваться по умолчанию при визуализации описываемого элемента
Атрибуты элемента tagUsage предназначены для их автоматической обработки, а его со‐ держимое – нет.
Ссылочная структура TEI, как и TEI Light, позволяет создавать при помощи разметки различные ссылочные струк‐ туры. Под ссылочной структурой в TEI имеется в виду система имён (ссылок), связанных с конкретными частями текста (например, «Пс. 23:3» для третьего стиха Псалма 23, или «Amores 2.10.7» для строки 7 поэмы 10 книги второй сочинения «Amores» Овидия). Подобные имена позволяют маркировать некоторое место в тексте с тем, чтобы затем это место можно было бы найти. Ссылочная структура может базироваться на естественных структурных элементах текста (главах, абзацах, предложениях, строфах, стихах и т.п.) или на разделах текста, созданных специально для ссылок (как, например, главы и номера стихов в Библии). Если такая структура есть в тексте источника электронного документа, её следует сохранять и в документе TEI – хотя бы для облегчения сравнения документа TEI и оригинала текста. Ссылочная структура в документе TEI может быть создана различными средствами: Если в исходном документе уже присутствует ссылочная структура, то для её воспроизведения можно воспользоваться значениями атрибутов id и/или n (или комбинациями значений таких атрибутов из набора вложенных элементов). Этот же подход можно использовать, если исходная ссылочная структура отсутствует. Если исходная ссылочная структура не связана с логической структурой текста, а базируется, например, на номерах страниц, то можно воспользоваться многочисленными методиками создания параллельных иерархий в TEI, например, с помощью элементов маркировки milestone. Этот же подход можно использовать, если имеющаяся в источнике ссылочная структура по каким‐то причинам не интересует исследователя, выполняющего разметку, а необходимо создание иной ссылочной структуры.
В любом случае – даже если ссылочная структура в исходном документе отсутствует и/или ссылочные структуры по каким‐то причинам неважны, или используется ссылочная структура, не связанная с номерами страниц, – руководство TEI рекомендует размечать разрывы страниц. Ссылочные структуры, используемые в данном документе, описываются в элементе refsDecl. Каждой отдельной используемой ссылочной структуре должен соответствовать один элемент refsDecl. TEI Light допускает только одну форму этого элемента – прозу:
Полная спецификация TEI позволяет использовать более формализованное описание ссылочных структур. Элемент имеет один дополнительный атрибут (помимо глобальных): Имя атрибута doctype
Тип значения атрибута CDATA "TEI.2"
Описание Имя элемента, к которому относится описывае‐ мая ссылочная структура (отличие от значения TEI.2, т.е. от всего документа, считается экспериментальным).
В TEI Light описание ссылочной структуры – обычный текст, который не может обра‐ батываться автоматически, например: Атрибут n каждого текста настоящего корпуса содержит уникальный идентификационный код для текста как целого. Заглавие текста помещено в первый элемент head внутри каждого текста. Атрибут n каждого раздела div1 и div2 содержит каноническую ссылку на данный раздел в форме 'XX.yyy', где XX - номер книги (римскими цифрами), а ууу – номер раздела (арабскими цифрами). Все разрывы строк отмечены пустым элементом lb, который в качестве значения атрибута n использует порядковый номер строки по изданию Casaubon
Порядковый номер строки и идентификатор текста совместно являются уникальным идентификатором строки. Каноническая ссылка образуется конкатенаций значений атрибута n элементов text, div1 или div2, и вычислением номера строки в каждой части текста.
Одна и та же ссылочная структура, используемая в различных частях текста, не должна описываться дважды. Элемент, использующий ссылочную структуру (text, front, body, div*, back) должен содержать ссылку на id этой структуры в качестве значения атрибута decls.
Классификации Элемент classDecl предназначен для группировки объявлений или описания источников применяемых классификационных схем. Каждая из таких схем представлена одним элементом taxonomy. Элемент taxonomy может содержать (библиографическую) ссылку на описание классификационной схемы, либо (возможно, совместно с такой ссылкой) явное объявление используемой типологии (вложенные элементы category):
Собственно описание категории (рубрики) находится в элементе catDesc.
Примеры: 1. Ссылка на классификацию Дьюи. Dewey Decimal Classification Abridged Edition 12
2. Классификация, используемая в корпусе Брауна. Brown Corpus Press Reportage Daily Sunday National Provincial Political Sports Religion Books Periodicals and tracts
Связь текста с используемой классификацией осуществляется с помощью элемента /TEI.2/teiHeader/profileDesc/textClass/catRef (см. ниже). Если используемая клас‐ сификация допускает приписывание множественных рубрик, то они указываются как список (IDREFS), например (для корпуса Брауна):
Параметры текста Элемент profileDesc – третий (необязательный) элемент заголовка TEI, служит для передачи важных характеристик текста, для которых не нашлось подходящих элементов в предыдущих двух – описании файла (fileDesc) и описании кодирования (encodingDesc). В параметры текста должна попадать та информация, которая обычно не укладывается в стандартное библиографическое описание. Структура параметров текста – последовательность необязательных элементов, несущих информацию о создании текста (creation), языковом разнообразии, представленном в тексте (langUsage), и о ключевых словах, рубриках классификационных схем или тезаурусов и т.п. (textClass):
Информация о создании текста
Для передачи информации о создании текста используется обычная проза, например: Август 1992 Taos, New Mexico
Использование языков
Элемент langUsage используется для описания языков, подъязыков, жаргонов, диалектов и пр., представленных в тексте. Каждый язык (подъязык, жаргон, диалект и пр.) отражается в отдельном элементе language. Элемент language имеет два атрибута (сверх глобальных): Имя атрибута
Тип значения атрибута
wsd
ENTITY #IMPLIED
usage
NMTOKEN #IMPLIED
Описание Ссылка на сущность (нотацию), содержащую описание так называемой системы записи TEI. Фактически, система записи TEI соответствует кодировке. Для русского языка TEI рекомендует использовать ISO‐8859.5 Примерная доля текста (в процентах) в данной системе записи
Пример: Québecois Canadian business English – примерно 20% British English
Классификация текста Элемент предназначен для передачи информации о классификации текста в соответствии с одним или несколькими из трёх следующих способов: Ссылкой на признанную международную классификацию, такую, например, как классификация Дьюи или УДК (элемент classCode). Набором ключевых слов (элемент keywords). Ссылкой на любую другую таксономию, относящуюся к предметной области текста (элемент catRef). classCode ( %proseGeneral; | %body.marks; ) * > catRef EMPTY> keywords (term+ | list) >
Элементы classCode и keywords имеют один дополнительный атрибут (помимо глобальных): Имя атрибута scheme
Тип значения атрибута IDREF #IMPLIED
Описание Для classCode – идентифицирует используемую таксономию (описанную в элементе taxonomy) Для keywords – идентифицирует применяемый контролируемый словарь (описанный в элементе taxonomy)
Элемент catRef имеет два дополнительных атрибута (помимо глобальных): Имя атрибута
Тип значения атрибута
scheme
IDREF #IMPLIED
target
IDREFS #REQUIRED
Описание Идентифицирует используемую таксономию (описанную в элементе taxonomy) Список идентификаторов категорий, к которым отнесён текст (элементов category)
История изменений Последний элемент заголовка – revisionDesc:
История изменений записывается в обратном хронологическом порядке в виде обычного списка или в структурированном виде, отражающем отдельные изменения в виде элементов change:
Каждый элемент change фиксирует дату изменения, ответственное лицо и описание вы‐ полненных изменений:
Визуализация документов TEI Визуализация документов TEI выполняется с использование XSLT – точно так же, как и для DocBook (конечно, XSLT‐преобразование будет иным). Существующее преобразование разработано в Оксфордском университете (Великобритания), и содержит информацию об этом университете. Поэтому как правило, приходится использовать XSLT‐обёртку, например: my.css Филологический факультет СПбГУ © Филологический факультет СПбГУ
Многочисленные параметры приведены в файле teihtml-param.xsl дистрибутива стилевого файла XSLT для TEI Light.