Введение в XML

Данная лекция является введением в XML технологию. В ней рассматриваются следующие вопросы:

Разработка стандартов и работы, связанные с развитием и использованием XML (eXtensible Markup Language – расширенный язык разметки), начали появляться в первой половине 90-х годов, и уже к концу 90-х годов она получила достаточно широкое распространение.

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

В настоящее время XML технология полностью завоевала ИТ индустрию и является одной из самых востребованных и используемых технологий. Какую бы отрасль или направление информационных технологий мы не взяли (операционные системы, Интернет, базы данных, компьютерные сети, обмен сообщениями, графику), в той или иной, а как правило, в очень  большой степени используется XML технологии.

Так же они очень широко используются как средство описания предметной области при разработке систем управления в различных отраслях промышленности, сферы услуг, социальной сферы. В качестве примеров такого использования XML технологий могу привести примеры, с которыми мне приходилось сталкиваться по роду своей деятельности. В сфере занятости и трудоустройства – разработки международного консорциума HR Consortium, в сфере полиграфии консорциума CIP4.

Так что же обусловило появление XML? Что было до него? Не на пустом же месте он появился.

1       Предыстория появления XML

Язык XML можно сказать вышел, или боле точно, является подмножеством языка разметки SGML (Standard Generalized Markup Language – Стандартный Обобщенный Язык Разметки). SGML был разработан в начале 60-х годов прошлого века фирмой IBM. В 1986 году он был признан ISO (International Standard Organization – Международная организация по стандартизации) в качестве международного стандарта. Примерно в то же время SGML, в качестве своего стандарта, используемого для подготовки документов, приняло Министерство обороны США.

Язык SGML – это мощный язык разметки документов, обладающий очень большими возможностями. Однако, как это часто бывает, именно из его достоинств вытекают его недостатки.

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

У меня был опыт работы с SGML. В 95-96 году я участвовал в проекте на базе операционной системы OS/2 v.3.0 фирмы IBM. При разработке документации использовался SGML. Дело было давно, но памяти осталось – CD ROM полностью заполненный документацией по SGML и, что реально использовалось очень небольшое количество тегов.

Другим, в данном случае не источником, а скорее толчком появления XML, явился язык HTML (Hyper Text Markup Language – гипертекстовый язык разметки). Данный язык был разработан в конце 80-х годов. Его создатель – Тим Бернс-Ли, в то время сотрудник лаборатории физики частиц (CERN) в Швейцарии.

В CERN была проблема. В ней работали ученые, которые приезжали в эту организацию работать на 3-5 лет. Каждый при разработке отчетов, документации применял свои методы представления документов, что, естественно, вызывало трудности использования документов другими специалистами.

Тим Бернс-Ли, взяв за основу SGML, разработал очень простой язык разметки документов. Именно простота нового языка, а также возможность встраивания гипертекстовых ссылок, а также независимость от аппаратной платформы обусловило его широкое распространение.

Особенно бурное развитие это язык получил, когда в 1992 году появилась первая система с графическим интерфейсом для отображения HTML документов. Эту систему, названную Mosaic, разработал, тогда еще студент Иллинойского университета, Марк Андерсен, впоследствии создавший фирму Netscape, выпускавшую известный браузер Netscape Navigator.

Однако, уже через несколько лет, стали выявляться недостатки HTML. Для того времени (середина 90-х годов) можно было отметить следующее:

Представленные выше, а также целый ряд других недостатков HTML, заставили задуматься о разработке для Интернет языка разметки следующего поколения. Именно этим языком, как тогда предполагалось, и должен был стать XML.

Рабочая группа по разработке XML была сформирована в 1996 году и при разработке нового языка должна была обеспечить решение набора требований:

Важно отметить, что условие обеспечения краткости описания перед XML не ставилась.

В Рекомендации XML возможность его использования в Интернет была поставлена на первое место. Однако, как это часто бывает, жизнь распорядилась по-своему. Хотя в настоящее время в Интернет существует целый ряд сайтов, разработанных на «чистом» XML, как мы можем видеть, XML не заменил HTML.

HTML сам стал эволюционировать в сторону XML. В нем появилась возможность разделения описания и представления информации за счет включения  CSS (Cascading Style Sheets – каскадных таблиц стилей (хотя, если переводить дословно, то каскадных листов стилей)).

Развивались технологии совместного использования HTML с целым рядом языков программирования, что позволило обеспечить динамичное представление информации, связь с базами данных. Браузеры превратились из программ отображения HTML страниц в мощную среду исполнения.

