Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Главная » Статьи по программированию » .NET - Все статьи »

Обсудить на форуме Обсудить на форуме

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

Содержание

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

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

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

Решением всех описанных выше проблем стал утвержденный в 1998 году международной организацией W3C (EN) язык XML. XML (eXtensible Markup Language) — это расширяемый язык разметки, предназначенный для описания в текстовой форме структурированных данных. Этот текстовый (text-based) формат, во многом схожий с HTML, разработан специально для хранения и передачи данных.

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

  • отдельные документы;
  • метаданные, описывающие содержимое какого-либо узла интернета;
  • объекты, содержащие данные и методы работы с ними (например, элементы управления ActiveX или объекты Java);
  • отдельные записи (например, результаты выполнения запросов к базам данных);
  • всевозможные веб-ссылки на информационные и людские ресурсы интернета (адреса электронной почты, гипертекстовые ссылки и пр.).

Создание XML-документов

Данные, описанные на языке XML, называются XML-документами. Язык XML легко читаем и достаточно прост для понимания. Если вы были знакомы с HTML, то научиться составлять XML-документы не составит для вас никакого труда.

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

Ниже приведен пример описания на языке XML программы телепередач канала ОРТ на 25 декабря.

<tv-program>
  <day date="25 декабря">
    <channel name="ОРТ">
      <program>
        <item time="06:00">Доброе утро</item>
        <item time="09:00">НОВОСТИ</item>
        <item time="09:15">Сериал Нежный яд</item>
        <item time="10:15">Поле чудес (повтор)</item>
        <item time="11:15">М. ф.</item>
        <item time="11:30">Здоровье</item>
        <item time="12:00">НОВОСТИ</item>
        <item time="12:15">С легким паром!</item>
        <item time="14:20">М. ф.</item>
        <item time="14:30">Вместе</item>
        <item time="15:00">НОВОСТИ</item>
        <item time="16:00">Звездный час</item>
        <item time="18:00">НОВОСТИ</item>
        <item time="19:35">Погода</item>
        <item time="20:45">Спокойной ночи, малыши</item>
        <item time="21:00">ВРЕМЯ</item>
        <item time="23:45">Взгляд</item>
      </program>
    </channel>
  </day>
</tv-program>

Этот текст может быть создан в обычном текстовом формате и сохранен в файле с расширением XML.

Любой элемент XML-документа может иметь атрибуты, уточняющие его характеристики. Атрибут — это пара имя="значение", которая задается при определении элемента в начальном тэге. В приведенном выше примере у элемента <day> имеется атрибут date="25 декабря", а у элемента <channel> — атрибут name="ОРТ".

Принцип расширяемости языка XML состоит в возможности использования неограниченного количества пар тэгов, определяемых создателем XML-документа. Например, приведенное выше описание программы телепередач можно расширить, включив в него информацию о регионе вещания и программу передач канала РТР. В этом случае XML-описание примет вид:

<tv-program>
  <area>
    <country>Россия</country>
    <city>Санкт-Петербург</city>
  </area>
  <day date="25 декабря">
    <channel name="ОРТ">
      <program>
        <item time="06:00">Доброе утро</item>
        <item time="09:00">НОВОСТИ</item>
        <item time="09:15">Сериал Нежный яд</item>
        <item time="10:15">Поле чудес (повтор)</item>
        <item time="11:15">М. ф.</item>
        <item time="11:30">Здоровье</item>
        <item time="12:00">НОВОСТИ</item>
        <item time="12:15">С легким паром!</item>
        <item time="14:20">М. ф.</item>
        <item time="14:30">Вместе</item>
        <item time="15:00">НОВОСТИ</item>
        <item time="16:00">Звездный час</item>
        <item time="18:00">НОВОСТИ</item>
        <item time="19:35">Погода</item>
        <item time="20:45">Спокойной ночи, малыши</item>
        <item time="21:00">ВРЕМЯ</item>
        <item time="23:45">Взгляд</item>
      </program>
    </channel>
    <channel name="РТР">
      <program>
        <item time="08:00">М. ф.</item>
        <item time="09:25">Погода</item>
        <item time="09:30">Почта РТР</item>
        <item time="10:00">Доброе утро, страна!</item>
        <item time="10:35">Сам себе режиссер</item>
        <item time="11:50">Сиреневый туман</item>
        <item time="12:40">ЗОЛОТОЙ КЛЮЧ</item>
        <item time="13:20">Федерация</item>
        <item time="15:40">Секретные агенты</item>
        <item time="17:30">Боярский Двор</item>
        <item time="18:00">Моя семья</item>
        <item time="20:00">Аншлаг</item>
        <item time="21:00">ВЕСТИ</item>
        <item time="21:45">АСТЕРОИД (США)</item>
        <item time="00:55">УЖИН У ФРЕДА (США)</item>
        <item time="02:45">Погода</item>
      </program>
    </channel>
  </day>
