СТАТЬЯ
02.07.02

XML технологии и средства разработки Gupta
Team Developer: XML технологии (Часть 1)

© С.А. Большаков

В статье, которая состоит из двух частей, рассмотрены основные понятия и возможно-сти технологий XML при построении информационных систем (часть 1) и возможности использования их при программировании в Gupta (Centura) Team Developer часть 2). Техно-логии XML обеспечивают высокий уровень универсальности при обмене данными между приложениями, при хранении данных в БД и универсализации доступа к данным в WEB-приложениях.

Введение

Язык XML появился относительно недавно в поле зрения IT специалистов, но уже завоевал всестороннее признание. Достаточно сказать, что он стал основой WEB технологий, универ-сальным механизмом взаимодействия программных систем и способом представления ин-формации в БД. Внешне он похож на язык HTML (тэговые операторные скобки), но, несо-мненно, функционально имеет более широкую сферу применения, и, думаю, не ошибусь, большое будущее.

В настоящее время на базе XML (Extensible Markup Language) появилось много новейших технологий, число которых постоянно растет. Некоторые их них мы рассмотрим ниже. Не-смотря на значительную простоту XML обеспечивает высокую универсальность - в простоте гениальность новых решений.

Основы и понятия XML

На рисунке 1 показаны основные возможности XML и основные программные компоненты, участвующие процессе обработки XML информации.

Рис. 1 Обобщенный взгляд на XML технологии.

Основные технологические процессы выделены красным цветом: обработка данных, обмен данными, хранение данными, проверка данных, преобразование данных и их генерирование. На рисунке выделены разновидности программных систем (синим цветом), участвующих в обработке данных: программные приложения, СУБД XML, XSL процессоры и WEB сервер-клиент компоненты. Данные на рисунке представлены (серые прямоугольники) в формате XML. Они необходимы: для непосредственного хранения (XML документ), для описания структур данных (XML схемы) и для преобразования данных (XSL правила-программы).

Особенности и возможности XML

  1. XML позволяет описывать структурированные данные. XML - язык описания данных. (Можно описывать все традиционные структуры данных: таблицы, массивы, вложенные структуры, деревья, списки, сети и т.д.)

  2. XML - поддерживается общедоступными СОМ и АХ объектами, интегрируемыми в опе-рационную систему и Интернет. СОМ XML позволяет генерировать, проверять, считы-вать, преобразовывать данные. XML поддерживает UNICODE формат данных. XML - это независимое от платформ средство описания данных. Имеются сопровождаемые ком-поненты XML (SDK XML), которые обеспечивают обработку данных практически в лю-бых языках программирования: C++, JAVA, Jscript, VBScript и др.

  3. Язык XML - внешне похож на формат HTML. Имеет тэги и атрибуты. XML - текстовый формат представления данных, однако, они не предназначены для чтения, а для перера-ботки, хранения и представления данных в WEB.
  4. XML - это семейство технологий, которые постоянно развиваются:
  5. 4.1. XML 1,0 базовый стандарт языка,
    4.2. XLINK - описывает правила добавления ссылок (URL) в XML документы,
    4.3. XPOINTER - описывает правила создания графических ссылок (URL),
    4.4. CSS - работает также как и для HTML,
    4.5. XSL и XSLT - это продвинутые языки преобразования и обработки XML докумен-тов,
    4.6. DOM - это стандартный объект (функции и методы) позволяющие про граммировать все действия по работе с XML документами.
    4.7. XML Schemas (1/2) - позволяет описывать свои подмножества языка XML и прове-рят ь правильность их построения
    4.8. XML Query - язык доступа к данным на основе запросов и многие другие.
  6. XML с одной стороны новый язык (предложен в 1996 г.), но не совсем, основы этого язы-ка закладывались еще в 80-х в ISO стандартах (SQML - предшественник HTML).
  7. XML позволяет преобразовать формат данных HTML в формате XHTML.
  8. XML - обеспечивает модульность представления и обработки данных: доступны меха-низмы пространства имен (namespace), комбинации нескольких подмножеств языков (XML Schemas), нескольких XSL обработчиков, RDF (Resource Description Framework) - общих стандартов группы W3C.
  9. XML не лицензируется, не зависит от платформ оборудования и ОС, достаточно просто сопровождается. COM обработчики интегрированы в IE 5.0 и выше.
  10. XML- служит основой построения XML ориентированных БД (и объектно-ориентированных БД), взаимодействие с которыми основано на базе языка XML Query.
  11. XML может служить основой для создания новых технологий, в том числе и для обмена информацией между приложениями, построения WEB и унификации форматов данных в Интернет.