Для HTML 4 был разработан справочник на основе DTD (см. лекцию «Document Type Definition»), который является составной частью XML технологии, т.е. HTML стал одной из реализаций XML (хотя полностью, 100%, это можно говорить только применительно к XHTML).

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

2 Краткий обзор стандартизации основных направлений XML технологии

Основной организацией, занимающейся разработкой и продвижением стандартов XML технологии, является World Wide Web Consortium (W3C).

Данная организация отвечает за разработку и выпуск стандартов не только в области XML технологий, но целого ряда других направлений в той или иной мере связанных с Интернет. Более подробно с Рекомендациями и деятельностью W3C можно ознакомиться на ее сайте по адресу www.w3c.org.

Хотя документы, выпускаемые W3C, называются Рекомендациями на самом деле это полноценные стандарты, поддерживаемые всем IT сообществом.

Процесс принятия стандартов W3C проходит следующие этапы:

В разработке Рекомендаций участвуют и другие организации, такие как

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

Таблица 2 – Состав стандартов XML технологии

Название стандарта

Статус

Краткая характеристика

Уровень изучения

XML 1.0 

Рекомендация W3C

Представлены требования к XML документу и описание DTD

Изучается

Namespaces in XML

Рекомендация W3C

Описывает механизм универсального обозначения имен элементов и атрибутов в XML документах

Изучается

XML Schema

Рекомендация W3C

Описывает язык XML схемы

Изучается

Simple API for XML (SAX)

Общественный стандарт

Описывает управляемый событиями интерфейс прикладного программирования

Изучается

Document Object Model (DOM)

Рекомендация W3C

Описывает объектная модель XML документов для доступа и манипулирования частями XML документа

Изучается

XML Path Language (XPath)

Рекомендация W3C

определяет синтаксис и модель данных для адресации частей XML документа

Изучается

Extensible Stylesheet Language Transformations (XSLT)

Рекомендация W3C

Определяет язык, используемый для описания преобразований XML документа

Изучается

XQuery

Рекомендация W3C

Описывает специализированный язык обработки XML документа

Изучается

XML Information Set

Рекомендация W3C

Определяет абстрактный способ описания XML-документа

В обзоре

Cascading Style Sheets (CSS)

Рекомендация W3C

Описывает применение стилей представления к разметке. Может использоваться в HTML и XML документах

В обзоре

Extensible Stylesheet Language (XSL)

Рекомендация W3C

Описывает применение стилей представления к разметке.

В обзоре

XML Inclusions (XInclude)

В стадии разработки

Определяет систему для объединения XML-документов. Может использоваться только в XML документах

В обзоре

XPointer Framework

Рекомендация W3C

определяет язык, используемый для указания фрагментов XML документа

В обзоре

XML Linking Language (XLink)

Рекомендация W3C

Определяет общую структуру для выражения ссылок в XML документах

В обзоре

XForms 

Рекомендация W3C

Определяет Web-формы для обработки данных XML

В обзоре

XML Base

 

Определяет способ ассоциирования XML элементов с URI

Не изучается

Canonical XML Version

Рекомендация W3C

Определяет стандартный метод генерации физического представления XML документа

Не изучается

RELAX NG

Спецификация OASIS, стандарт ISO

Описывает язык XML схемы

Не изучается

The Schematron Assertion Language

Общественный стандарт

Описывает язык XML схемы

Не изучается

SQL/XML

Стандарт ISO

Описывает множество связанных с XML расширений для SQL

Не изучается

SOAP

Рекомендация W3C

Описывает протокол передачи сообщений в Интернет на базе XML

Не изучается

3 Понятие разметки и форматирования

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

Чем отличается форматирование от разметки, почему в каких-то случаях используется один термин, а в каких-то другой?

Внешне, если посмотреть на отформатированный или размеченный документ, они достаточно похожи. В текст документа добавлен набор тегов или каких-либо других специальных символов.

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

Под понятием «разметка» мы будем понимать расстановку тегов в документе, предназначенную для описания структуры документа.

Например, нам нужно представить информацию о книге, включающую ее название, год издания и автора (или авторов, если их несколько). Возможные фрагменты реализации данной задачи в HTML и XML представлены ниже.

