2.5.2. Языки разметки В современных информационных технологиях используется ряд языков для представления, хранения, обработки и передачи документов, содержащих данные в текстовой, табличной, графической формах. Среди языков для представления документов ведущее место занимают языки разметки. Эти языки широко используются для представления структуры различных электронных документов, они стали основой для построения гипертекстовых документов в Web-сайтах, для стандартизации форм документов в CALS-технологиях, в системах электронной коммерции и т.п. В настоящее время основными языками структурирования документов в CALSтехнологиях являются языки SGML и XML. Язык SGML (Standard Generalized Markup Language), утвержденный в качестве стандарта ISO 8879 еще в 1980-х годах, более универсален, но довольно сложен для освоения и использования. Удобнее в использовании оказался сравнительно новый язык XML (extensible Markup Language), предложенный в 1996 г. Он построен на идеях SGML и фактически является подмножеством SGML. В настоящее время язык XML претендует на роль основного языка представления документов в информационных технологиях, его можно рассматривать как метаязык, служащий основой для создания частных языков разметки в различных приложениях. Например, к числу частных языков разметки, называемых приложениями или словарями XML [65], можно отнести словари, разработанные в таких предметных областях, как химия (язык CML), математика (язык MathML), астрономия (язык AML) и др. Широко используемый в настоящее время в Web-технологиях язык разметки HTML (Hyper Text Markup Language) открыт, довольно прост, появился раньше XML и именно по этим причинам стал популярным средством создания Web-страниц. Однако HTML имеет ряд недостатков. В этом языке ограниченный набор тегов заранее предопределен, в некоторых приложениях этот набор может оказаться недостаточным. Кроме того, в тегах HTML одновременно могут присутствовать данные как о структуре документа, так и о его форматировании (форматирование определяет визуализацию вид документа на экране монитора). А это мешает при работе с документом селектировать нужные структурные элементы. Этих недостатков нет в языке SGML, они устранены также в языке XML. Рассмотрим особенности языков разметки, используемых в CALS-технологиях, на примере языка XML. Для каждого приложения может создаваться свой набор тегов, наилучшим образом удовлетворяющий требованиям конкретного приложения. С помощью этих тегов производится структурирование документа, отделенное от форматирования, например, определяются отношения между элементами и их типы, вложенность одних элементов в другие. Для форматирования разработан специальный язык XSL (extensible Stylesheet Language), но можно использовать и каскадные таблицы стилей (CSS), введенные в HTML. В частности, разделение структурирования и форматирования, осуществленное в XML, привлекательно для создания IЕТМ, поскольку при этом унификация структуры эксплуатационных документов Для изделий конкретного класса достигается легче. Введение уникальных тегов для важных элементов структуры обеспечивает их эффективный поиск и селектирование. Например, если для именования фрагментов текста в приложении «Техническая диагностика» с определением методов диагностики ввести тег <diag>, то ссылка на него позволит выделить сразу все фрагменты с описаниями этих методов. XML-документ обычно состоит из заголовка (пролога), размеченного документа, отображающего исходную информацию, декларации средств используемого языка разметки и описания правил форматирования документа, например, в виде правил XSL [66]. Заголовок служит для объявления имени документа, используемой версии языка XML и некоторых дополнительных необязательных указаний. Размеченный документ состоит из элементов. Элемент XML - порция информации, заключенная в контейнер, т.е. обрамленная парой тегов, между которыми эта порция помещена. Начальный и конечный теги имеют вид соответственно <имя элемента> и </ имя элемента > (здесь и далее в примерах нетерминальные символы в отличие от служебных слов языка XML будут записаны русскими словами курсивом). К элементам также относится пустой (бесконтейнерный) тег. Декларация средств языка XML, представленная таблицей DTD, должна соответствовать общим правилам языка XML, она содержит объявления средств, специфичных для некоторого приложения и определяющих используемую разновидность XML. Разновидности XML (словари XML) могут создаваться по мере необходимости, что и оправдывает определение XML как метаязыка. Средствами языка XML являются элементы, атрибуты, сущности, комментарии, команды [67]. Объявление элемента, выполняемое в DTD, представляет собой строку следующего вида: <!ELEMENT имя содержание> где имя - имя элемента, содержание - параметр, который может быть описанием вложенных элементов, фразой (#PCDATA), словами EMPTY или ANY. Описание вложенных элементов отражает иерархическое построение документа и представляет собой перечисление имен частей (элементов, вложенных в данный элемент) в круглых скобках через запятую. Необязательные элементы помечаются знаком «?». Знак «+» после имени элемента означает, что элемент может повторяться один или более раз, а знак «*» после закрывающей скобки показывает, что элементы всего списка могут не повторяться в документе ни разу, либо повторяться один или более раз. Например, данный элемент соответствует главе текста, а элементы, указанные в его содержании, вложенным в главу параграфам. Фраза (#PCDATA), где PCDATA - аббревиатура слов parseable character data, указывает на наличие текстового содержимого контейнера. Могут быть альтернативные варианты описания содержания (несколько списков вложенных элементов и указатель PCDATA), их нужно отделять друг от друга вертикальной чертой (символом « | »). Слово EMPTY записывается в строках бесконтейнерных элементов, а слово ANY означает, что элемент может иметь любой из перечисленных выше типов содержания. Для элементов в DTD могут быть указаны атрибуты (параметры) с помощью объявления: <!ATTLIST имя атрибут (список значений) "значение по умолчанию" > где имя - имя элемента, атрибут - имя параметра, список значений - список возможных значений параметра, разделенных вертикальной чертой (« | »), значение по умолчанию - значение параметра по умолчанию. Вместо (список значений) может быть указан тип атрибута. Используются следующие типы: CDATA (любые символьные данные); ID (уникальный идентификатор); DDREF (или EDREFS) - указатель на то, что значением атрибута должен быть идентификатор, определенный в этом документе; ENTITY (или ENTITIES) -указатель на то, что значением атрибута должен быть псевдоним части документа, определенный с помощью сущности ENTITY; NMTOKEN (NMTOKENS) - указатель на то, что содержимым может быть только одно отдельное слово, т.е. этот тип является ограниченным вариантом CDATA. Атрибут может быть обязательным или необязательным, что указывается словами соответственно #REQUIRED или #IMPLIED вместо значение по умолчанию. В объявлении может быть представлено более одного параметра, т.е. часть вида атрибут (список значений) "значение по умолчанию" будет повторяться многократно. Сущности ENTITY используются для задания в DTD имен (псевдонимов) блокам данных, что позволяет в документе лаконично ссылаться на эти данные. Блок данных может быть внешним файлом, и тогда ссылка есть указание адреса файла. Блок данных может быть фразой, непосредственно записываемой в объявлении: <!ENTITY псевдоним "фраза" > В частности, такие символы, как «<» , «>», «&» и некоторые другие, нельзя использовать в документе иначе, чем в тегах, и их нужно заменять псевдонимами. Используются пять стандартных псевдонимов: &lt - для символа «<», &gt - для символа «>», &аmр - для символа «&», &apos - для символа апострофа, &quot - для символа двойной кавычки. Блок данных может быть списком атрибутов, который используется в DTD многократно. Его целесообразно заменить псевдонимом, перед которым нужно записать символ «%»: <!ENTITY % имя перечня 'список атрибутов' > где список атрибутов записывается по тем же правилам, что и в объявлении ATTLIST. Комментарий - произвольный текст, записываемый между символами «<!-» и « ->». Команда записывается между символами «<?» и «?>». Команды являются указателями XML-процессору на выполнение определенных действий по обработке данных. В XML-документе элементы описываются в соответствии с DTD. Как сказано выше, документ начинается с заголовка, он включает следующие предложения: <?xml version= "номер версии" дополнения ?> <!DOCTYPE имя документа SYSTEM "имя файла" > В дополнениях (или в отдельной команде) может быть указана используемая кодировка, например, encoding = "ISO 8859-1’, указание на использование только внутренней DTD (тогда в дополнении записывается standalone = "yes", иначе standalone = "no"). Имя файла - это имя файла, в котором находится DTD. Но DTD может быть полностью или частично заключена в квадратные скобки и помещена непосредственно в объявление DOCTYPE. Форматирование документа может осуществляться с помощью каскадных таблиц стилей CSS или языка XSL. Таблица CSS состоит из правил форматирования. В каждом правиле указываются имя элемента, к которому относится форматирование, и список объявлений. Список обрамляется фигурными скобками, объявления в списке разделяются точками с запятой. Каждое объявление задает значение одного из свойств отображения элемента в виде свойство: значение. К свойствам относятся размер шрифта, его цвет, стиль и другие характеристики, обычные для управления видом изображения в текстовых редакторах. Указания по форматированию, выраженные средствами языка XSL, составляют XSL-таблицу, с помощью которой XML-документ преобразуется в HTML-страницу, отображаемую браузером. Использование XSL обеспечивает ряд преимуществ по сравнению с применением CSS. Во-первых, последовательность отображения элементов на экране монитора задает XSL-таблица, поэтому, изменяя XSLтаблицу, можно один и тот же документ изображать по-разному в соответствии с потребностями конкретной ситуации. Во-вторых, появляется возможность сортировать и фильтровать элементы документа при его выводе на экран. В XSL шаблоны, по которым браузер определяет отображение элементов документа на экране, обрамляются выделенными для этого тегами, например <xsl:template> и </xsl:template >, и содержат правила, где указываются имена элементов, к которым правило относится, и задаются инструкции отображения, например аналогичные принятым в языке HTML. Таблица стилей помещается в отдельный файл, ссылка на который обычно включается в заголовок XML-документа и имеет вид <?xml-stylesheet type= "text/css" href = путь к файлу?> В случае XSL форма ссылки аналогичная, лишь css в параметре type заменяется на xsl. В XML расширены возможности гиперсвязей. Механизм связей в XML изложен в спецификациях XLink и XPointer, находящихся в стадии разработки. Первая из них посвящена связям между документами, а вторая - связям внутри документа. Простая связь аналогична href-ссылке в HTML. Но возможны также связи многонаправленные, связи, которые не заменяют на экране монитора просматриваемый документ данными из вызванного ресурса, а помещают эти данные в дополнительное окно или встраивают их в исходный документ. Ссылки в виде атрибутов включаются в соответствующие элементы, например в элемент topic: <topic href= «url»>...</topic> где url (unified resource locator) - указатель на ресурс. Пример записи элементов XML-документа: <?xmlversion="1.0"?> <!DOCTYPE networks [ <!ELEMENTitem(featuresjdescription|examples)> <!ELEMENT features EMPTY> <!ATTLIST features type (Ethernet|TR|FDDI|other) «Ethernet» > <!ATTLIST features topology (bus|ring|star) «bus» > <!ELEMENT description (#PCDATA)> <!ELEMENT examples (#PCDATA)> <!ENTITY LAN "Local Area Network" > <item> <features type = TR' topology = 'ring’ /> <description>ThisisLAN</description> <examples> Protocol is IEEE 802.5 </examples> </item> Программная поддержка языка XML обеспечивается XML-процессорами. В состав XML-процессора входит синтаксический анализатор, который проверяет правильность соблюдения правил языка, но не производит форматирования. Дня форматирования документа используется другая компонента XML-процессора, поддерживающая каскадные таблицы стилей или язык форматирования XSL. К функциям программного обеспечения, поддерживающего XML, кроме синтаксического анализа и визуализации относятся поиск заданных фрагментов, создание, удаление, модификация элементов в XML- документе. Для поддержки этих функций в рабочей группе W3C, занимающейся вопросами Web-технологий, разрабатывается объектная модель HTML- и XML-документов DOM (Document Object Model), предназначенная для создания прикладного интерфейса API (Application Program Interface) к XML- документам.