logo search
ответы осапр

41) Язык xml

Язык разметки XML (eXtensible Markup Language) разработан в 1996 г. Он, как и HTML, считается подмножеством языка SGML.

В настоящее время язык XML претендует на роль основного языка представления документов в информационных технологиях, его можно рассматривать как метаязык, служащий основой для создания частных языков разметки в различных приложениях. При этом XML более удобен, чем SGML, что обеспечивается устранением в XML некоторых второстепенных особенностей SGML. Описания на XML легче воспринимаются, приспособлены для использования в современных WWW-браузерах при сохранении основных возможностей SGML.

Для конкретных приложений создаются свои варианты XML, называемые XML-словарями или XML-приложениями. Известны словари для химии (CML — Chemical Markup Language), географии GML (Geography Markup Language), математичеких текстов MathML (Mathematical Markup Language), синтаксиса и семантики естественных языков LGML (Linguistics Markup Language), обмена данными по аутентификации и авторизации между системами безопасности SAML (Security Assertion Markup Language), описания голосоввых диалогов между человеком и компьютером VoiceXML и др. Для CALS интерес представляют варианты Product Definition eXchange (PDX) и 3D XML, посвященные обмену данными в CAE/CAD/CAM системах.

XML-документ состоит из пролога, корневого элемента "Документ", собственно и являющегося размеченным документом, таблицы определения типов(декларации DTD) и сведений по форматированию. Документ, сформированный в соответствии с синтаксическими правилами языка XML, при отсутствии DTD называют корректным, а при наличии DTD — валидным. Процессор отказывается от обработки некорректных документов. Отсутствие DTD в корректном документе считается ошибкой, но не препятствует обработке документа.

Пролог начинается со строки:

<?xml version="1.0" дополнения ?>

Эта строка указывает используемую версию языка XML (в данном случае версия 1.0). В эту строку можно в качестве дополнения включить также объявление автономности документа, если не предполагается связывать с документом какие-либо внешние файлы:

<?xml version="1.0" standalone='yes'?>

В дополнениях (или в отдельной команде) может быть указана используемая кодировка, например, encoding='ISO 8859-1'. В пролог могут входить также одна или несколько пустых строк, строки комментария и командные строки. Форма комментария:

<!--текст комментария-->

Текст комментария может включать любые символы, кроме двух дефисов.

Командные строки являются указанием XML-процессору на обработку документа. Они имеют вид:

<?команда?>

Элемент "Документ" представляет собой иерархически организованное множество элементов, являющихся размеченными фрагментами исходного документа. Фрагменты документа помещаются в контейнеры XML, обрамленные каждый открывающим <тип> и закрывающим </тип> тегами, где вместо слова "тип" записывается конкретный тип элемента. Типы элементов задаются в декларации DTD. Фрагменты могут иметь те или иные атрибуты (параметры), значения которых записываются внутри открывающего тега, т.е. тег имеет вид <тип атрибуты>.

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

<!DOCTYPE имя_документа SYSTEM "имя_файла_DTD">

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

Инструкции по форматированию документа, необходимые для его визуализации с помощью браузера, могут быть заданы несколькими способами. Один из них — использование каскадных таблиц стилей CSS, таких же, какие используют для HTML-документов. В этих таблицах для каждого типа элемента указаны способы визуализации — тип, размер, цвет шрифта, расположение на экране дисплея при просмотре. Таблица CSS помещается в отдельный файл. Ссылка на этот файл в XML-документе размещается в прологе и имеет вид:

<?xml-stylesheet type="text/css" href="имя_файла"?>

Здесь имя_файла — имя файла с таблицей CSS, это имя должно иметь расширение .css.

Пример пролога XML-документа:

<?xml version="1.0" ?>

<!-- Это заголовок документа dictionary -->

<?xml-stylesheet type="text/css" href="dict.css"?>

<!DOCTYPE dictionary SYSTEM "dict.dtd">

В заголовке записаны номер используемой версии языка XML (version="1.0"), имя документа (в нашем примере dictionary), ссылки на файлы, в которых размещены таблицы CSS (файл dict.css) и DTD (файл dict.dtd):

Основные рассмотренные свойства XML-документов поясним следующим примером. Пусть исходный неразмеченный документ представляет собой фрагмент словаря, состоящий из трех пунктов (в нашем примере названия пунктов CALS, Ethernet, PDM). Каждый пункт относится к одному из понятий определенной предметной области и включает название понятия, его краткое определение и возможно некоторые поясняющие примеры.

