Инспектор группы
Спонсор: Microsoft
Опубликован: 04.02.2009 | Уровень: специалист | Доступ: платный
Лекция 9:

Введение в XML

Аннотация: HTML: достоинства и недостатки. XML: достоинства и недостатки. Технологии, использующие XML. Синтаксические правила построения XML-документа. Структура XML-документа.

В 1986 году, задолго до того, как идея создания сети Веб была воплощена в жизнь, универсальный стандартизированный язык разметки SGML (Standardized Generalized Markup Language) был утвержден в качестве международного стандарта (ISO 8879) определения языков разметки, хотя SGML существовал еще с конца шестидесятых. Он использовался для того, чтобы описывать языки разметки, предоставляя при этом автору возможность давать формальные определения каждому элементу и атрибуту языка.

Язык HTML первоначально был всего лишь одним из SGML-приложений. Он описывал правила, по которым должна быть подготовлена информация для World Wide Web. Таким образом, язык HTML - это набор предписаний SGML, сформулированных в виде определения типа документа (DTD), объясняющих, что именно обозначают тэги и элементы. Схема DTD для языка HTML хранится в веб-браузере.

К недостаткам языка HTML можно отнести следующие:

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

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

Группа экспертов по языку SGML, возглавляемая Джоном Боузэком (Jon Bosak) из компании Sun Microsystems, приступила к работе по созданию подмножества языка SGML, которое могло бы быть принято Web-сообществом. Решено было удалить многие несущественные возможности SGML. Перестроенный таким образом язык назвали XML. Упрощенный вариант оказался значительно более доступным, чем оригинал, его спецификации занимали всего 26 страниц по сравнению с более чем 500 страницами спецификаций SGML.

Рассмотрим более детально структуру и особенности этого языка.

XML (eXtensible Markup Language) - рекомендованный W3C язык разметки. XML - текстовый формат, предназначенный для хранения структурированных данных, для обмена информацией между программами, а также для создания на его основе специализированных языков разметки. XML является упрощенным подмножеством языка SGML .

Язык XML имеет следующие достоинства:

  • Это человеко-ориентированный формат документа, он понятен как человеку, так и компьютеру.
  • Поддерживает Юникод.
  • В формате XML могут быть описаны основные структуры данных - такие как записи, списки и деревья.
  • Это самодокументируемый формат, который описывает структуру и имена полей также как и значения полей.
  • Имеет строго определенный синтаксис и требования к анализу, что позволяет ему оставаться простым, эффективным и непротиворечивым.
  • Широко используется для хранения и обработки документов;
  • Это формат, основанный на международных стандартах;
  • Иерархическая структура XML подходит для описания практически любых типов документов;
  • Представляет собой простой текст, свободный от лицензирования и каких-либо ограничений;
  • Не зависит от платформы;
  • Является подмножеством SGML, для которого накоплен большой опыт работы и созданы специализированные приложения;

К известным недостаткам языка можно отнести следующие:

  • Синтаксис XML избыточен.
    • Размер XML документа существенно больше бинарного представления тех же данных (порядка 10 раз).
    • Размер XML документа существенно больше, чем документа в альтернативных текстовых форматах передачи данных (например JSON, YAML) и особенно в форматах данных, оптимизированных для конкретного случая использования.
    • Избыточность XML может повлиять на эффективность приложения. Возрастает стоимость хранения, обработки и передачи данных.
    • Для большого количества задач не нужна вся мощь синтаксиса XML, и можно использовать значительно более простые и производительные решения.
  • Пространства имен XML сложно использовать и их сложно реализовывать в XML парсерах.
  • XML не содержит встроенной в язык поддержки типов данных. В нем нет понятий "целых чисел", "строк", "дат", "булевых значений" и т. д.
  • Иерархическая модель данных, предлагаемая XML, ограничена по сравнению с реляционной моделью и объектно-ориентированными графами.

Вообще говоря, XML можно рассматривать не только как новый язык разметки, но и как основу для целого семейства технологий:

XML Технические рекомендации об использовании XML
DTD Определение типа документа (схема)
XDR Формат XML Reduced (схема Microsoft)
XSD Определение схемы XML (схемы W3C)
Пространство имен Метод определения имен элементов и атрибутов
XPath Язык путей XML
XLink Язык ссылок XML
XPointer Язык указателей XML
DOM API для объектной модели документа
SAX Простой API для XML
XSL Расширяемый язык таблиц стилей
XSL-FO Объекты форматирования XSL
XSLT Язык преобразований XSL
XInclude Синтаксис XML Include
XBase Синтаксис XML Base URI

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


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

Документ XML считается правильно построенным, если он соответствует всем синтаксическим правилам XML.

Проверка действительности документа предполагает выполнение следующих действий:

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

Рассмотрим теперь основные синтаксические правила построения XML документов.

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

XML документ имеет следующую структуру :

  • Первая строка XML документа называется объявлением XML. Это необязательная строка, указывающая версию стандарта XML (обычно это 1.0). Также здесь может быть указана кодировка символов и внешние зависимости.
  • Комментарий может быть размещен в любом месте дерева. XML комментарии размещаются внутри пары тегов <!-- и заканчиваются -->. Два знака дефис ( -- ) не могут быть применены ни в какой части внутри комментария.
  • Остальная часть этого XML-документа состоит из вложенных элементов, некоторые из которых имеют атрибуты и содержимое.
  • Элемент обычно состоит из открывающего и закрывающего тегов, обрамляющих текст и другие элементы.
  • Открывающий тег состоит из имени элемента в угловых скобках;
  • Закрывающий тег состоит из того же имени в угловых скобках, но перед именем еще добавляется косая черта.
  • Содержимым элемента называется все, что расположено между открывающим и закрывающим тегами, включая текст и другие (вложенные) элементы.
  • Кроме содержания у элемента могут быть атрибуты - пары имя=значение, добавляемые внутрь открывающего тега после названия элемента.
  • Значения атрибутов всегда заключаются в кавычки (одинарные или двойные), одно и то же имя атрибута не может встречаться дважды в одном элементе.
  • Не рекомендуется использовать разные типы кавычек для значений атрибутов одного тега.
  • Для обозначения элемента без содержания, называемого пустым элементом, необходимо применять особую форму записи, состоящую из одного тега, в котором после имени элемента ставится косая черта "/".

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

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

Чаще всего для описания схемы используются следующие спецификации:

  • DTD (Document Type Definition) - язык определения типа документов.
  • XDR (XML Data Reduced) – диалект XML, разработанный Майкрософт.
  • XSD ( язык определения схем XML) – рекомендована консорциумом W3C.

XML документ отличается от HTML документа также и тем, как он отображается в веб-браузере. Без использования CSS или XSL XML-документ отображается как простой текст в большинстве веб-браузеров. Некоторые веб-браузеры, такие как Internet Explorer, Mozilla и Firefox отображают структуру документа в виде дерева, позволяя сворачивать и разворачивать узлы с помощью нажатий клавиши мыши.

Наиболее распространены три способа преобразования XML-документа в отображаемый пользователю вид:

  • Применение стилей CSS.
  • Применение преобразования XSLT.
  • Написание на каком-либо языке программирования обработчика XML-документа.
Михаил Олифиренко
Михаил Олифиренко
В telnet не могу установить соединение с веб-сервером www.yandex.ru 80, это он так долго думает или что-то не так делаю?
Александр Табачук
Александр Табачук
Код DreamSpark
Юрий Тарасов
Юрий Тарасов
Россия, Мегион
Марина Дайнеко
Марина Дайнеко
Россия, Moscow, Nope, 2008