Xml язык программирования. Основы XML для начинающих. Начало создания файла XML

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

Давайте сразу приведу простой пример XML-документа :




]>


&n; IBM Lenovo V570
&n; DELL Inspiron N5010


&g; Готика 2
&g; Might & Magic 6

В самом начале идёт заголовок XML-документа . Заголовок в примере является универсальным, единственное, что кодировка иногда бывает разной. Я поставил наиболее распространённую - UTF-8 .

Дальше идёт секция DOCTYPE , в которой описываются различные сущности. Мы описали две: "n " со значением "Ноутбук " и "g " со значением "Игра ". Сущность - это, в некотором смысле, константа, которую мы можем использовать в теле XML-документа для сокращения записи и более лёгкой сопровождаемости в дальнейшем.

После секции DOCTYPE идёт тело XML-документа . Здесь всё аналогично синтаксису языка HTML , то есть имеются теги (они же элементы), они имеют атрибуты, а также внутренние теги. Но в отличии от HTML , здесь Вы сами придумываете названия элементов, также в XML очень строгий синтаксис, то есть не должно быть никаких незакрывающих тегов или пропущенных кавычек в значениях атрибутов у тегов.

Обратите внимание на то, как используются описанные нами в секции CDATA сущности. Если требуется вывести какой-нибудь спецсимвол, например, & или < , то необходимо использовать соответствующие зарезервированные сущности.

Что касается взаимосвязи между различными элементами. Есть 5 видов связей:

  • Родитель . Родителем для заданного является тот элемент, который находится ровно на 1 notebooks " родителем является "shop ".
  • Дочерний элемент . Противоположность родителю. Дочерним элементом является тот, который находится ровно на 1 уровень ниже и находится внутри заданного элемента. Например, дочерними элементами "shop " являются "notebooks " и "games ". Обратите внимание, что родитель всегда один, тогда как дочерних элементом может быть много.
  • Предок . Предком является тот элемент для заданного, который находится на более, чем 1 уровень выше. Например, для элемента "prod " предком является "shop ".
  • Потомок . Аналогично дочернему элементу, но только элементы должны быть ниже 1-го уровня вложенности в заданный элемент. Например, для "shop " потомком является "prod ".
  • Брат . Элемент называется братом другому элементу, если он находится на том же уровне, что и другой. Безусловно, помимо одного уровня требуется и наличие общего родителя. Например, элементы "notebooks " и "games " являются братьями.

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

markup languages) - это набор специальных инструкций, называемых тэгами, предназначенных для формирования в документах какой-либо структуры и определения отношений между различными элементами этой структуры. Другими словами разметка показывает, какая часть документа является заголовком, какая подзаголовком, что следует считать именем автора и т. д. Разметка разделяется на стилистическую разметку, структурную и семантическую.

Стилистическая разметка

Стилистическая разметка отвечает за внешний вид документа. Например, в HTML к данному типу разметки относятся такие теги как (курсив), (жирный), (подчеркивание), (перечеркнутый текст) и т.д.

Структурная разметка

Структурная разметка задает структуру документа. В HTML за данный тип разметки отвечают, например, теги (параграф), (заглавие),

(секция) и т.д.

Семантическая разметка

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

(адрес автора).

Основными понятиями любого языка разметки являются теги, элементы и атрибуты.

Тэги и элементы.

Значения понятий тэги и элементы часто путают.

Тэги, или, как их еще называют, управляющие дескрипторы, служат в качестве инструкций для программы, производящей показ содержимого документа на стороне клиента как поступить с содержимым тега. Для того чтобы выделить тег относительно основного содержимого документа используются угловые скобки: тег начинается со знака "меньше" (<) и завершается знаком "больше" (>), внутри которых помещаются название инструкций и их параметры. Например, в языке HTML тег указывает на то, что следующий за ним текст должен быть выведен курсивом.

Элемент - это тэги в совокупности с их содержанием. Следующая конструкция является примером элемента:

Это текст выделен курсивом .