Рассмотрим теперь некоторые из этих возможностей: описание данных на языке XML, про-верку данных на основе схем, преобразование данных на основе XSL, классы SDK XML.

Язык XML

Язык XML, в самом общем виде, - это набор простых правил для описания вложенных тек-стовых структур данных. Понятие документа: документ это совокупность элементов. Сам документ является элементом. Элемент может иметь произвольное число атрибутов (свойств). Атрибуты имеют значения и тип. На рисунке, расположенном ниже, представлен вид простейшего XML документа. Он состоит из заголовка и текста документа, включающе-го другие элементы и их атрибуты (в примере элементы: article, part, picture; атрибуты: version, file). Кроме того, в документе может располагаться обычный текст.

Рис. 2. Пример простого XML документа.

Описание элементов обязательно включает ключевые тэги (заголовки) начальный и конеч-ный, которые должны совпадать по наименованию:

<Article>…</Article>

В XML документе должен быть обязательно главный элемент (root - article). Допускается элемент без содержимого:

<Article/>

Элементы могут содержать другие элементы, которые могут располагаться в произвольном порядке, но писаны по правилам:

<Article><part>Текст1</part>
<article>Текст2<part/></article>
<part>Текст3</part>
</Article>

Элементы могут иметь атрибуты, которые задают уникальные свойства элементов и могут быть получены при обработке документа:

<имя элемента атрибут = "значение">
имя элемента>

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

<article id="1"name="Статья по XML">
Текст статьи по XML
</article>

Для обработки локализованного документа в заголовке указывается способ кодировки текста и элементов, например: (encoding для русского языка - 1251):

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

В этом случае документ может выглядеть так:

<статья> <Часть> Текст1
<Рисунок>Текст3Рисунок>
Часть>
<статья>Текст2<Часть/>статья>
<Часть>Текст3Часть>
статья>

Структуры данных, описываемых в XML

Язык XML обеспечивает описание сложных структур данных. В первую очередь это: списки, массивы, деревья. Описания могут иметь, в зависимости от типов элементов, вложенную структуру. На рисунке, представленном ниже, дано описание древовидной структуры дан-ных.

Рис. 3. Представление структур данных в виде дерева.

Если использовать специальные атрибуты или специальные элементы, то без труда можно описать и сетевые структуры данных. В первом случае атрибуты описывают ссылки на дру-гие узлы сетевой структуры. Если принять во внимание, что атрибутов может быть произ-вольное число (отмечу, что они могут формироваться и обрабатываться в приложениях), то можно описать размеченный граф произвольного вида. Если для определения связей выде-лить отдельные элементы типа связь (как в реляционных БД), то аналогично можно описать произвольную сетевую структуру данных. К примеру, даны следующие описания с помощью элементов-связей и атрибутов:

<Узел id="K" Link="1"></Узел>
<Связь from="1"to="2"/>, на рисунке ниже проиллюстрирована такая сеть.

Рис. 4. Представление сетевых структур в XML.

Проверка правильности документа в XML

Думаю, что на основе правил построения XML любой программист без особого труда напи-шет программку для проверки правильности произвольного документа XML. Однако этого делать совсем не обязательно, так как при загрузке автоматически выполняется проверка до-кумента, будь-то это в программе или броузере Интернет. Различают простую проверку до-кумента и проверку на основе дополнительных правил. Простая проверка выполняется, как показано на рисунке ниже, с помощью компоненты XML Validator, которая включается в СОМ объекты, поддерживающие XML программирование.

Рис. 5. Простая проверка документа XML.

Для описания XML документа могут быть заданы дополнительные правила: последователь-ность и количество вложенных элементов, перечень атрибутов и их допустимые значения, значения по умолчанию, возможность задания текста и другие. Такие правила описывают фактически новый язык, его синтаксис и семантику. Правила описываются в виде правил ре-курсивных грамматик (правосторонних). Эти правила могут быть заданы: в виде правил DTD - Documents Type Definitions (на базовом уровне) или в виде схем описания данных XML Schemas (на логическом уровне). На рисунке ниже схематично показана проверка документа подмножества XML языка, причем и DTD и схемы могут быть встроенные или описаны в отдельном XML документе.


Рис. 6. Проверка документа XML на основе DTD или Schemas

В правилах DTD описываются элементы и их допустимое содержание, атрибуты и их допус-тимые значения. Например, при описании с помощью DTD должен быть задан тип докумен-та, заданы элементы и их допустимые атрибуты:

<!DOCTYPE article[<!ELEMENT article (author, title, part*)>...
<!ATTLIST article
author CDATA #IMPLIED> ...]>

При описании с помощью схем файл описания грамматики XML в самом простейшем случае может быть выглядеть так:

<?xml version="1.0" encoding="Windows-1251"?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<AttributeType name="id" required="no" dt:type="string"/>
<ElementType name="title" dt:type="string">
</ElementType>
<ElementType name="part">
<attribute type="id"/> <element type="title"/>
</ElementType>
<Element Type name="picture" dt:type="string"></ElementType>
<ElementType name="article">
<element type="part"/>
<element type="picture"/>
</ElementType>
<ElementType name="Book">
<element type="article"/></ElementType>
</Schema>

В данной схеме документа определяется главный документ Book, который содержит элемен-ты article. Элемент article содержит элементы part и picture. Для элемента part описан ат-рибут id, которой должен быть типа string и является необязательным. Если при проверке на основе схем или DTD выявлена ошибка, то в программу или броузер сообщается и ее типе, месте и коде. Использование схем правил, позволяет задать практически любую грамматику, которая поддается формализованной обработке. Отмечу, что и схемы данных можно постро-ить в программе, т.е. мы получаем возможность генерации схемы языка и выполнения авто-матизированной синтаксическую и семантическую проверку документов XML на их основе.

Преобразование (трансформация) документов XML на базе XSL

Для обработки документа XML используются специальные компоненты XSLT процессоры. На рисунке ниже представлена схема обработки документа с его помощью.

Рис. 7. Преобразование документа на базе XSL.

Идея использования XSL (Extensible Style Language) сходна с идеей использования CSS для HTML, но эта технология значительно продвинута.

В специальном файле (*xsl) задаются правила-шаблоны обработки XML документа, резуль-татом является новый файл (XML, HTML и других произвольных типов текстовых докумен-тов).

Правила-шаблоны XSL разделяются на следующие группы:

XSL это удобный унифицированный способ задания процедур обработки XML документа без программирования.

В качестве XSLT элементов могут использоваться: apply-imports, apply-templates, copy, for-each, if, when, text, for-each, include, import, template и многие другие. Их набор зависит от ис-пользуемого процессора XSLT. В IE 5.0 такой процессор XSLT встроен.

В качестве примера рассмотрим простейшее преобразования документа XML в таблицу формата HTML. Исходным документом XML является документ, представленный на рисун-ке ниже. В этом документе описывается каталог (catalog) книг (book), каждая из которых со-держит: автора, заголовок, жанр, цену, дату публикации и описание (соответственно: author, title, genre, price, publish_date и description). Каждой книге присвоен уникальный иденти-фикатор с помощью атрибута id. В данном каталоге показано две книги. Для простоты де-монстрации не дается схема описания правил построения каталога. Для обработки данного документа XML предусмотрен файл шаблонов XSL, на который ссылается исходный доку-мент (href="xslsem.xsl"). Этот документ приведен на следующем рисунке.

Рис. 8. Исходный файл XML для преобразования XSL

Отметим, что тип преобразования задан: type="text/xsl". Кодировка encoding (1251) опреде-ляет возможность использования русского алфавита для документа.

Рис. 9. Файл правил преобразования XSL (xslsem.xsl).

В этом файле задан метод преобразования HTML документ (output metod="html"). Для ка-ждой книги (правило: for-each select ="//book") строится строка таблицы HTML, в которую включаются элементы книги (author, title, price) и вычисляемая переменная (variable) - bookCount. Заголовок таблицы оформляется обычным HTML текстом, который содержит ос-новные реквизиты выборки (Author, Title, price и Count). Результат работы XSLT процессора представлен на следующем рисунке, а на последнем рисунке показана таблица уже в броузе-ре.

Рис. 10. Результат трансформации XSLT

Рис. 11. Результат трансформации XSL в броузере

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

Продолжение

Во второй части статьи мы рассмотрим основы SDK XML и вопросы использования XML технологий в среде Centura Team Developer.

Дополнительная информация

Дополнительную информацию Вы можете получить в компании Interface Ltd.

Обсудить на форуме Gupta
Отправить ссылку на страницу по e-mail


Interface Ltd.
Тel/Fax: +7(095) 105-0049 (многоканальный)
Отправить E-Mail
http://www.interface.ru
Ваши замечания и предложения отправляйте автору
По техническим вопросам обращайтесь к вебмастеру
Документ опубликован:03.06.02