Extensible Markup Language

Что такое XML?

Как выглядит XML-документ?

Правила создания XML- документа

Конструкции языка

  •     Элементы данных
  •     Комментарии
  •     Атрибуты
  •     Cпециальные символы
  •     Директивы анализатора
  •     CDATA
  •     Корректность
  •  

    Что такое XML?

    XML (Extensible Markup Language) - это язык разметки, описывающий целый класс объектов данных, называемых XML- документами. Этот язык используется в качестве средства для описания грамматики других языков и контроля за правильностью составления документов. Т.е. сам по себе XML не содержит никаких тэгов, предназначенных для разметки, он просто определяет порядок их создания. Таким образом, если, например, мы считаем, что для обозначения элемента rose в документе необходимо использовать тэг <flower>, то XML позволяет свободно использовать определяемый нами тэг и мы можем включать в документ фрагменты, подобные следующему:

    <flower>rose</flower>

    Для лучшего представления можно посмотреть пример программы на XML.

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

    <conservatory>
    <flower>rose</flower>
    </conservatory>
    

    Если мы хотим посадить туда еще несколько цветочков, то должны внести следующие изменения:

    <conservatory>
    <flower>rose</flower>
    <flower>tulip</flower>
    <flower>cactus</flower>
    </conservatory>
    

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

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

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

    Также одним из достоинств XML является то, что программы-обработчики XML- документов не сложны и уже сегодня появились и свободно распространяются всевозможные программные продукты, предназначенные для работы с XML-документами. XML поддерживается сегодня в Microsoft Internet Explorer 4/0 и в бэта-версиях IE5. Было заявлено о его поддержке в последующих версиях Netscape Communicator, СУБД Oracle, DB-2, в приложениях MS-Office . Все это дает основания предполагать, что, скорее всего, в ближайшем будущем XML станет основным языком обмена информации для информационных систем, заменив собой, тем самым, HTML. На основе XML уже сегодня созданы такие известные специализированные языки разметки, как SMIL, CDF, MathML, XSL.

    Как выглядит XML-документ?

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

    Вот пример на XML, в котором описывается структура записи данных в документе:

      <?XML version="1.0"?>
      <!- *** Basket *** ->
      <PRODUCT>
      <product_id>98756</product_id>
      <product_name>basket</product_name>
      <unit_of_measure>each</unit_of-measure>
      <specification>
      <variable>color</variable>
      <value>blue</value>
      </specification>
      <specification>
      <variable>size</variable>
      <value>large</value>
      </specification>
      <specification></specification>
      <specification/>
      </PRODUCT>

    Отметим несколько интересных моментов.

    Прежде всего, как и в HTML, каждый тег окружается угловыми скобками (<>), и за ним обычно следует текст. За текстом, в свою очередь, следует тег в форме </...>. Тег может не иметь содержания, и тогда за ним сразу следует концевой тег (как в <specification></specification>, или тег может сам заканчиваться прямым слешем (как в <specification/>). Однако, в отличие от HTML, концевой тег требуется всегда.

    Во-вторых, заметим, что в данном случае за тегом продукта следует набор связанных тегов, описывающих характеристики (в данном случае столбцы) продукта. Тег <PRODUCT> определяется таким образом, что за ним должен следовать в точности один тег для <product_id> и один тег для <product_name>. Тег <unit_of_measure> является необязательным, хотя пример этого не показывает. Тег <specification> также является необязательным, но у него может существовать одно или большее число вхождений.

    Все XML-документы должны начинаться с <?XML version="1.0"?> (или с указанием другой действующей версии). Комментарии задаются в форме

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

    Смысл тега определяется в том, что называется объявлением типа документа (document type declaration - DTD). Это тело кода, определяющее теги через набор элементов. DTD для предыдущего примера выглядит примерно так:

      <!DOCTYPE product [
      <!ELEMENT PRODUCT (product_id,
      product_name, unit_of_measure?, specification*)>
      <!ELEMENT product_id (#PCDATA)>
      <!ELEMENT product_name (#PCDATA)>
      <!ELEMENT unit_of-measure (#PCDATA)>
      <!ELEMENT specification (variable, value>>
      <!ELEMENT variable (#PCDATA)>
      <!ELEMENT value (#PCDATA)>
      ]

    Здесь можно посмотреть DTD документ для XML программы из примера.

    DTD для XML-документа может быть либо частью документа, либо внешним файлом. Если это внешний файл, то все равно оператор DOCTYPE должен присутствовать в документе с аргументом SYSTEM -filename-, где -filename- является именем файлаЮ содержащего DTD. Например, если бы приведенное выше DTD содержалось во внешнем файле с именем xxx.dtd, то оператор DOCTYPE должен был бы иметь вид

      <!DOCTYPE product SYSTEM xxx.dtd>

    Такая же строка должна быть первой строкой файла xxx.dtd.

    Правила создания XML- документа

    В общем случае XML- документы должны удовлетворять следующим требованиям:

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

    Конструкции языка

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

    Элементы данных

    Элемент - это структурная единица XML- документа. Заключая слово rose в в тэги <flower> </flower> , мы определяем непустой элемент, называемый <flower>, содержимым которого является rose. В общем случае в качестве содержимого элементов могут выступать как просто какой-то текст, так и другие, вложенные, элементы документа, секции CDATA, инструкции по обработке, комментарии, - т.е. практически любые части XML- документа.

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

    <flower>rose</flower>
    <city>Vologda</city>
    

    ,а эти - нет:

    <rose>
    <flower>
    rose
    

    Набором всех элементов, содержащихся в документе, задается его структура и определяются все иерархическое соотношения. Плоская модель данных превращается с использованием элементов в сложную иерархическую систему со множеством возможных связей между элементами. Например, в следующем примере мы описываем месторасположение Вологодских университетов (указываем, что Вологодский Государственный Педагогический Университет расположен в городе Вологда, который, в свою очередь, находится в России), используя для этого вложенность элементов XML :

    <country id="Russia">
     <cities-list>
    <city>
    <title>Vologda</title>
    <universities-list>
    <university id="2">
    <title>Вологодский Государственный Педагогический Университет</title>
    <noprivate/>
    <address URL="//vogu35.ru/"/>
    <description>очень хороший институт</description> 
    </university>  
    <university id="2">
    <title>Вологодский Государственный Технический Университет</title>
    <noprivate/>
    <address URL="">
    <description>тоже не плохой</description> 
    </university>  
    </universities-list>
    </city>
    </cities-list>
    </country>
    

    Производя в последствии поиск в этом документе, программа клиента будет опираться на информацию, заложенную в его структуру - используя элементы документа. Т.е. если, например, требуется найти нужный университет в нужном городе, используя приведенный фрагмент документа, то необходимо будет просмотреть содержимое конкретного элемента <university>, находящегося внутри конкретного элемента <city>. Поиск при этом, естественно, будет гораздо более эффективен, чем нахождение нужной последовательности по всему документу.

    В XML документе, как правило, определяется хотя бы один элемент, называемый корневым и с него программы-анализаторы начинают просмотр документа. В приведенном примере этим элементом является <country>

    В некоторых случаях тэги могут изменять и уточнять семантику тех или иных фрагментов документа, по разному определяя одну и ту же информацию и тем самым предоставляя приложению-анализатору этого документа сведения о контексте использования описываемых данных. Например, прочитав фрагмент <city>Holliwood</city> мы можем догадаться, что речь в этой части документа идет о городе, а вот во фрагменте <restaurant>Holliwood</restaurant> - о забегаловке.

    В случае, если элемент не имеет содержимого, т.е. нет данных, которые он должен определять, он называется пустым. Примером пустых элементов в HTML могут служить такие тэги HTML, как <br>, <hr>, <img>;. Необходимо только помнить, что начальный и конечные тэги пустого элемента как бы объединяется в один, и надо обязательно ставить косую черту перед закрывающей угловой скобкой (например, <empty/>;)

    Комментарии

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

    Атрибуты

    Если при определении элементов необходимо задать какие-либо параметры, уточняющие его характеристики, то имеется возможность использовать атрибуты эдлемента. Атрибут - это пара "название" = "значение", которую надо задавать при определении элемента в начальном тэге. Пример:

    <color RGB="true">#ff08ff</color>
    <color RGB="false">white</color>
    

    или

    <author id=0>Ivan Petrov</author>
    

    Примером использования атрибутов в HTML является описание элемента <font>:

    <font color=”white” name=”Arial”>Black</font>
    

    Cпециальные символы

    Для того, чтобы включить в документ символ, используемый для определения каких-либо конструкций языка (например, символ угловой скобки) и не вызвать при этом ошибок в процессе разбора такого документа, нужно использовать его специальный символьный либо числовой идентификатор. Например, &lt; , &gt; &quot; или &#036;(десятичная форма записи), &#x1a (шестнадцатеричная) и т.д. Строковые обозначения спецсиволов могут определяться в XML документе при помощи компонентов (entity), о чем мы еще поговорим немного позже.

    Директивы анализатора

    Инструкции, предназначенные для анализаторов языка, описываются в XML документе при помощи специальных тэгов - <? и ?>;. Программа клиента использует эти инструкции для управления процессом разбора документа. Наиболее часто инструкции используются при определении типа документа (например, <? Xml version=”1.0”?>) или создании пространства имен.

    CDATA

    Чтобы задать область документа, которую при разборе анализатор будет рассматривать как простой текст, игнорируя любые инструкции и специальные символы, но, в отличии от комментариев, иметь возможность использовать их в приложении, необходимо использовать тэги <![CDATA] и ]]>. Внутри этого блока можно помещать любую информацию, которая может понадобится программе- клиенту для выполнения каких-либо действий (в область CDATA, можно помещать, например, инструкции JavaScript). Естественно, надо следить за тем, чтобы в области, ограниченной этими тэгами не было последовательности символов ]].

    Корректность

    С XML-документом связаны три уровня корректности:

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

    Для описания XML лучше использовать XSL.

    Для заинтересовавшихся предлагаю список ссылок по XML.

    Домой