Элемент состоит из открывающего тега (в нашем примере это тег ), содержимого тега (в примере это текст "Это текст, выделен курсивом") и закрывающего тега( ), правда иногда в HTML, закрывающий тег можно опустить.

Атрибуты

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

Атрибуты состоят из пары "название" = "значение", которую можно задавать при определении элемента в начальном тэге. Слева и справа от символа равенства можно оставлять пробелы. Значение атрибута указывается в виде строки, заключенной в одинарные или двойные кавычки.

Любой тэг может иметь атрибут, если этот атрибут определен.

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

<имя_тега атрибут = "значение"> содержимое тега

Текст выравнивается по центру

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

Указан размер и цвет текста

История развития языков разметки.

Понятие гипертекста было введено В.Бушем в 1945 году а, начиная с 60-х годов, стали появляться первые приложения, использующие гипертекстовые данные. Однако основное развитие данная технология получила, когда возникла реальная необходимость в механизме объединения множества информационных ресурсов, обеспечения возможности создания, просмотра нелинейного текста.

В 1986 году ISO был утвержден универсальный стандартизированный язык разметки (Standardized Generalized Markup Language). Этот язык предназначен для создания других языков разметки, он определяет допустимый набор тэгов, их атрибуты и внутреннюю структуру документа. Таким образом имеется возможность создавать свои собственные тэги, связанные с содержанием документа. Теперь становится очевидно, что такие документы трудно интерпретировать без определения языка разметки, которое хранится в определении типа документа (DTD - Document Type Definition ). В DTD сгруппированы все правила языка в стандарте SGML . Другими словами в DTD описывается связь тегов между собой и правила их применения. Причем для каждого класса документов определяется свой набор правил, описывающих грамматику соответствующего языка разметки. Таким образом, только при помощи DTD можно проверить правильность использования тегов а, следовательно, его нужно посылать вместе с SGML-документом или включать в документ.

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

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

Язык разметки HTML гораздо более простой и удобный, чем SGML , его инструкции в первую очередь предназначены для управления процессом вывода содержимого документа на экране. Язык HTML как способ разметки технических документов был создан Тимом Бернерсом-Ли ( Tim Berners-Lee) в 1991 году специально для научного сообщества. Первоначально он был всего лишь одним из SGML -приложений.

Не смотря на то, что единственное, что умеет HTML - классифицировать части документа и обеспечивать его правильное отображение в браузере, он является самым популярным языком разметки. Это связано с тем, что HTML достаточно легок для изучения. Все, что от вас требуется, - изучить команды HTML. DTD для HTML хранится в браузере. К тому же надо заметить, что HTML спроектирован для работы на самых разных платформах. Но у него есть ряд существенных ограничений:

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

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

Итак, XML (eXtensible Markup Language) – это язык для текстового выражения информации в стандартном виде. Сам по себе он не имеет операторов и не выполняет никаких вычислений. Таким образом, XML – это метаязык, главной задачей которого есть описание новых языков документа.

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

Разметка XML документов

Разметка XML-документа практически ничем не отличается от разметки обычного HTML-документа ( . ). Одним из преимуществ XML являет то, что он позволяет создавать неограниченное количество тегов. Таким образом, каждый тег имеет свою семантику, то есть несет определенный смысл. Для наглядности давайте рассмотрим XML-документ со списком книг.

Автор 1 Название 1 Цена 1 Автор 2 Название 2 Цена 2 Автор 3 Название 3 Цена 3

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

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

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

  1. Явным образом выделили в XML-документе структуру, что в свою очередь сделало возможным дальнейшую программную обработку документа, например, при помощи технологии XSLT, которую мы будем изучать чуть позже. При этом одной из главных особенностей является то, что данный документ по прежнему остается понятным обычному человеку.
  2. Отделили данные в XML-документе от того, каким образом они должны быть представлены визуально. Это в свою очередь дало широкие возможности для публикации данных на разных носителях, например, на бумаге или в сети интернет.

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

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

Структура XML документов

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

Книга 1 Автор 1 Цена 1 Книга 2 Автор 2 Цена 2 Книга 3 Автор 3 Цена 3