</tv-program>

Теперь из этого XML-описания можно извлечь программу телепередач каналов ОРТ и РТР на 25 декабря по городу Санкт-Петербург, Россия.

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

Управлять отображением элементов в окне программы-клиента (например, в окне броузера) можно с помощью специальных инструкций — стилевых таблиц XSL (eXstensible Stylesheet Language). Эти таблицы XSL позволяют определять оформление элемента в зависимости от его месторасположения внутри документа, то есть к двум элементам с одинаковым названием могут применяться различные правила форматирования. Кроме того, языком, лежащим в основе XSL, является XML, а это означает, что таблицы XSL более универсальны, а для контроля корректности составления таких стилевых таблиц можно использовать DTD-описания или схемы данных, рассмотренные ниже.

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

  • Каждый открывающий тэг, определяющий некоторую часть данных в документе, обязательно должен сопровождаться закрывающим, то есть, в отличие от HTML, нельзя опускать закрывающие тэги.
  • Вложенность тэгов в XML строго контролируется, поэтому необходимо следить за порядком следования открывающих и закрывающих тэгов.
  • В XML учитывается регистр символов.
  • Вся информация, располагающаяся между начальным и конечным тэгами, рассматривается в XML как данные, и поэтому учитываются все символы форматирования (то есть пробелы, переводы строк, табуляции не игнорируются, как в HTML).
  • В XML существует набор зарезервированных символов, которые должны быть заданы в XML-документе только специальным образом. Такими символами и задающими их наборами символов являются:
     
    < &lt;
    & &amp;
    > &gt;
    " &quot;
    ' &apos;
  • Каждый XML-документ должен иметь уникальный корневой элемент. В нашем примере таким элементом является элемент <tv-program>.
  • Все значения атрибутов, используемых в определении тэгов, должны быть заключены в кавычки.

Если XML-документ не нарушает приведенные выше правила, то он называется формально-правильным.

На сегодняшний день существует два способа контроля правильности XML-документа: DTD-определения (Document Type Definition) и схемы данных (Semantic Schema). Если XML-документ создается и пересылается с использованием DTD-описаний или схем (Schemas), то он называется валидным.

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

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

Чтобы более четко представить себе назначение и возможности использования XML-схем, приведем схему для рассмотренного выше примера программы телепередач.

<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
name="TV-ProgramSchema">
  <AttributeType name="name" dt:type="string" required="yes"/>
  <AttributeType name="date" dt:type="string" required="yes"/>
  <AttributeType name="time" dt:type="string" required="yes"/>
  <ElementType name="country" content="textOnly"/>
  <ElementType name="city" content="textOnly"/>
  <ElementType name="area" content="eltOnly">
    <element type="country" minOccurs="0" maxOccurs="1"/>
    <element type="city" minOccurs="0" maxOccurs="*"/>
  </ElementType>
  <ElementType name="item" content="mixed">
    <attribute type="time"/>
  </ElementType>
  <ElementType name="program" content="eltOnly">
    <element type="item" minOccurs="0" maxOccurs="*"/>
  </ElementType>
  <ElementType name="channel" content="mixed">
    <attribute type="name"/>
    <element type="program" minOccurs="1" maxOccurs="1"/>
  </ElementType>
  <ElementType name="day" content="mixed">
    <attribute type="date"/>
    <element type="channel" minOccurs="0" maxOccurs="*"/>
  </ElementType>
  <ElementType name="tv-program" content="eltOnly">
    <element type="area" minOccurs="0" maxOccurs="*"/>
    <element type="day" minOccurs="0" maxOccurs="*"/>
  </ElementType>