Фрагмент HTML документа:

  <table width=”100%”  border=”1”>
     <tr>
        <th width=”50%”><u>Название книги</u></th>
        <th width=”20%”><u>Год издания</u></th>
        <th width=”30%”><u>Автор</u></th>
     </tr>
     <tr>
        <td>Программирование</td>
        <td>2009</td>
        <td>Иванов И.И.</td>
     </tr>
  . . .
     <tr>
        <td>Базы данных</td>
        <td>2010</td>
        <td>Петров П.П., Сидоров С.С.</td>
     </tr>
  </table>
  

Фрагмент XML документа:

  <books>
     <book>
        <title>Программирование</title>
       <year_pulishing>2009</year_pulishing>
        <authors>
           <author>Иванов И.И.</author>
        </authors>
     </book>
     <book>
        <title>Базы данных</title>
        <year_pulishing>2010</year_pulishing>
        <authors>
           <author>Петров П.П.</author>
           <author>Сидоров С.С.</author>
        </authors>
     </book>
  </books>
  

Фрагмент HTML документа говорит о том, что информация будет отображаться в виде таблицы из трех колонок. Первая строка таблицы является заголовком. В заголовке таблицы по умолчанию текст будет отображаться жирным шрифтом, и располагаться посередине ячейки. Кроме того он будет подчеркнут. В таблице будет две строки. Текст в них будет нормальным и выровнен по левому краю. Здесь мы выполнили форматирование текста, т.е. задали правила его представления в браузере на экране монитора.

Фрагмент XML документа говорит о том, что мы описываем книги, причем в данном случае их две. О каждой книге имеется следующая информация: название, годе издания и авторы (причем точно понятно, сколько у книги авторов). Здесь мы разметили информацию, отразив ее структуру, но как она будет представляться на устройстве вывода не ясно.

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

Разделение описание структуры информации и ее представления имеет ряд положительных моментов:

4 Структура XML документа

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

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

Рисунок 1 – Состав XML документа

4.1 Пролог

4.1.1 Объявление XML

Пролог начинается с объявления XML документа. Объявление XML документа имеет вид:

<?xml version=”версия” [encoding=”кодировка”] [standalone=(“yes” | “no”)] ?>

Параметр version=”версия” объявляет значение номера версии Рекомендации XML, которой должен соответствовать XML документ. В настоящее время действует Рекомендация с номером 1.0. Поэтому параметр version должен иметь значение ”1.0”. Ниже представлено минимально допустимое объявление XML

<?xml version=”1.0”?>

Существующая Рекомендация XML допускает отсутствие объявления XML. В этом случае программа, обрабатывающая XML документ, сама должна подставить минимально допустимое объявление XML.

Параметр encoding=”кодировка” объявляет, в какой кодировке требуется воспринимать символы XML документа при его обработке и отображении. Если данный параметр опущен, то XML документ должен быть представлен либо в кодировке UTF-8, либо в UTF-16. В Рекомендации XML определено, что именно эти две кодировки должны поддерживаться всеми программами обработки XML документов. С использованием параметра encoding объявление XML, например, для работы в Windows с кириллицей, будет иметь вид:

<?xml version=”1.0” encoding=”Windows-1251”?>

Параметр standalone=(“yes” | “no”) объявляет – является ли XML документ одиночным, т.е. он использует или не использует внешние объявления разметки. В случае указания “yes” предполагается, что внешние объявления разметки не должны использоваться, т.е. XML документ будет одиночным. В противном случае следует указывать “no”. Если данный параметр опущен, то по умолчанию предполагается значение “no”.

4.1.2 Объявление схем

Если XML документ должен быть действительным (см. п. 5.2 «Действительные документы»), то с ним должна быть сопоставлена схема, объявление которой размещается в прологе после объявления XML, но перед корневым элементом. В зависимости от используемой схемы (DTD или XML Schema) объявление выполняется по-разному.

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

4.2 Тело документа

Тело документа может состоять из следующих конструкций:

4.2.1 Элементы

Элемент – это основная часть XML документа. Не может быть XML документа без элементов. Более подробно об этом поговорим в следующем разделе «Требования к XML документу и его компонентам».

Границы элемента задаются двумя способами:

Вместо пустого элемента можно использовать эквивалентную ему запись начального и конечного тега:

<book></book>

Элемент может не иметь или иметь любое количество атрибутов. Назначение атрибута – уточнение каких-либо характеристик элемента. Атрибуты могут применяться либо в начальном теге, либо в теге пустого элемента, например:

  <book  id=”num-582” year=”2010”>
     <title>Основы XML</title>
  </book>
  