Итак, мы видим, что данный пример практически ничем не отличается от предыдущего за исключением немного изменившихся тегов и нескольких атрибутов. Главное отличие здесь заключается в первой строчке, которая определяет файл как XML документ, построенный в соответствии с первой версией языка. Более подробно об этом мы поговорим в следующих статьях рубрики «Уроки XML и XSLT».

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

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

На этом все. Удачи вам и успехов в изучении основ XML.

Язык XML (Extensible Markup Language) был разработан рабочей группой XML Working Group консорциума World Wide Web Consortium (W3C). Вот как описывают его создатели:

«Расширяемый язык разметки Extensible Markup Language (XML) представляет собой составную часть языка SGML... Он предназначен для облегчения использования языка SGML в Web и выполнения задач, которые в настоящее время реализуются с помощью языка HTML. XML разработан с целью усовершенствовать применение и взаимодействие языков SGML и HTML.»

Это выдержка из спецификации версии 1.0 XML, созданной XML Working Group в феврале 1998 г. Весь документ вы можете найти на сайте W3C по адресу http://www.w3.org/TR/REC/-xml .

XML - язык разметки, разработанный специально для размещения информации в World Wide Web, аналогично языку гипертекстовой разметки HTML (Hypertext Markup Language), который изначально стал стандартным языком создания Web-страниц. Поскольку язык HTML полностью удовлетворяет всем нашим потребностям, возникает вопрос: для чего понадобился совершенно новый язык для Web? В чем состоят его преимущества и достоинства? Как он взаимодействует с HTML? Заменит ли он HTML, или только усовершенствует его? Наконец, что собой представляет язык SGML, частью которого является XML, и почему нельзя использовать для Web-страниц собственно SGML? В этой главе я постараюсь ответить на все эти вопросы.

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

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

создания личной домашней страницы. Ниже приведено описание домашней страницы в кодах HTML:

Home Раgе

Michael Young"s Home Page

Welcome to my Web site!

Web Site Contents

Please choose one of the following topics:

  • Writing
  • Family
  • Photo Gallery

Other Interesting Web Sites