Целесообразно использовать иерархическую структуру документа: верхний уровень относится к пунктам словаря, нижний уровень относится к элементам пункта. Принятая структура отражается в DTD.

После разметки исходного текста получаем XML-документ следующего вида:

<?xml version="1.0" ?>

<?xml-stylesheet type="text/css" href="dict.css"?>

<!DOCTYPE dictionary [

<!ELEMENT dictionary (item)>

<!ELEMENT item (termin,description,examples?)>

<!ELEMENT termin (#PCDATA)>

<!ATTLIST termin number ID #REQUIRED>

<!ATTLIST termin group (technology|networks|software|other) #REQUIRED>

<!ELEMENT description (#PCDATA)>

<!ELEMENT examples (#PCDATA)>

<!ENTITY ЛВС "локальная вычислительная сеть">

]>

<dictionary>

<item>

<termin number ='_14' group='technology'> CALS </termin>

<description> - Continuous Acquisition and Lifecycle Support,

информационное сопровождение и поддержка этапов жизненного цикла

промышленных изделий. Технология взаимодействия различных

автоматизированных систем в промышленности.

</description>

</item>

<item>

<termin number ='_24' group='networks'> Ethernet </termin>

<description> - &ЛВС с методом доступа МДКН/ОК.

</description>

<examples> Варианты реализации 10Base-5, 10 Base-T, 100Base-X. Gigabit Ethernet.

</examples>

</item>

<item>

<termin number ='_52' group='technology'> PDM </termin>

<description> - Product Data Management, управление проектными данными.

Системы PDM, называемые также системными средами, входят в состав

программного обеспечения CALS-технологий.

</description>

<examples> Windchill eSeries,iMAN, SmartTeam, Optegra.

</examples>

</item>

</dictionary>

В приведенном примере XML-документа атрибут number относится к маркерному типу. Его идентификатор ID означает, что этот атрибут должен иметь уникальные значения для каждого элемента termin, т.е. number является ключевым атрибутом (значения типа ID не должны начинаться с цифры, поэтому в примере используется знак подчеркивания).

В нашем примере XML-документа dictionary используются каскадные таблицы стилей. Пусть мы хотим элементы типа termin выделить полужирным шрифтом (bold) 12-го размера с отступом первой строки на 5 мм, а элементы типа examples — курсивом (italic) 10-го размера с отступом на 10 мм. Тогда таблица CSS, помещаемая в файл dict.css, должна быть задана в виде:

item

{display:block;}

termin

{font-weight:bold; font-size:12pt; text-indent:5mm; font-style:normal;}

description

{font-size:12pt;}

examples

{display:block; font-style:italic; font-size:10pt; text-indent:10mm;}

Обращение к браузеру для просмотра нашего документа позволит увидеть текст, представленный на рис. 1.

Рис. 1.  Пример XML-документа

Часто возникает необходимость включения в XML-документ символов, отсутствующих на клавиатуре компьютера (например, буквы греческого алфавита) или на символы, относящиеся к служебным символам языка. На них следует ссылаться с помощью записи&#код_символа_по_ISO/IEC10646;.

Кроме того, для символов &, <, >, ', " можно использовать ссылки &<>'" соответственно.

В языке XML расширены возможности гиперсвязей. Механизм связей в XML изложен в спецификациях XLink и XPointer.

Программная поддержка языка XML обеспечивается XML-процессорами. В состав XML-процессора входит синтаксический анализатор, который проверяет правильность соблюдения правил языка, но не производит форматирования. Для форматирования документа используется другая компонента XML-процессора, поддерживающая каскадные таблицы стилей или язык форматирования XSL.

К функциям программного обеспечения, поддерживающего XML, кроме синтаксического анализа и визуализации, относятся поиск заданных фрагментов, создание, удаление, модификация элементов в XML-документе. Для поддержки этих функций в рабочей группе W3C, занимающейся вопросами Web-технологий, разрабатывается объектная модель HTML и XML-документов DOM (Document Object Model), предназначенная для создания прикладного интерфейса API (Application Program Interface) к XML-документам, и соответствующие языки запросов XPath (XML Path Language), XQuery, XSLT, позволяющие ссылаться на части XML-документов..