</Schema>

Эта XML-схема должна быть сохранена в файле TV-ProgramSchema.XML. Корневым элементом этого XML-файла является элемент <Schema>, атрибутами которого является название схемы TV-ProgramSchema и ссылка на пространства имен, которые определяют встроенные типы данных, используемые в этой схеме: xmlns="urn:schemas-microsoft-com:xml-data". Атрибуты элементов этой схемы minOccurs и maxOccurs задают соответственно минимально и максимально возможное количество таких элементов в схеме. Например, строчка <element type="item" minOccurs="0" maxOccurs="*"/> означает, что количество элементов типа item (то есть самих телепередач) в схеме может быть от 0 до бесконечности.

Если для контроля правильности XML-описания программы телепередач использовать приведенную выше схему, то в заголовке XML-документа необходимо указать используемую схему. Тогда XML-описание программы телепередач канала ОРТ будет выглядеть следующим образом:

<tv-program xmlns="x-schema:TV-ProgramSchema.xml">
  <area>
    <country>Россия</country>
    <city>Санкт-Петербург</city>
  </area>
  <day date="25 декабря">
    <channel name="ОРТ">
      <program>
        <item time="06:00">Доброе утро</item>
        <item time="09:00">НОВОСТИ</item>
        <item time="09:15">Сериал Нежный яд</item>
        <item time="10:15">Поле чудес (повтор)</item>
        <item time="11:15">М. ф.</item>
        <item time="11:30">Здоровье</item>
        <item time="12:00">НОВОСТИ</item>
        <item time="12:15">С легким паром!</item>
        <item time="14:20">М. ф.</item>
        <item time="14:30">Вместе</item>
        <item time="15:00">НОВОСТИ</item>
        <item time="16:00">Звездный час</item>
        <item time="18:00">НОВОСТИ</item>
        <item time="19:35">Погода</item>
        <item time="20:45">Спокойной ночи, малыши</item>
        <item time="21:00">ВРЕМЯ</item>
        <item time="23:45">Взгляд</item>
      </program>
    </channel>
  </day>
</tv-program>

Теперь корневой элемент <tv-program> этого XML-описания имеет атрибут xmlns="x-schema:TV-ProgramSchema.xml", являющийся ссылкой на используемую XML-схему.

Анализ XML-документов

Получение данных из XML-документа, а также проверка корректности XML-документов обеспечивается анализаторами (parsers) XML-документов. Если XML-документ является формально-правильным, то все анализаторы, предназначенные для разбора XML-документов, смогут работать с ним корректно.

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

Если же на вход XML-анализатору подается XML-документ, использующий XML-схему, то он будет разобран, проверен на правильность и соответствие схеме. Например, XML-описание программы телепередач канала РТР, использующее схему TV-ProgramSchema.xml, будет признано формально-правильным и валидным.

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

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

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

В некоторых анализаторах способ представления структуры документа основывается на спецификации DOM (Document Object Model), что позволяет использовать строгую иерархическую модель DOM при создании XML-документов.

Примером XML-анализатора может служить встроенный в Microsoft Internet Explorer версии 5.0 XML-анализатор MSXML. Он позволяет читать данные из XML-файла, обрабатывать их, генерировать дерево элементов, отображать данные с использованием стилевых таблиц XSL, а также, используя DOM, представлять все элементы данных в виде объектов.

Использование XML

Многие специалисты рассматривают XML как новую технологию интеграции программных компонент. Основными преимуществами использования XML являются:

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

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

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

Инструменты обработки данных, полученных в формате XML, могут быть разработаны в среде Visual Basic, Java или C++.


Может пригодится:


Автор: А. Маленкова
Прочитано: 7352
Рейтинг:
Оценить: 1 2 3 4 5

Комментарии: (0)

Добавить комментарий
Ваше имя*:
Ваш email:
URL Вашего сайта:
Ваш комментарий*:
Код безопастности*:

Рассылка новостей
Рейтинги
© 2007, Программирование Исходники.Ру