В представленном примере для элемента book определены два атрибута (id – номер книги в библиотечном каталоге и год издания книги).

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

  <book title=” Основы XML”>
     <id>num-582</id>
     <year>2010</year>
  </book>
  

Использовать или не использовать атрибуты, если использовать, то как – это при создании корректного XML документа определяет его разработчик, а при создании действительного XML документа должно быть задано в его схеме.

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

Требования, описывающие правильное использование элементов, рассматриваются в п. 5.1.1, а атрибутов в п. 5.1.2.

4.2.2 Комментарии

Назначение комментариев пояснять особенно не надо. Их использование позволяет сделать XML документ более понятным.

Текст комментария должен заключаться между символами «<!--» и «-->», как это показано ниже:

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

Требования, описывающие правильное использование комментариев, рассматриваются в п. 5.1.3.

4.2.3. Инструкции обработки

Инструкция обработки (processing instruction, PI) – это конструкция, применяемая в XML документе для передачи определенных указаний обработчику XML документа. Обработчик XML документа, принимая такую инструкцию, должен знать, что с ней делать. Возможный набор допустимых инструкций обработки не определяется в Рекомендации XML и зависит от используемого обработчика XML документа. 

Инструкция обработки всегда должна обрамляться символами «<?» и «?>» и иметь следующий формат:

<?код  содержание?>

где: код – это имя, идентифицирующее приложение, которому предназначена инструкция;

содержание – текст, который передается приложению для обработки.

            Рекомендация XML зарезервировала имена xml и XML для собственных нужд, поэтому они не могут принимать значение кода инструкции обработки.

4.2.4 Секция CDATA

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

Секция CDATA может находиться в любом месте XML документа, где могут находиться символьные данные. Она имеет следующий формат:

<![CDATA[текст]]>

где: текст – набор символов, вставляемый в секцию CDATA;

«<![CDATA» и «]]>» – фиксированный набор символов начала и конца этой секции.

Требования, описывающие правильное использование секции CDATA, рассматриваются в п. 5.1.5.

Пример использования секции CDATA представлен ниже:

  <![CDATA[
     <book  id=”num-582” year=”2010”>
        <tile>Основы XML</title>
     </book>
  ]]>
  

В данном примере обработчик XML документа не будет подвергать анализу элемент book, его атрибуты и содержание.

5 Требования к XML документу и его компонентам

Давайте теперь рассмотрим, какими могут быть XML документы, и каким требованиям они должен удовлетворять.

Требования, предъявляемые к XML документу, определены W3C в Рекомендации XML 1.0.

Рекомендация XML определяет два типа XML документов:

5.1 Корректные документы

Корректный документ должен соответствовать следующим условиям:

5.1.1 Требования, предъявляемые к элементам:

5.1.2 Требования, предъявляемые к атрибутам

5.1.3 Требования, предъявляемые к комментариям

5.1.4 Требования, предъявляемые к символам

Таблица 2 – Символы замены

Исходный символ

Символ замены

< (меньше)

&lt;

& (апостроф)

&amp;

> (больше)

&gt;

(амперсанд)

&apos;

(двойная кавычка)

&quot;

5.1.5 Требования, предъявляемые к секции CDATA

5.2 Действительные документы

Чтобы XML документ был действительным он должен:

6 Обработка XML документов

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

Для проверки корректности и, если задана схема, действительности XML документов используются специальные программы анализаторы, часто называемые парсеры (от английского слова parser – анализатор).

Анализаторы можно классифицировать по следующим характеристикам:

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

Так в Windows имеется анализатор с именем msxml, за которым идет номер его версии, например msxml6. Это очень функционально мощный анализатор, обеспечивающий поддержку практически всех  новых стандартов, существующих на момент его разработки.

В Linux одним из самых известных анализаторов является Xerces, поддерживаемый фирмой Apache. Также мощные анализаторы разработали такие крупные фирмы как IBM, Oracle и ряд других.

В последнее время стали доступны анализаторы, работающие в online, т.е. вы указываете на Web странице URL вашего XML документа, выполняется его анализ, и результат отражается на новой Web странице. Один из таких online анализаторов доступен на сайте W3C по адресу www.w3c.org/parser.  

Список литературы

1. Стандарты W3C на сайте www.w3c.org

2. Большой список книг по различным аспектам XML технологии находится здесь.

Сайт создан в системе uCoz