Введение в XML

Цель лабораторной работы:

  1. Познакомиться с языком разметки данных XML.
  2. Изучить правила построения HTML документов

Теоретические сведения

Предназначение XML

Различные виды представления информации: текст, графика (растровая и векторная), базы данных, звук, музыка (нотная запись), языки разметки. Каждый из видов представления имеет далеко не один различный формат представления данных.

Цель: стандартизировать формат представления данных, чтобы возможно было обеспечить:

Язык разметки данных eXtensible Markup Language - Расширяемый язык разметки XML

Устройство XML документа

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

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

Для демонстрации структуры XML документа лучше обратиться к какому нибуть примеру. Рассмотрим следующий XML документ:

<?xml version="1.0" ?>
<root_element>
  <element>
    Текст
    <another_element attribute="значение" />
    текст ...
    </element>
      Текст текст текст
    <element>
      текст текст...
  </element>
  ...
</root_element>

Рассмотрим данный пример подробно. Первая строка документа определяет его как XML документ, построенный в соответствии с первой версией языка (version="1.0"). В этой же конструкции можно указать и кодировку, в которой создан документ:

<?xml version="1.0" encoding="utf-8" ?>

Кодировкой по умолчанию для XML является unicode. Далее находится открывающий тег корневого (главного) элемента <root_element>, содержащий элемент <элемент>, который, в свою очередь, содержит элемент <another_element атрибут="значение" /> с атрибутом атрибут. Как видно из примера, правила записи элементов, атрибутов и их значений в XML ничем не отличаются от правил записи элементов атрибутов и их значений в HTML (также есть открывающие и закрывающие теги элементов, элементы с содержимым и без и т.д.), только набор элементов несколько расширен, благодаря чему мы и можем нагрузить разметку семантикой.

Ниже приводятся несколько правил построения XML документа. Итак:

XML документ представляет собой обыкновенный текстовый файл с расширением .xml. Единственная особенность их заключается в том, что для символов файла рекомендуется использовать кодировку Unicode.

Основные конструкции XML

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

Элемент

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

Пустой элемент имеет следующий вид:

<element attribute="значение" attribute="значение" ... />

Примерами таких элементов в знакомом HTML являются:

<br />, <img src="images/picture.gif" /> ...

Непустые элементы имеют вид:

<element attribute="значение" attribute="значение" ...>
       ...
       Содержимое элемента
       ...
</element>

В HTML таких элементов большинство: <body> ... </body>, <p> ... </p> - в этих элементах может располагаться как текст, так и другие элементы (таблицы, рисунки...).

Необходимо помнить об обной очень важной особенности XML: имена в XML - регистро-зависимы, то есть <Sample-element />, <SAMPLE-ELEMENT /> и <sample-element /> - совершенно разные элементы.

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

<library>
    <book>
         <title value="Технология XSLT" />
         <author fio="Алексей Валиков" />
         <publisher>
             <name value="BHV" />
             <homepage url="http://www.bhv.com" />
         </publisher>
    </book>
    ...
</library>

В данном случае <library> является корнем, <book> и </publisher> - ветви, а <title>, <author>, <name> и <homepage> - листья

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

Атрибут

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

атрибут = "значение"

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

    <company_name = 'Акционерное Общество "Витязь"' ... />
    ...
    <book-author = "О'Генри" ... />

Имена в XML регистро-зависимые. Это относится не только к элементам, но и к атрибутам.

Символьные данные: секция CDATA

Секция CDATA выделяет часть документа, внутри которых текст не должен восприниматься как разметка. CDATA означает буквально character data - символьные данные. Вот пример секции CDATA:

    <![CDATA[
            содержимое
    ]]>

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

Комментарии

XML документ может содержать комментарии, записываемые следующим образом:

<!-- Это комментарий -->
...
<!--
    комментарии
    могут охватывать
    несколько строк
-->

Текст комментария может состоять из любых символов, кроме двух - подряд (--).

Пространства имен

Проблема одинаковых тегов. На примере ниже две предметные области - фрукты и компьютеры используют один тег <apple> Мы не можем объединить эти данные в одной модели.

<?xml version="1.0" ?>
<fruit>
    <apple>Снежный кальвиль</apple>
</fruit>

<?xml version="1.0" ?>
<computer>
    <apple>MacBook</apple>
</computer>

Пространства имен используются для разделения или идентификации данных. В XML они используются для связи одного или более узлов с определенным URI (унифицированный идентификатор ресурса).

Определение пространства имен. 1 способ - это определить атрибут, названный xmlns, внутри узла элемента со значением URI. Этот узел и все его потомки будут принадлежать пространству имен, установленному этим URI.

<?xml version="1.0" ?>
<myxml>
  <parent xmlns="http://www.example.com/uri/">
      <child/>
  </parent>
</myxml>

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

<?xml version="1.0" ?>
<myxml xmlns:ns="http://www.example.com/uri/" >
  <parent>
      <ns:child/>
  </parent>
</myxml>

В данном примере только <child> находится в пространстве имен

URI обычно являются адресами веб-сайтов. Они не обязательно должны быть верными адресами, но так как только одно тело может обладать любым одним доменом, они делают хорошее дело, позволяя убедиться, что люди не будут использовать один и тот же URI для разных целей. Это известно в качестве установки пространства имен по умолчанию

Пространства имен: Определенные пользователем и Общепринятые

XML документ считается формально корректным (well-formed), если он соответствует всем общим правилам синтаксиса XML, применимым к любому XML-документу: правильная структура документа, совпадение имен в начальном и конечном теге элемента и т.п. Документ, который неправильно построен, не может считаться документом XML. Документ должен соответствовать синтаксическим правилам, определенным консорциумом W3C (World Wide Web Consortium) в спецификации Extensible Markup Language (XML) 1.0 (Fifth Edition).

Далее XML документ считается действительным (valid), если включает определение типа документа (document type definition, DTD) или XML-схему (XSD), причем сам документ не противоречит этой схеме (определению DTD). Определение DTD (схема документа) задает корректный синтаксис.

Задание на лабораторную работу

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

Проверить корректность my.xml можно командой

xmllint my.xml