Click one of the following to explore another Web site:

  • «1. XML должен стать языком прямого использования в Internet.»

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

    «2. XML будет поддерживать большое количество приложений.»

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

    «3.XML будет совместим с SGML.»

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

    «4. Будет легче писать программы, обрабатывающие XML-документы.»

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

    «5. Количество дополнительных функций в XML должно быть минимальным, а в идеале - нулевым.»

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

    «6. XML-документы должны быть понятными и ясными для пользователя.»

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

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

    «7. Разработка XML должна быть завершена достаточно быстро.»

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

    «8. Язык XML должен быть формальным и кратким.»

    Спецификация XML написана на формальном языке, используемом для представления компьютерных языков, с нотацией, известной как расширенная форма Бакус-Наура (Extended Backus-Naur Form (EBNF)). Этот формальный язык, хотя и достаточно сложен для восприятия, лишен двусмысленности и существенно облегчает написание XML-документов, а в особенности программ для их обработки.

    «9. XML-документы будет проще создавать.»

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

    «10. Сжатая форма при XML-разметке не важна.»

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

    Стандартные XML-приложения

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

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

    XML-приложение обычно определяется созданием описателя типа документа (DTD), который является допустимым компонентом XML-документа. DTD построен по схеме базы данных: он устанавливает и определяет имена элементов, которые могут быть использованы в документе, порядок, в котором элементы могут появляться, доступные к применению атрибуты элементов и другие особенности документа. Для практического использования XML-приложения вы обычно включаете его DTD в ваш XML-документ; наличие DTD в документе ограничивает круг элементов и структур, которые вы будете использовать, вследствие чего ваш документ отвечает стандартам данного приложения. Описания XML-документов, рассмотренных ранее в этой главе, не включали DTD. О том, как задавать и использовать DTD, вы узнаете в главе 5.

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

    XML-приложения, повышающие качество XML-документов

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

    • Extensible Stylesheet Language (XSL) позволяет вам создавать мощные стилевые таблицы с использованием синтаксиса XML.
    • XML Schema позволяет разрабатывать подробные схемы для ваших XML-документов с использованием стандартного синтаксиса XML, что является более мощной альтернативой применения DTD.
    • XML Linking Language (XLink) дает возможность связывать ваши XML-документы. Он поддерживает множественные целевые ссылки и другие полезные функции, обеспечивая большую свободу по сравнению с механизмом организации ссылок в HTML.
    • XML Pointer Language (XPointer) позволяет определять гибкие целевые ссылки. При совместном использовании XPointer и XLink вы можете организовывать ссылки на любое место в целевом документе -а не только переходы к специально выделенным пунктам.

    Об XLS будет рассказано в главе 10. Другие XML-приложения еще не доведены до готовности и не рассматриваются в этой книге. (XLink и XPointer не поддерживаются в Internet Explorer 5).

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

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

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

    Ссылка . Более полный список текущих и перспективных XML-приложений, включая их подробное описание, вы можете найти на Web-странице Oasis SGML/XML (http://www.oasis-open.arg/cover/ocml . htmW applications).

    • Работа с базами данных. Подобно традиционным базам данных, XML может быть использован для присвоения метки каждому полю информации внутри каждой записи базы данных. (Например, можно пометить каждое имя, адрес и номер телефона внутри записей списка адресов.) После этого вы сможете отображать данные различными способами и организовывать поиск, сортировку, фильтрацию и иную обработку данных.
    • Структурирование документов. Иерархическая структура XML-до-кументов идеально подходит для разметки структуры таких документов, как романы, научные труды, пьесы. Например, вы можете использовать XML для разметки пьесы на акты, сцены, размечать действующих лиц, сюжетные линии, декорации и т. д. XML-разметка дает возможность программам отображать или распечатывать документ в необходимом формате; находить, извлекать или манипулировать информацией в документе; генерировать оглавления, резюме и аннотации; обрабатывать информацию иными способами.
    • Работа с векторной графикой (VML - Vector Markup Language).
    • Мультимедиа презентации (SMIL - Synchronized Multimedia Integration Language, HTML + TIME - HTML Timed Interactive Multimedia Extensions).
    • Описание каналов. Каналы представляют собой Web-страницы, которые автоматически рассылаются подписчикам. (CDF - Channel Definition Format).
    • Описание программных пакетов и их взаимосвязей. Такие описания обеспечивают распространение и обновление программных продуктов в сети (OSD - Open Software Description).
    • Взаимодействие приложений через Web с использованием XML-co-общений. Эти сообщения являются независимыми от операционных систем, объектных моделей и компьютерных языков (SOAP - Simple Object Access Protocol).
    • Отправка электронных бизнес-карт через e-mail.
    • Обмен финансовой информацией. Обмен информацией в открытом и понятном формате осуществляется между финансовыми программами (такими как Quicken и Microsoft Money) и финансовыми институтами (банками, общественными фондами) (OFX - Open Financial Exchange).
    • Создание, управление и использование сложных цифровых форм для коммерческих Internet-транзакций. Подобные формы могут включать оцифрованные подписи, которые делают их признанными юридически (XFDL - Extensible Forms Description Language).
    • Обмен запросами по приему на работу и резюме (HRMML - Human Resource Management Markup Language).
    • Форматирование математических формул и научной информации в
    • Web (MathML - Mathematical Markup Language).
    • Описание молекулярных структур (CML - Chemical Markup Language).
    • Кодирование и отображение информации о ДНК, РНК и цепочках (BSML - Bioinformatic Sequence Markup Language).
    • Кодирование генеалогических данных (GeDML - Genealogical Data Markup Language).
    • Обмен астрономическими данными (AML - Astronomical Markup Language).
    • Создание музыкальных партитур (MusicML -Music Markup Language).
    • Работа с голосовыми сценариями для доставки информации по телефону. Голосовые сценарии могут быть использованы, например, для генерирования голосовых сообщений, справок о наличии товаров и прогнозов погоды (VoxML).
    • Обработка и доставка информации курьерскими службами. Служба Federal Express, например, уже использует XML для этих целей.
    • Представление рекламы в прессе в цифровом формате (AdMarkup).
    • Заполнение юридических документов и электронный обмен юридической информацией (XCL - XML Court Interface).
    • Кодирование прогнозов погоды (OMF - Weather Observation Markup Format).
    • Обмен информацией по операциям с недвижимостью (RETS - Real Estate Transaction Standard).
    • Обмен страховой информацией.
    • Обмен новостями и информацией с использованием открытых Web-стандартов (XMLNews).
    • Представление религиозной информации и разметка текстов богослужений (ThML - Theological Markup Language, LitML - Liturgical Markup Language).

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

    Что такое XML

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

    • В первую очередь, эта технология может оказаться полезной для разработчиков сложных информационных систем, с большим количеством приложений, связанных потоками информации самой различной структурой. В этом случае XML - документы выполняют роль универсального формата для обмена информацией между отдельными компонентами большой программы.
    • XML является базовым стандартом для нового языка описания ресурсов, RDF, позволяющего упростить многие проблемы в Web, связанные с поиском нужной информации, обеспечением контроля за содержимым сетевых ресурсов, создания электронных библиотек и т.д.
    • Язык XML позволяет описывать данные произвольного типа и используется для представления специализированной информации, например химических, математических, физических формул, медицинских рецептов, нотных записей, и т.д. Это означает, что XML может служить мощным дополнением к HTML для распространения в Web "нестандартной" информации. Возможно, в самом ближайшем будущем XML полностью заменит собой HTML, по крайней мере, первые попытки интеграции этих двух языков уже делаются (спецификация ).
    • XML-документы могут использоваться в качестве промежуточного формата данных в трехзвенных системах. Обычно схема взаимодействия между серверами приложений и баз данных зависит от конкретной СУБД и диалекта SQL, используемого для доступа к данным. Если же результаты запроса будут представлены в некотором универсальном текстовом формате, то звено СУБД, как таковое, станет "прозрачным" для приложения. Кроме того, сегодня на рассмотрение W3C предложена спецификация нового языка запросов к базам данных XQL, который в будущем может стать альтернативой SQL.
    • Информация, содержащаяся в XML-документах, может изменяться, передаваться на машину клиента и обновляться по частям. Разрабатываемые спецификации XLink и Xpointer поволят ссылаться на отдельные элементы документа, c учетом их вложенности и значений атрибутов.
    • Использование стилевых таблиц (XSL) позволяет обеспечить независимое от конкретного устройства вывода отображение XML- документов.
    • XML может использоваться в обычных приложениях для хранения и обработки структурированных данных в едином формате.

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

    Как создать XML документ?

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

    Важная деловая встреча Надо встретиться с Иваном Ивановичем, предварительно позвонив ему по телефону 123-12-12 ... Позвонить домой 124-13-13

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

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

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

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

    Следующей этапом продвижения документа является рабочий вариант спецификации, который составляет и изменяет в дальнейшем специально созданная рабочая группа (Working Group), в состав которой входят представители заинтересовавшихся идеей компаний. Все изменения, вносимые в этот документ обязательно публикуются на сервере консорциума www.w3.org и до тех пор, пока рабочий вариант не станет рекомендацией, он может служить для разработчиков лишь "путеводной звездой", с которой компания может сверять свои планы, но не должна использовать при разработке ПО.

    В том случае, если стороны договорились по всем основным вопросам и существенных изменений в документ больше вносится, рабочий вариант становится Предложенной Рекомендацией и после голосования членами рабочей группы может стать уже Официальной Рекомендаций W3C, что по статусу соответствует стандарту в WWW.

    XML-генераторы

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

    Пусть, например, нашей задачей является создание формата хранения данных регистрации каких-то происходящих в системе событий (log-файла). В простейшем случае можно ограничиться фиксированием успешных и ошибочных запросов к нашим ресурсам - в таком документе должна присутствовать информация о времени произошедшего события, его результате (удача/ошибка), IP адресе источника запроса, URI ресурса и коде результата.

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

    195.151.62.18 GET /misc/ 200 195.209.248.12 GET /soft.htm 200

    Структура документа довольно проста - корневым в данном случае является элемент log, каждое произошедшее событие фиксируется в элементе event и описывается при помощи его атрибутов(date - время и result - тип события) и внутренних элементов (method - метод доступа, ip-from - адрес источника, url-to - запрашиваемый ресурс, response - код ответа). Генерацией этого документа может заниматься, например, модуль аутентификации запросов в систему, а использованием - программа обработки регистрационных данных (log viewer).

    Что такое DTD?

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

    Небольшой пример для нашего XML-документа:

    Сохраните этот файл под именем log.dtd и включите в XML-документ новую строчку:

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

    Что такое Namespaces?

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

    Чтобы исправить эту ситуацию, мы должны определить уникальные названия элементов и их атрибутов, "дописывая" к их обычным именам некоторый универсальный неповторяющийся префикс. Для этого применяется механизм Namespaces ( Namespaces была официально утверждена W3C в январе 1999 года и сегодня является частью стандарта XML). Согласно этой спецификации, для определения "области действия" тэга (на самом деле этот термин, широко используемый в обычных языках программирования, неприменим в XML, потому что как такового множества, на котором могла бы быть построена "область", внутри структурированного XML документа нет) необходимо определить уникальный атрибут, описывающий название элемента, по которому анализатор документа сможет определить, к какой группе имен оно относится (Namespace идентификаторы могут применяться для описания уникальных названий как элементов, так и их атрибутов). В нашем последнем примере это может быть сделано так:

    195.151.62.18

    GET

    /misc/

    200

    195.209.248.12

    GET

    /soft.htm

    200

    Уникальность атрибуту имени обеспечивает использование в качестве его значения некоторых универсальных идентификаторов ресурсов (например, URI или ISBN) .

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

    Инструментарий

    Обработка XML-документов

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

    В августе 1997 RFC 2376 были утверждены MIME типы для XML-ресурсов: text/xml и application/xml. Поэтому XML документы могут передаваться по HTTP и отображаться программой просмотра также, как и обычные HTML- страницы. Для этого нужно немного изменить конфигурацию Web-сервера (в Apache - добавить в файл mime.types строчку "text/xml xml ddt"), а на стороне клиента иметь броузер, поддерживающий стилевые таблицы или JavaScript. Сегодня такими броузерами являются Microsoft Internet Explorer 5, первый броузер, поддерживающий спецификацию XML 1.0 и стилевые таблицы XSL; броузер Amaya, предлагаемый консорциумом специально для тестовых целей () и поддерживающий практически все разрабатываемые стандарты W3C. Поддержка XML также планируется в будущих версиях Netscape Navigator.

    Объектная модель документа DOM

    Одним из самых мощных интерфейсов доступа к содержимому XML документов является - DOM.

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

    text text

    Объектное представление структуры документа не является чем-то новым для разработчиков. Для доступа к содержимому HTML страницы в сценариях давно используется объектно-ориентированный подход, - доступные для Java Script или VBScript элементы HTML документа могли создаваться, модифицироваться и просматриваться при помощи соответствующих объектов. Но их список и набор методов постоянно изменяется и зависит от типа броузера и версии языка. Для того, чтобы обеспечить независимый от конкретного языка программирования и типа документа интерфейс доступа к содержимому структурированного документа в рамках W3 консорциума была разработана и официально утверждена спецификация объектной модели DOM Level 1.

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

    Для описания интерфейсов доступа к содержимому XML документов в спецификации DOM применяется платформонезависимый язык IDL и для использования их необходимо "перевести" на какой-то конкретный язык программирования. Однако этим занимаются создатели самих анализаторов, нам можно ничего не знать о способе реализации интерфейсов - с точки зрения разработчиков прикладных программ DOM выглядит как набор объектов с определенными методами и свойствами. В следующем разделе мы вкратце рассмотрим объектную модель Microsoft Internet Explorer 5, доступную из Java Script и VBScript сценариев.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: