Возникновение языка XML и особенности перевода сообщений с реляционного языка на XML
Реляционный язык как язык кортежей и отношений. Структурированные данные документа и их отделение от способа их логико-графического представления (разметки) в виде списков, параграфов, таблиц, диаграмм. Описание наборов вложенных друг в друга тегов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 17.01.2018 |
Размер файла | 67,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Возникновение языка XML и особенности перевода сообщений с реляционного языка на XML
А.М. Камысбаев
В статье рассмотрены особенности перевода с реляционного языка на язык XML и наоборот. Реляционный язык - это язык кортежей и отношений. Внешним представлением сообщений на реляционном языке является набор двухмерных таблиц. Конкретное приложение, работающее с РБД, делает разметку отношений, кортежей и значений в таблицы, строки (записи) и клетки (поля) и придает им некоторый внешний вид, обычно по опциональному выбору пользователя.
XML - это самостоятельная технология, хотя и возникшая исторически как Internet- технология. Представляется важным рассмотреть технологию XML в отрыве от Internet и в связи с технологиями баз данных: реляционной, объектной и концепцией корпоративных хранилищ. Как связан язык XML с реляционным, почему на его основе может и должна быть построена модель данных, что собой представляет XML- ориентированная база данных, существуют ли таковые на сегодняшний день - этим вопросам посвящена настоящая статья.
Рассмотрим исторические причины возникновении XML как языка. На исторические причины возникновения XML можно посмотреть с двух различных, но связанных между собой точек зрения (рисунок 1):
Рисунок 1. Две точки зрения возникновения XML
Первая точка зрения состоит в том, что семантическая ограниченность языка разметки гипертекста HTML не позволяла разработчику Web-приложений описывать специфичную информацию, например, химические или математические формулы [1]. Возникла практическая потребность в других языках разметки, структурно аналогичных HTML, но с другой семантикой. В результате стараний Интернет-консорциума W3C был создан метаязык XML, на основе которого заинтересованные разработчики создали и создают специфичные дочерние языки разметки - CML, MathML и уже десятки других. С учетом небольшой синтаксической доработки, HTML также является дочерним языком XML.
Согласно второй точки зрения информация, заключенная в любом документе, в том числе и в Web-странице, является в большей или меньшей степени регулярной. Ранние варианты HTML слабо учитывали эту регулярность, что приводило к громоздкости сообщений на этом языке и не вполне удовлетворяло разработчиков Web-приложений. Первым делом, стараниями W3C-консорциума, разработчикам была предоставлена возможность вычленить из HTML-документа описание внешнего вида отдельных, регулярно повторяющихся его фрагментов в самостоятельный объект - таблицу стилей CSS. Далее была вычленена в самостоятельный объект собственно разметка - таблица стилей XSL, которую, возможно, следовало бы более точно назвать таблицей шаблонов разметки. В итоге остался XML-документ, описывающий в чистом виде структуру данных документа.
Таким образом, структурированные данные документа были отделены от способа их логико-графического представления (разметки) в виде списков, параграфов, таблиц, диаграмм и т.п., а логико-графическое представление от конкретного внешнего вида (стиля) - размеров, цветов, начертаний и т.п.
В общем виде XML-документ имеет структуру произвольного дерева, которая описывается набором вложенных друг в друга тегов, каждый из которых имеет следующий синтаксический вид:
<ИмяУзла ИмяАтр 1="значение" ИмяАтр 2="значение" ... > вложенные теги и тексты </ИмяУзла> реляционный тег графический
Разница этих двух точек зрения на XML состоит в том, что ставить во главу угла - разметку или данные. В первом случае имена тегов и их атрибутов являются указателями на конкретный шаблон разметки и стандартизуются в словарях-спецификациях XML для каждого конкретного языка разметки. Во втором случае имена тегов XML - это указатели регулярных данных самого XML- документа. Нас интересует второй вариант, и под XML- документом мы будем понимать структуру данных документа, выраженную языком XML. Далее рассмотрим особенности перевода с реляционного языка на язык XML и наоборот. Реляционный язык - это язык кортежей (неупорядоченных множеств пар "Имя Реквизита-Значение Реквизита") и отношений (неупорядоченных множеств кортежей, имеющих одинаковый набор имен реквизитов). Внешним представлением сообщений на реляционном языке является набор двухмерных таблиц [2]. Конкретное приложение, работающее с РБД, делает разметку отношений, кортежей и значений в таблицы, строки (записи) и клетки (поля) и придает им некоторый внешний вид, обычно по опциональному выбору пользователя.
Внешним представлением сообщений на языке XML является набор реальных документов (и электронных, и бумажных), визуализация которых происходит при помощи универсального браузера (например, IE5) на основании XSL и CSS.
Перевод сообщений с реляционного языка на XML синтаксически не однозначен. Для иллюстрации рассмотрим простой пример, состоящий из 3 отношений, 5 реквизитов и 5 кортежей (рисунок 2).
В простейшем и наиболее компактном варианте получается следующая конструкция (вариант 1):
<DataBase>
<Tab1 A="a1" C="c1"/>
<Tab2 B="b1" D="d1"/>
<Tab2 B="b2" D="d2"/>
<Tab3 A="a1" B="b1" E="e1"/>
<Tab3 A="a1" B="b2" E="e2"/></DataBase>
Ее недостатком является неоднородность представления кортежей и значений, что, например, осложняет отображение расширенных реляционных моделей. Если значения оформлять также в виде тегов, то получим следующее (вариант 2):
<DataBase>
<Tab1><A>a1</A><C>c1</C></Tab1>
<Tab2><B>b1</B><D>d1</D></Tab2>
<Tab2><B>b2</B><D>d2</D></Tab2>
<Tab3><A>a1</A><B>b1</B><E>e1</E></Tab3>
<Tab3><A>a1</A><B>b2</B><E>e2</E></Tab3></DataBase>
Оба варианта используют двухуровневую вложенность XML-узлов, с помощью которой устанавливаются направленные связи кортеж-значение. Направленные связи от записей Tab1 к записям Tab3 и от записей Tab2 к записям Tab3 (Tab3 обычно называют таблицей-связкой для реализации связей типа "многие-ко-многим") указываются одинаковыми значениями ключевых реквизитов A и B. В языке XML связи обычно указываются явно путем вложения тегов друг в друга и путем применения ссылок. Это позволяет в нашем примере убрать ссылочные ключи в Tab3 и установить ссылки на одного родителя путем вложения тега Tab3 в Tab2 и на второго родителя (Tab1) с помощью атрибутов Id и Ref (вариант 3):
<DataBase>
<Tab1 Id="#1">
<A>a1</A>
<C>c1</C></Tab1>
<Tab2>
<B>b1</B>
<D>d1</D>
<Tab3 Ref1="#1">
<E>e1</E></Tab3></Tab2>
<Tab2>
<B>b2</B>
<D>d2</D>
<Tab3 Ref1="#1">
<E>e2</E></Tab3></Tab2></DataBase>
Для того чтобы выполнить обратную операцию - привести произвольные XML- данные к реляционным - в первую очередь их необходимо преобразовать к одному из описанных выше вариантов. Для примера возьмем вариант 3.
1. Для каждого тега (в общем виде) вынесем все атрибуты, кроме Id и Ref, и все фрагменты текста в отдельные вложенные теги. Получится следующая структура:
<ИмяУзла Id="Указатель" Ref1="Указатель" Ref2="Указатель"...>
<ИмяАтр 1> Значение </ИмяАтр 1>
<ИмяАтр 2> Значение </ИмяАтр 2>...
<ИмяТекста 1> Только текст </ИмяТекста 1>
<ИмяТекста 2> Только текст </ИмяТекста 2>... Только вложенные теги </ИмяУзла>
2. Реляционные данные хранятся в неупорядоченном виде, а данные XML в упорядоченном. Если в порядке следования атрибутов, фрагментов текста и вложенных тегов заложен смысл, то его, возможно, следует сохранить путем добавления к этой структуре специального вложенного тега, содержащего эту информацию.
3. Узлы предпоследнего уровня иерархии, которым соответствуют кортежи, не могут содержать одноименные вложенные теги - эта ситуация должна быть преобразована. Грубо говоря, в реляционной таблице клетка не может быть разделена на части. Кроме того, если она и может быть пустой, то уж никак не может отсутствовать. Поэтому, необходимо учесть разницу между отсутствующим и пустым тегом последнего уровня.
4. Узлы последнего уровня иерархии, которым соответствуют значения реквизитов, не могут содержать ссылочных атрибутов Id и Ref, так как в реляционных данных связи по ключам существуют только на уровне кортежей.
Преобразование варианта 3 в вариант 2 происходит путем включения ключевых тегов, в качестве которых, в общем случае, удобно использовать суррогатные ключи.
Как видно из рассмотренного примера, если данные размещать как текст и "размечать" их именами тегов, а атрибуты использовать только для ссылок, то получается весьма однородная структура, синтаксически несколько более широкая, чем реляционная.
Литература
1. Веселов В.В., Долженков А.Н. Влияние языка XML на развитие технологий баз данных. - Сайт информационных технологий. webservis.ru
2. Джонатан Эйнджел. XML: время пришло. - Lan/Журнал сетевых решений,№11/99
Размещено на Allbest.ru
Подобные документы
Ознакомление с основами расширяемого языка разметки Extensible Markup Language. Изучение основных правил создания XML-документа. Рассмотрение набора элементов языка, секций CDATA, директив анализатора, комментариев, спецсимволов, текстовых данных.
презентация [400,9 K], добавлен 21.12.2014Определение понятия гипертекста. Основные части документа SGML. История создания стандартного языка разметки документов HTML. Отличия синтаксиса XHTML от HTML. RSS - семейство XML-форматов для описания лент новостей. Применение языка разметки KML.
презентация [4,3 M], добавлен 15.02.2014Назначение языка SQL. Операторы манипулирования данными. Группировка записей, объединение таблиц, многотабличные и вложенные запросы. Добавление, удаление, определение и обновление данных. Типы данных языка SQL. Методики проектирования, ER-моделирование.
реферат [84,8 K], добавлен 15.12.2015Общие данные об основных операторах языка SQL. Интерактивный режим работы. Использование языка SQL для выбора информации из таблиц, для вставки, редактирования и удаления данных в них. Связь между операциями реляционной алгебры и операторами языка SQL.
реферат [146,5 K], добавлен 06.02.2015Специальные разметочные указатели (теги) языка HTML. Основные правила написания тегов. Структура HTML-файлов. Внесение изменений и способы обновления Web-сайта. Необходимые атрибуты для создания на Web-странице бегущей строки и вставки рисунков.
презентация [439,3 K], добавлен 29.01.2014Изучение тегов для создания списков и таблиц в HTML, основных атрибутов тегов. Практические навыки создания списков и таблиц в HTML-документах. Нумерованные, маркированные и вложенные списки, список определений. Выравнивание данных в ячейках таблицы.
контрольная работа [322,1 K], добавлен 09.08.2014Основные теги и атрибуты языка HTML. Создание web-сайта, который должен представлять собой несколько связанных между собой страниц. Рассмотрение различных значений атрибутов и тегов на страницах и в других документах. Экранные формы разработанных страниц.
лабораторная работа [1,2 M], добавлен 16.04.2014Общее описание и характеристики языка программирования (Ф-язык). Конструкции и элементы данного языка, порядок их взаимосвязи, разновидности и главные функции. Микрооперации Ф-языка, их назначение и особенности реализации. Графические схемы алгоритма.
контрольная работа [67,5 K], добавлен 13.09.2008Понятие, сущность и особенности применения языка HTML, а также структура его документа. Рекомендации по созданию сайтов в интернете. Общая структура и порядок оформления гипертекстов, записанных в языке HTML, примеры отображения их в браузере компьютера.
контрольная работа [29,4 K], добавлен 12.09.2010Цель и место размещения документа Web. Язык гипертекстовой разметки. Сценарий и структура Web-документа. Основные редакторы гипертекста. Создание документов в стандарте HTML. Создание заголовков, форматирование и изменение стиля, нумерация списков.
реферат [34,4 K], добавлен 22.11.2009