XML технологии и средства разработки Gupta Team Developer: XML и CTD. Часть 1С.А. Большаков
Оглавление
В статье, которая состоит из двух частей, рассмотрены основные понятия и возможности технологий XML при построении информационных систем (часть 1) и возможности использования их при программировании в Gupta Team Developer (часть 2). Технологии XML обеспечивают высокий уровень универсальности при обмене данными между приложениями, при хранении данных в БД и универсализации доступа к данным в WEB-приложениях. Язык XML появился относительно недавно в поле зрения IT специалистов, но уже завоевал всестороннее признание. Достаточно сказать, что он стал основой WEB технологий, универ-сальным механизмом взаимодействия программных систем и способом представления ин-формации в БД. Внешне он похож на язык HTML (тэговые операторные скобки), но, несо-мненно, функционально имеет более широкую сферу применения, и, думаю, не ошибусь, большое будущее. В настоящее время на базе XML (E x tensible M arkup L anguage) появилось много новейших технологий, число которых постоянно растет. Некоторые их них мы рассмотрим ниже. Не-смотря на значительную простоту XML обеспечивает высокую универсальность - в простоте гениальность новых решений. Основы и понятия XML На рисунке 1 показаны основные возможности XML и основные программные компоненты, участвующие процессе обработки XML информации. Рис. 1 Обобщенный взгляд на XML технологии. Основные технологические процессы выделены красным цветом: обработка данных, обмен данными, хранение данными, проверка данных, преобразование данных и их генерирование. На рисунке выделены разновидности программных систем (синим цветом), участвующих в обработке данных: программные приложения, СУБД XML, XSL процессоры и WEB сервер-клиент компоненты. Данные на рисунке представлены (серые прямоугольники) в формате XML. Они необходимы: для непосредственного хранения (XML документ), для описания структур данных (XML схемы) и для преобразования данных (XSL правила-программы).
Рассмотрим теперь некоторые из этих возможностей: описание данных на языке XML, про-верку данных на основе схем, преобразование данных на основе XSL, классы SDK XML. Язык XML, в самом общем виде, - это набор простых правил для описания вложенных тек-стовых структур данных. Понятие документа: документ это совокупность элементов. Сам документ является элементом. Элемент может иметь произвольное число атрибутов (свойств). Атрибуты имеют значения и тип. На рисунке, расположенном ниже, представлен вид простейшего XML документа. Он состоит из заголовка и текста документа, включающе-го другие элементы и их атрибуты (в примере элементы : article, part, picture; атрибуты : version, file). Кроме того, в документе может располагаться обычный текст. Рис. 2. Пример простого XML документа. Описание элементов обязательно включает ключевые тэги (заголовки) начальный и конеч-ный, которые должны совпадать по наименованию:
Для обработки локализованного документа в заголовке указывается способ кодировки текста и элементов, например: (encoding для русского языка - 1251):
В этом случае документ может выглядеть так:
Структуры данных, описываемых в XML Язык XML обеспечивает описание сложных структур данных. В первую очередь это: списки, массивы, деревья. Описания могут иметь, в зависимости от типов элементов, вложенную структуру. На рисунке, представленном ниже, дано описание древовидной структуры дан-ных.
Если использовать специальные атрибуты или специальные элементы, то без труда можно описать и сетевые структуры данных. В первом случае атрибуты описывают ссылки на дру-гие узлы сетевой структуры. Если принять во внимание, что атрибутов может быть произ-вольное число (отмечу, что они могут формироваться и обрабатываться в приложениях), то можно описать размеченный граф произвольного вида. Если для определения связей выде-лить отдельные элементы типа связь (как в реляционных БД), то аналогично можно описать произвольную сетевую структуру данных. К примеру, даны следующие описания с помощью элементов-связей и атрибутов:
Рис. 4. Представление сетевых структур в XML. Проверка правильности документа в XML Думаю, что на основе правил построения XML любой программист без особого труда напи-шет программку для проверки правильности произвольного документа XML. Однако этого делать совсем не обязательно, так как при загрузке автоматически выполняется проверка до-кумента, будь-то это в программе или броузере Интернет. Различают простую проверку до-кумента и проверку на основе дополнительных правил. Простая проверка выполняется, как показано на рисунке ниже, с помощью компоненты XML Validator, которая включается в СОМ объекты, поддерживающие XML программирование. Рис. 5. Простая проверка документа XML. Для описания XML документа могут быть заданы дополнительные правила: последователь-ность и количество вложенных элементов, перечень атрибутов и их допустимые значения, значения по умолчанию, возможность задания текста и другие. Такие правила описывают фактически новый язык, его синтаксис и семантику. Правила описываются в виде правил ре-курсивных грамматик (правосторонних). Эти правила могут быть заданы: в виде правил DTD - Documents Type Definitions (на базовом уровне) или в виде схем описания данных XML Schemas (на логическом уровне). На рисунке ниже схематично показана проверка документа подмножества XML языка, причем и DTD и схемы могут быть встроенные или описаны в отдельном XML документе.
В правилах DTD описываются элементы и их допустимое содержание, атрибуты и их допус-тимые значения. Например, при описании с помощью DTD должен быть задан тип докумен-та, заданы элементы и их допустимые атрибуты:
При описании с помощью схем файл описания грамматики XML в самом простейшем случае может быть выглядеть так:
В данной схеме документа определяется главный документ Book, который содержит элемен-ты article. Элемент article содержит элементы part и picture. Для элемента part описан ат-рибут id, которой должен быть типа string и является необязательным. Если при проверке на основе схем или DTD выявлена ошибка, то в программу или броузер сообщается и ее типе, месте и коде. Использование схем правил, позволяет задать практически любую грамматику, которая поддается формализованной обработке. Отмечу, что и схемы данных можно постро-ить в программе, т.е. мы получаем возможность генерации схемы языка и выполнения авто-матизированной синтаксическую и семантическую проверку документов XML на их основе. Преобразование (трансформация) документов XML на базе XSL Для обработки документа XML используются специальные компоненты XSLT процессоры. На рисунке ниже представлена схема обработки документа с его помощью.
Рис. 7. Преобразование документа на базе XSL. Идея использования XSL (E x tensible S tyle L anguage) сходна с идеей использования 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. |