Xml зачем нужен – зачем нужны, от чего зависят, как использовать, передать, продать или купить?

Содержание

Зачем нужен язык XML?

Вы здесь: Главная — XML — XML Основы — Зачем нужен язык XML?

Зачем нужен язык XML?

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

Вот именно для создания структуры и существует язык XML. Простой пример:

<p>Зелёное яблоко</p>

Для нас людей сразу всё становится понятно. В голове возникает сразу образ «зелёного яблока«, однако, как объяснить компьютеру, что это яблоко, а не апельсин, человек или наша галактика? Здесь вновь приходит на помощь XML, где мы можем создавать любые теги, давая чётко понять, где яблоко, где апельсин, где человек, а где наша галактика. Надеюсь, понятно объяснил.

Теперь о самом главном. Главная особенность XML — это его универсальность. То есть XML понимает любой современный язык. А так как XML — это текстовый файл, то с ним можно работать и в обычном блокноте. Теперь конкретно к практике, где используется XML:

  • Файл-настроек. Настройки в XML-файле очень легко считывать и записывать. По этой причине на Вашем компьютере находятся сотни XML-файлов.
  • Мост для обмена данными между программами, написанными на разных языках. Очень важная особенность, следующая из универсальности языка, и это регулярно используется в сложных системах.
  • Хранение данных. Фактически, это некий аналог базы данных, но не требующий СУБД (например, MySQL). А благодаря языку запросов XPath становится возможным легко общаться с этой «
    базой данных
    «.

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

  • Зачем нужен язык XML? Создано 31.05.2011 13:11:16
  • Зачем нужен язык XML? Михаил Русаков
Следующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:
    <a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:
    <a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):
    [URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]

ГЛАВА1 Зачем нужен XML? | Учебник по XML | Статьи | Программирование Realcoding.Net

Язык 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:

<HTML>

<HEAD>

<TITLE>Home Раgе</TITLE>

</HEAD>

<BODY>

<h2><IMG SRC=»MainLogo.gif»> Michael Young’s Home Page</h2 >

<P><EM>Welcome to my Web site!</EM></P>

<h3>Web Site Contents</h3>

<P>Please choose one of the following topics:</P>

<UL>

<LI><A Href=»Writing.htm»><B>Writing</B></A></LI> 

<LI><A Href=»Family.htm»><B>Family</B></A></LI> 

<LI><A Href=»Photos.htm»><B>Photo Gallery</B></A></LI> 

</UL>

<h3>Other Interesting Web Sites</h3> 

<P>Click one of the following to explore another Web site:</P> 

<UL> 

<LI>

<A HREF=http://www.yahoo.com/>Yahoo Search Engine</A> 

</LI> 

<LI>

<A HREF=http://www.amazon.com/>Amazon Bookstore</A> 

</LI> 

<LI>

<A HREF=http://mspress.microsoft.com/>Microsoft Press</A> 

</LI> 

</UL> 

</BODY> 

</HTML>

В Microsoft Internet Explorer 5 эта страница будет отображена, как показано на рисунке на следующей странице.

Каждый элемент начинается с начального тега: текста, заключенного в угловые скобки (< >), который содержит имя элемента и дополнительную информацию. Большинство элементов заканчиваются конечным тегом, который повторяет соответствующий начальный тег, за исключением того, что имеет символ косой черты (/) перед именем элемента. Элемент содержание представляет собой текст, расположенный между начальным и конечным тегами, как показано на рисунке на следующей странице. Обратите внимание, что многие элементы в предыдущем примере содержат вложенные элементы.

В рассматриваемом примере HTML-страницы содержатся следующие элементы:

Элемент HTML Составляющая разметки страницы

HTML

Вся страница

HEAD

Информация о заголовке, например, название страницы

TITLE

Название страницы, которое появляется в строке заголовка окна браузера

BODY

Основной текст, отображаемый браузером

h2

Заголовок верхнего уровня

h3

Заголовок второго уровня

P

Абзац текста

UL

Маркированный список (Unordered List)

LI

Отдельный элемент в списке (List Item)

IMG

Изображение

A

Связь с другой страницей или с другим местом данной страницы (элемент Anchor)

EM В

Блок текста, набранного курсивом (EMphasized) Блок текста, набранного полужирным шрифтом

Браузер, отображающий HTML-страницу, распознает каждый из этих стандартных элементов и отображает их в соответствующем формате. Например, обычно браузер отображает заголовок h2 наибольшим размером шрифта, заголовок Н2 — меньшим размером шрифта, а элемент Р — еще меньшим размером шрифта. Элемент LI отображается как абзац текста в составе маркированного списка. Элемент А браузер преобразует в ссылку (подчеркнутый текст), на которой пользователь может щелкнуть, чтобы перейти в другое место текущей страницы или на другую страницу.

Хотя набор HTML-элементов был существенно расширен по сравнению с первой версией HTML, язык HTML по-прежнему не пригоден для пред-

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

  • Документ, который не содержит типовых компонентов (заголовков, абзацев, списков, таблиц и т.д.) Например, в языке HTML отсутствуют элементы, необходимые для отображения музыкальных символов или математических уравнений.
  • База данных, такая как каталог книг. Вы можете использовать HTML-страницу, чтобы хранить и отображать информацию из статической базы данных (например, перечень книг и их описание). Однако, если бы вам понадобится осуществить сортировку, фильтрацию, поиск и обработку информации, придется снабдить каждую из составных частей информации соответствующей меткой (как в программе, работающей с базами данных, такой как Microsoft Access). В языке HTML не предусмотрено соответствующих элементов.
  • Документ, который вы хотите представить в виде иерархической структуры. Допустим, вы пишете книгу и хотите разбить ее на части, главы, разделы А, В, С и т.д. В дальнейшем программа может использовать данную структуру документа для создания оглавления, оформления различных уровней в структуре с помощью всевозможных стилей, извлечения определенных разделов, а также обработки информации иными способами. Однако элемент типа заголовок в HTML содержит лишь описание собственно текста. Например:

<Н2> Содержимое Web-сайта </Н2>

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

Язык XML позволяет преодолеть эти ограничения.

 

Язык XML решает проблемы

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

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

<?xml version=»1.0″?><INVENTORY>

<BOOK><TITLE>The Adventures of Huckleberry Finn</TITLE>

<AUTHOR>Mark Twain</AUTHOR>

<BINDING>mass market paperback</BINDING>

<PAGES>298</PAGES>

<PRICE>$5.49</PRICE> </BOOK> <BOOK>

<TITLE>Moby-Dick</TITLE>

<AUTHOR>Herman Melville</AUTHOR>

<BINDING>trade paperback</BINDING>

<PAGES>605</PAGES>

<PRICE>$4.95</PRICE> </BOOK> 

<BOOK>

<TITLE>The Scarlet Letter</TITLE>

<AUTHOR>NathanielHawthorne</AUTHOR>

<BINDING>trade paperback</BINDING>

<PAGES>253</PAGES>

<PRICE>$4.25</PRICE> 

</BOOK> 

</INVENTORY>

Примечание. Для описания базы данных в XML предусмотрена возможность работы с несколькими форматами (например, формат .mdb Access или .dbf dBase): язык XML построен на принципе открытых и доступных стандартов.

Имена элементов в XML-документе (такие как INVENTORY, BOOK и TITLE в приведенном выше примере) не являются определениями языка XML. Вы всего лишь назначаете эти имена при создании определенного документа. Для ваших элементов вы можете выбирать любые корректно заданные имена (LIST вместо INVENTORY, либо ITEM вместо BOOK).

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

В предыдущем примере XML-документ имеет иерархическую структуру в виде дерева с элементами, вложенными в другие элементы, и с одним элементом верхнего уровня (в нашем примере — INVENTORY). Он носит название элемент Документ взяли корневой элемент и содержит все другие элементы. Структуру описанного в примере документа можно представить, как показано на следующем рисунке.

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

  Создание ХМ L-документов

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

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

Во второй части книги будут затронуты вопросы создания XML-докумен-тов в соответствии с синтаксическими правилами. Вы узнаете, как создавать XML-документ, удовлетворяющий одному из двух уровней синтаксических ограничений. В зависимости от уровня соответствия стандартам документ может быть «верно сформированным» («well-formed») либо «валидным» («valid»).

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

При отображении HTML-страницы браузер определяет, что элемент h2, например, является заголовком верхнего уровня, и отображает его в соответствующем формате. Это определяется тем, что данный элемент является частью HTML-стандарта. Но каким образом браузер либо другая программа определяет, как обрабатывать и отображать элементы созданного вами XML-документа (такого как BOOK или BINDING в нашем примере), если вы сами составили эти элементы?

Есть три основных способа сообщить браузеру (в частности, Microsoft Internet Explorer 5), как обрабатывать и отображать каждый из созданных вами XML-элементов. (Подробнее об этом будет рассказано в 3 части.)

  • Таблица стилей. С помощью данного метода вы связываете таблицу стилей с XML-документом. Таблица стилей представляет собой отдельный файл, содержащий инструкции для форматирования индивидуальных XML-элементов. Вы можете использовать либо каскадную таблицу стилей (Cascading Style Sheet — CSS), которая также применяется для HTML-страниц, либо расширяемую таблицу в формате языка стилевых таблиц (Extensible Stylesheet Language — XSL), обладающую более широкими возможностями, нежели CSS, и разработанную специально для XML-документов. Об этих методах будет рассказано в главах 2, 7 и 10.
  • Связывание данных. Этот метод требует создания HTML-страницы, связывания с ней XML-документа и установления взаимодействий стандартных HTML-элементов на странице, таких как SPAN или TABLE, с элементами XML. В дальнейшем HTML-элементы автоматически отображают информацию из связанных с ними XML-элементов. Об этом способе рассказано в главе 8.
  • Написание сценария. В этом методе вы создаете HTML-страницу, связываете ее с XML-документом и имеете доступ к индивидуальным XML-элементам с помощью специально написанного кода сценария (JavaScript или Microsoft Visual Basic Scripting Edition [VBScript]). Браузер воспринимает XML-документ как объектную модель документа (Document Object Model — DOM), состоящую из большого набора объектов, свойств и команд. Написанный код позволяет осуществлять доступ, отображение и манипулирование XML-элементами. Этот метод описан в главе 9.

  SGML, HTML и XML

Обобщенный структурированный язык разметки (Structured Generalized Language — SGML) является родоначальником всех языков разметки. Языки HTML и XML образованы из SGML (хотя и различными способами). SGML определяет базовый синтаксис, но дает вам возможность создавать собственные элементы (отсюда термин обобщенный в названии языка). Чтобы использовать SGML для описания определенного документа, вы должны продумать соответствующий набор элементов и структуру документа. Например, чтобы написать книгу, вы должны использовать созданные вами элементы с именами BOOK, PART, CHAPTER, INTRODUCTION, A-SECTION, B-SЕCTION, C-SECTION и т.д.

Набор наиболее употребительных элементов, используемых для описания документа определенного типа, называется SGML-приложением. (SGML-приложение также включает в себя правила, устанавливающие способы организации элементов, а также другие особенности их взаимодействия — о чем пойдет речь в главе5.) Вы можете определить ваше собственное SGML-приложение, чтобы описать тип документа, с которым вы работаете, либо в теле основной программы должно быть определено SGML-приложение для описания типовых документов. Наиболее известным примером последнего типа приложений является HTML, который представляет собой SGML-пpилoжeниe, разработанное в 1991 г. для описания Web-страниц.

Казалось бы, язык SGML вполне подходит для описания Web-документов. Однако разработчики из консорциума W3C посчитали, что он является слишком сложным и фундаментальным, чтобы эффективно представлять, информацию в Web. Гибкость и большое обилие средств, поддерживаемых SGML, затрудняет написание программного обеспечения, необходимого для обработки и отображения SGML-информации в Web-браузерах. Следовало бы приспособить часть языка SGML специально для помещения информации в «Web. В 1996 г. группа XML Working Group разработала ветвь языка SGML, назвав его расширяемым языком разметки — Extensible Markup Language.

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

Синтаксис XML более простой, чем SGML, что облегчает восприятие XML-документов, а также написание программ браузеров, кодов и Web-страниц для доступа и представления информации документа.

 

  Заменит ли XML HTML?

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

В Internet Explorer 5 вы можете открывать XML-документы с вложенными таблицами стилей непосредственно браузером, не используя HTML-страницы. Однако в двух других основных методах отображения XML-документов — связывании данных и DOM-сценариях — отображение XML-документов осуществляется через HTML Web-страницы. (Даже при применении метода таблиц стилей в случае, если вы используете язык XSL, вам потребуется воспользоваться HTML, чтобы сообщить браузеру, каким образом форматировать XML-данные.)

Не заменяя HTML, XML в настоящее время используется в сочетании с ним, существенно расширяя возможности Web-страниц для:

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

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

 

  Официальные концептуальные цели XML

Ниже представлено десять концепций предназначения и целей применения XML, заявленных в официальной спецификации W3C, которые содержатся на Web-сайте http://www.w3.org/TR/REC-xml.

«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 требуют переопределения символов-разделителей для тегов (обычно <and>) и пропуск конечного тега с целью обнаружения процессором конца элемента. При строгом написании программы обработки 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 практически всегда применяется не по назначению / Mail.ru Group corporate blog / Habr


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

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

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

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

С этой точки зрения существует простой способ проверить, насколько хорошо сделана схема XML. Возьмем для примера документ в предполагаемой схеме и удалим из него все теги и атрибуты. Если в том, что осталось, нет смысла (или если осталась пустая строка), то либо ваша схема построена неправильно, либо вам просто не стоило применять XML.

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

<roоt>
  <item name="name" value="John" />
  <item name="city" value="London" />
</roоt>

Здесь мы видим пример необоснованной и странной (хоть и весьма распространенной) попытки выразить языком XML простой словарь «ключ-значение». Если удалить все теги и атрибуты, останется пустая строка. По существу данный документ представляет собой, как бы абсурдно это ни звучало, семантическую аннотацию пустой строки.
<root name="John" city="London" />

Что еще хуже, у нас здесь не просто семантическая аннотация пустой строки как экстравагантный способ выражения словаря — на этот раз «словарь» напрямую закодирован в виде атрибутов корневого элемента. Из-за этого заданный набор имен атрибутов на элементе становится неопределенным и динамическим. Более того, отсюда видно, что все, что на самом деле хотел выразить автор, — это простой синтаксис «ключ-значение», но вместо этого он принял абсолютно странное решение применить XML, принудительно задавая использование одиночного пустого элемента просто в качестве префикса для использования синтаксиса атрибутов. И такие схемы попадаются мне очень часто.
<roоt>
  <item key="name">John</item>
  <item key="city">London</item>
</roоt>

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

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

<roоt>
  <item>
    <key>Name</key>
    <value>John</value>
  </item>
  <item>
    <key>City</key>
    <value>London</value>
  </item>
</roоt>

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

Самая худшая схема XML? Кстати, приз за самую худшую схему XML, которую мне доводилось видеть, получает формат файла конфигурации автоматического выделения ресурсов для телефонов IP-телефонии Polycom. Такие файлы требуют загрузки XML-файлов запроса по TFTP, которые… В общем, вот отрывок из одного такого файла:

<softkey
        softkey.feature.directories="0"
        softkey.feature.buddies="0"
        softkey.feature.forward="0"
        softkey.feature.meetnow="0"
        softkey.feature.redial="1"
        softkey.feature.search="1"

        softkey.1.enable="1"
        softkey.1.use.idle="1"
        softkey.1.label="Foo"
        softkey.1.insert="1"
        softkey.1.action="..."

        softkey.2.enable="1"
        softkey.2.use.idle="1"
        softkey.2.label="Bar"
        softkey.2.insert="2"
        softkey.2.action="..." />

Это не чья-то неудачная шутка. И это не моя выдумка:
  • элементы просто используются как префикс для прикрепления атрибутов, которые сами по себе имеют иерархические имена.
  • Если нужно приписать значения нескольким экземплярам записи определенного вида, для этого необходимо использовать имена атрибутов, в которых есть индексы.
  • Кроме этого, атрибуты, начинающиеся с softkey., нужно помещать на элементы <softkey/>, атрибуты, начинающиеся с feature., нужно помещать на элементы <feature/> и т. д., несмотря на то, что это выглядит совершенно излишним и на первый взгляд бессмысленным.
  • И, наконец, если вы надеялись, что первый компонент имени атрибута всегда совпадает с именем элемента — ничего подобного! Например, атрибуты up. должны прикрепляться к <userpreferences/>. Порядок прикрепления имен атрибутов к элементам — произвольный, причем практически полностью.

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

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

К примеру, в XML имеет значение порядок элементов. А в JSON порядок следования пар «ключ-значение» внутри объектов не имеет смысла и не определен. Если вы хотите получить неупорядоченный словарь из пар «ключ-значение», фактический порядок, в котором следуют элементы в этом файле, не имеет значения. Но вы можете сформировать из этих данных много разных документов, поскольку в документе есть определенный порядок. Метафорически это аналог документа на бумаге, хоть он и не имеет физических размеров в отличие от распечатки или файла PDF.

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

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

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

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

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

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

На сегодняшний день единственными известными мне схемами XML, которые я действительно могу назвать правильным применением этого формата, являются XHTML и DocBook.

Зачем нужна XML карта сайта и как её сделать.

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

карта

карта

Также и поисковый робот, который исследует сайт. Заходя на сайт, он начинает тыкаться во все подряд, пытаясь найти то, что должно быть в поиске.

Самый первый помощник роботу, это файл robots.txt. В нём прописывается, куда нельзя заходить. Но есть и второй файл, это карта сайта — sitemap.xml, которая должна присутствовать на каждом сайте.

Sitemap.xml – это файл со списком всех страниц сайта, которые должны попасть в индекс поисковой системы.

карта сайта

карта сайта

Как выглядит файл карты сайта.

Расширение xml означает, что файл написан на языке расширенной разметки (eXtensible Markup Language). Фактически, это тот-же HTML, но только предназначен только для поисковых систем. А значит, его можно прочитать также, как и сам файл html, то есть, обычным текстовым редактором.

Карта сайта life-webmaster.ru

Карта сайта life-webmaster.ru

Как мы можем увидеть, фактически, это знакомая нам разметка страницы.

Любой, корректный файл карты, состоит из трех частей.

Заголовок.

Заголовок карты сайта

Заголовок карты сайта

В нём сообщается поисковикам, что они читают XML-файл. В нем также указывается версия XML и используемая кодировка символов. Для файлов Sitemap версия должна быть 1.0, а кодировка должна быть UTF ‑ 8.

URL set

URL set карты сайта

URL set карты сайта

Это контейнер для всех URL-адресов в карте сайта, то есть, в него вкладываются все теги url. Он также сообщает поисковым роботам, какой стандарт протокола используется. В большинстве файлов Sitemap указан стандарт Sitemap 0.90, который поддерживается Yandex, Google и другими поисковиками.

URL

Теги url карты сайта

Теги url карты сайта

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

Хотя это единственный обязательный тег, но к нему можно добавить несколько необязательных.

Sitemap – поскольку файлов карты может быть несколько, то с помощью этого тега, можно указать дочерние карты сайта. В таком случае, поисковый робот, начав изучение с главной карты, потом перейдет по всем дочерним картам.

lastmod: указывает дату последнего изменения файла. Дата должна быть в формате W3C Datetime. Например, если вы обновите сообщение 20 декабря 2019 года, то в этом теге будет прописано 2019-12-20. Вы также можете указать время, но это не обязательно.

priority: указывает приоритет URL относительно всех других страниц сайта. Значения находятся в диапазоне от 0,0 до 1,0. Чем выше, тем важнее.

changefreq: указывает, как часто страница может меняться. Его работа заключается в том, чтобы сообщить поисковикам, как часто они должны заходить и переиндексировать эту страницу. Допустимые значения: always, hourly, daily, weekly, monthly, yearly, and never (вседа, ежечасно, ежедневно, еженедельно, ежемесячно, ежегодно и никогда).

Важны ли необязательные теги?

Если говорить про гугл, то тут есть точный ответ – нет. То есть, их можно спокойно опускать.

Вот что про lastmod сказал Гари Ильш, официальный представитель Гугл

The lastmod tag is optional in sitmaps and in most of the cases it’s ignored by search engines, because webmasters are doing a horrible job keeping it accurate.

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

Источник

А вот что сказал он же сказал по поводу тега priority:

we ignore those. It’s essentially a bag of noise

мы игнорируем их. Это по сути мешок шума

Источник

Ну и по поводу тега changefreq Джон Мюллер сообщил:

“Priority and change frequency doesn’t really play that much of a role with Sitemaps anymore.”

«Приоритет и частота изменений уже не играют такой важной роли в Sitemaps».

Источник (вопрос на 29:26)

Что касается Яндекс, то он просто говорит, что это все, необязательные теги.

Таблица в Яндекс поддерживаемых тегов в файле карты сайта

Таблица в Яндекс поддерживаемых тегов в файле карты сайта

Технические ограничения.

В файле sitemap.xml должно быть не больше 50000 адресов и файл должен иметь размер не больше 50 мбайт. Но при этом, сайт может иметь несколько файлов карт, которые прописываются в главном файле с помощью тега Sitemap

Как добавить карту сайта?

Есть три основных способа.

С помощью плагина.

Это самый простой способ. Если у вас сайт на Вордпресс, то карту сайта можно сделать при помощи плагинов. SEO плагины Yoast и All in One SEO Pack имеют свои средства для создания карты сайта.

Если у вас стоит плагин Yoast, то перейдите в меню плагина и выберите Общие. Затем, включите создание xml карты сайта.

Создание карты сайта с помощью плагина

Создание карты сайта с помощью плагина

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

Похожим образом карта сайта создается и в других плагинах.

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

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

Вот например, онлайн генератор — xmlsitemapgenerator

Создание карты сайта в онлайн генераторе

Создание карты сайта в онлайн генераторе

Но у онлайн сервисов есть два недостатка:

С каждым изменением сайта (добавлением или удалением статей), карту сайта нужно тоже менять.

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

Использование программ.

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

Одна из таких программ, это Simple Sitemap Creator. С её помощью можно легко создать карту, после чего, загрузить ее на хостинг.

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

Скачать программу можно отсюда.

Создание карты сайта с помощью софта

Создание карты сайта с помощью софта

Проверка карты сайта.

Ну и наконец, надо проверить карту сайта. Ведь от её правильности, будет многое зависеть. Для этого можно воспользоваться сервисом от Яндекс и узнать, есть-ли ошибки в файле.

Проверка карты сайта в яндекс валидаторе

Проверка карты сайта в яндекс валидаторе

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

Ну а если у вас остались еще вопросы, то задавайте их в комментариях.

Проверка карты сайта в яндекс валидаторе Загрузка…

Подпишитесь на обновления блога Life-Webmaster.ru и получайте в числе первых новые статьи про создание блога, раскрутку и заработок на нем!

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

Как правильно использовать XML

Джек Херрингтон
Опубликовано 26.03.2012

Comments
Часто используемые сокращения
  • CDATA: Character Data (символьные данные)
  • DOM: Document Object Model (объектная модель документа)
  • E4X: ECMAScript for XML (ECMAScript для XML)
  • IDE: Integrated Development Environment (интегрированная среда разработки)
  • W3C: World Wide Web Consortium (консорциум WWW)
  • XML: Extensible Markup Language (расширяемый язык разметки)
  • XSLT: Extensible Stylesheet Language Transformations (расширяемый язык преобразований таблиц стилей)

В настоящее время XML воспринимается как нечто само собой разумеющееся. Он повсюду! Но если посмотреть со стороны, то можно увидеть, что это мощная технология. Есть интегрированные среды разработки, которые помогают строить XML-деревья. Есть целый ряд технологий проверки корректности XML-кода. Есть XSLT – специальный язык преобразования XML. Поддержка XML встроена даже непосредственно в синтаксис некоторых языков (как, например, E4X в ActionScript).

Но у XML есть и обратная сторона. Его можно использовать неправильно. Его можно использовать плохо. Он может быть чрезмерно сложным. Он может быть недоопределенным. С ним может быть трудно работать. Что нужно сделать для более эффективного использования этой мощной технологии? В своей статье я дам 10 советов, которые помогут ответить на этот вопрос.

Не используйте XML в качестве имени файла или корневого тега

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

Еще одной проблемой в некоторых XML-документах является использование корневого тега <xml>. Это опять-таки ни о чем не говорит. Что находится в этом файле? Если это список контактов, корневым узлом должен быть тег <contacts>. XML должен быть читабельным, поэтому используйте имена тегов и атрибутов, имеющие отношение к бизнес-задаче, над которой работаете. Если корневым узлом является <contacts>, я предполагаю увидеть теги <contact>, а затем теги <name>, <first>, <middle>, <last> и т.д.

Не переопределяйте обобщенные или специфичные для языка конструкции

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

Этим я хочу сказать, что специфичные для языка конструкции нужно хранить вне XML. Как часто вы встречали <data type="NSDate">07-18-2010</data>? Что такое NSDate? Ага, это имя класса для работы с датами на прикладной платформе. Что произойдет при смене платформы или языка? Потребуется преобразование тегов NSDate во что-то другое, что используется на новой платформе.

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

Еще одно важное правило – избегайте использования в XML излишних обобщений. Взгляните на следующий пример (листинг 1):

Листинг 1. Обобщенное дерево узлов
<nodes>
    <node type="user">
        <node type="first">jack</node>
    </node>
</nodes>

Что это означает? Я понял, что это список пользователей. Но человеку трудно это читать и редактировать. Еще хуже то, что этот XML-код очень трудно использовать в средствах, подобных XSLT, или проверять его корректность при помощи схемы. В листинге 2 показано, что на самом деле означает приведенный выше XML-код.

Листинг 2. Более эффективное дерево узлов
<users>
    <user>
        <first>jack</first>
    </user>
</users>

Разве так не лучше? Код говорит то, что означает, и означает то, что говорит. Его легче читать и анализировать. Его легче проверять и преобразовывать при помощи XSLT. Он даже меньше по размеру.

Не делайте файлы слишком большими

Знаю, что вы скажете: «Дисковая память стоит дешево. За десять центов я куплю еще один терабайт». Это верно. Вы действительно можете создавать гигабайтные XML-файлы. Но программирование – это постоянные компромиссы. Приходится менять дисковое пространство на время или память на время. А при работе с огромным XML-файлом вы получаете худшие стороны и того, и другого. Файл занимает много места на диске, а на его анализ и проверку уходит много времени. Кроме того, большой файл исключает использование DOM-анализатора, поскольку построение дерева требует бесконечного времени и огромного количества памяти.

Какова же альтернатива? Можно создать несколько файлов. Один выступает в качестве индекса, а другие содержат большие ресурсы, которые, возможно, будут нужны не всем пользователям этого XML. Другой вариант– вынос всех больших фрагментов CDATA из XML-файла и помещение их в свои собственные файлы с собственными форматами. Если вы хотите хранить все данные вместе, запакуйте все файлы в новый файл с новым расширением. Любой популярный язык программирования имеет модули, облегчающие быструю упаковку и распаковку файлов.

Не используйте пространства имен, если в этом нет острой необходимости

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

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

Поэтому используйте пространства имен XML, только если это действительно необходимо. Не используйте их просто потому, что «XML позволяет это делать». XML прекрасно работает и без пространств имен.

Не используйте специальные символы

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

Я рекомендую избегать использования любых специальных символов в названиях элементов и атрибутов.

Используйте XML Schema

Синтаксический анализ XML является непростой задачей. Для точного анализа необходимо проделать большую работу по защите кода от возможного отсутствия и некорректного использования тегов или атрибутов. Это дополнительная работа по написанию кода, дополнительная сложность, а также затенение реальной бизнес-логики, являющейся вашей главной заботой. Как избежать этого? Проверяйте XML перед его использованием. Для этого можно использовать несколько стандартов. Можно указать Document Type Definition (DTD) или XML Schema (ссылки на информацию о DTD и XML Schema приведены в разделе Ресурсы). Лично я нахожу XML Schema намного более простой в работе, но если вы новичок в этом деле, попробуйте различные системы проверки корректности.

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

Нумеруйте версии

Очень легко упустить из виду тот факт, что XML, хранящийся в файлах, эквивалентен формату файла. Первое, что должен содержать файл любого формата, – это номер версии. Его достаточно легко добавить: <customers version="1">...</customers>. Код, выполняющий чтение файла, должен проверить, что номер версии не больше его текущей версии, и сгенерировать исключительную ситуацию, если это не так. Это гарантирует, что любые последующие версии кода не будут конфликтовать с более старыми версиями при использовании новых тегов. Конечно же, вы должны обеспечить поддержку всех старых версий файлов при дальнейшей разработке своего приложения.

Сочетайте узлы и атрибуты

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

Листинг 3. Список пользователей
<users>
    <user>
        <id>1</id>
        <first>jack</first>
    </user>
</users>

Должен ли <id> быть тегом? Я утверждаю, что он должен быть атрибутом. Код становится более коротким и осмысленным, появляется возможность искать пользователя по идентификатору при помощи простого XPath-выражения (/users/user[@id=1]).

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

Листинг 4. Более удобный список пользователей
<users>
    <user>
        <first>jack</first>
    </user>
</users>

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

Используйте CDATA, но не злоупотребляйте этим

XML налагает множество ограничений на использование определенных символов: кавычек, амперсандов, знаков «меньше» и «больше» и т.д. Однако на практике эти символы используются очень часто. Поэтому приходится либо преобразовывать все в безопасный для XML формат, либо помещать большие фрагменты текста, кода или еще чего-нибудь в блоки CDATA. Мне кажется, что разработчики избегают использования CDATA, поскольку думают, что это затруднит синтаксический анализ. Но разделы CDATA анализировать не труднее, чем что-либо другое – большинство DOM-анализаторов обрабатывает их самостоятельно, поэтому вам даже не нужно думать об этом.

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

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

Храните необязательные данные в отдельной области

До сих пор я рассказывал об XML-документах с жестким форматом. Я даже рекомендовал использовать технологию проверки корректности, (например, XML Schema), гарантирующую жесткую структуру. Тому есть веская причина: структурированные данные легче анализировать. А если нужна определенная гибкость? Я рекомендую размещать необязательные данные в отдельном блоке в своем собственном узле. Взгляните, например, на листинг 5.

Листинг 5. Неупорядоченная запись о пользователе
<users>
    <user>
        <first>jack</first>
        <middle>d</middle>
        <last>herrington</last>
        <runningpace>8:00</runningpace>
    </user>
</users>

Эта запись содержит все ожидаемые данные о пользователе. Я согласен с first, middle, last, но зачем здесь runningpace? Это необходимо? Будете ли у вас много таких полей? Будут ли они расширяемыми? Если ответ на все эти вопросы утвердителен, я порекомендовал бы сделать так (см. листинг 6):

Листинг 6. Хорошо структурированная запись о пользователе
<users>
    <user>
        <first>jack</first>
        <middle>d</middle>
        <last>herrington</last>
        <userdata>
        <field name="runningpace">8:00</field>
        </userdata>
    </user>
</users>

При таком подходе вы можете иметь сколько угодно полей, не загромождая пространство имен родительского элемента <user>. Вы даже можете проверить корректность этого документа, а также обратиться к определенному полю при помощи XPath-выражения (//user/userdata/field[@name=’runningpace’).

Заключение

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

Ресурсы для скачивания
Похожие темы
  • Оригинал статьи: Five XML dos and five don’ts that you need to know (EN).
  • Эксперты по языку скорее всего захотят познакомиться со спецификацией W3C XML Specification. Станьте экспертом по языку и узнайте подробнее об XML — простом, очень гибком текстовом формате, предназначенном для публикации электронных документов и играющем важную роль в обмене данными в Web и повсюду.
  • Document Type Definition (DTD) в Википедии: информация о DTD — наборе объявлений разметки, определяющих тип документа для семейства языков разметки SGML (SGML, XML, HTML).
  • XML Schema в Википедии: краткое описание типа XML-документа, ограничивающееся структурой и содержимым документов данного типа.
  • Спецификация W3C XSLT: информация о замечательном способе преобразования XML в разнообразные форматы.
  • Спецификация W3C XPath: очень полезное средство, которое можно использовать для быстрого и удобного поиска узлов даже в самом сложном XML-документе.
  • Разработка XML при помощи Eclipse: использование возможностей XML в Eclipse (Павел Лешек (Pawel Leszek), developerWorks, апрель 2003 года): информация об Eclipse и его расширениях для редактирования XML (EN).
  • Расширение E4X для Actionscript (ECMAScript): отличный способ интегрировать XML непосредственно в логику вашего приложения. Это расширение настолько полезно, что де-факто становится открытым стандартом хранения в языке (Википедия).
  • Другие статьи данного автора (Джек Херрингтон (Jack Herrington), developerWorks, с марта 2005 года по настоящее время): статьи об Ajax, JSON, PHP, XML и других технологиях.
  • Сертификация IBM по XML: информация о получении сертификата IBM-Certified Developer по XML и смежным технологиям.

Подпишите меня на уведомления к комментариям

Возможности XML | Зачем нужен XML

Возможности XML | Зачем нужен XML

Зачем нужен XML

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

HTML изначально обеспечивал стандарт, позволивший легко создавать Web-страницы на базе одной платформы, размещенной на сервере, а просматривать — на различных платформах. HTML, форматы файлов изображений GIF, а затем JPEG создали возможность взаимного обмена документами и графической информацией, а также обеспечили функциональную совместимость между различными операционными системами, браузерами и компьютерами. Несмотря на всю его славу и простоту использования (как в мире разработки, так и в мире пользовательских интерфейсов), HTML хотя и необходим для отображения информации, но обладает, относительно недостаточными возможностями по представлению структурированных данных. Кроме того, в HTML почти отсутствует механизм удаленного управления данными. Все что обеспечивает HTML, это визуальный уровень, предоставляющий пользователю возможность доступа к тексту и изображениям, а также навигацию в одном направлении к другому документу, содержащему текст или изображения.

HTML не обеспечивает никаких стандартов на ту часть коммуникационного уровня Internet, которая занимается визуальным представлением информации. Предположим, вы хотите найти сайт. Поскольку стандартов на интеллектуальный поиск информации в настоящее время нет, то вы будете рады любой технологии, предложенной разработчиком сайта. Также нет стандарта для обмена данными. Вы можете использовать протокол передачи файлов (File Transfer Protocol, FTP) для пересылки данных. Но поступая так, вы не только выходите за пределы владений Web, но и ограничиваетесь лишь единственным направлением, в котором будет осуществлена пересылка данных. Настоящий обмен данных должен быть двухсторонним, позволяя осуществлять пересылку в Web. Такие продукты, как NetMeeting или Virtual Private Network фирмы Microsoft могут использовать Internet для обмена данными, но при этом в них применяются собственные, частные протоколы и методы обмена данными.

Другая грустная реальность HTML и Web заключается в малых возможностях персонализации. Механизм cookies в HTTP обеспечивает некоторый, хотя и ограниченный, уровень персонализации при просмотре сайта посетителем. Такие сайты Microsoft, как Investor или Expedia, делают в этом смысле шаг вперед, предоставляя возможность обмена данными между пользовательским персональным компьютером и сайтом. Например, сайт Investor обменивается данными с популярной программой персонального финансового управления Quiken для записи, отслеживания и отображения информации портфеля (portfolio information), но он не выполняет эти действия стандартными методами. Посетитель должен просматривать информацию при помощи Internet Explorer, работающий под управлением Windows, а это означает, что протоколы, программы и методы шифрования привязаны к определенной операционной системе и браузеру.

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

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

Например, в страховых компаниях это следующая информация о клиентах:

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

Вы уже встречались с чем-то подобным в Web и, вероятно, думаете: «почему это HTML не может управлять обменом такого рода данных?» Да, обмен такими данными происходит, однако не HTML управляет всем этим. Он лишь отображает результаты поиска или формы, которые должны отсылаться удаленному скрипту стандартного интерфейса шлюза (Common Gateway Interface, CGI) или базе данных. На некоторых сайтах для интерфейса с базами данных Access, вероятно, используют Cold Fusion, на других, — возможно, Perl. Но главное, что нет единого стандарта, и HTML сам по себе не в силах выполнить ни одного из перечисленных пунктов.

Web нуждается в языке, подобном HTML, который бы обеспечивал стандартный способ обмена данными. Этот язык должен быть достаточно гибким, чтобы пользователи могли создавать, собственные описания документов, независимо от того, отправляется ли информация об электронных платежах, или же стандартные поисковые запросы. XML является самым последним созданным языком разметки в Web, предназначенным для обмена данными. Этот новый язык разметки основан на спецификации, намеченной консорциумом W3C — организацией стандартов Web, выполнение которой реализуют и Microsoft и Netscape. Стандарт XML был создан на основе обобщения предложений Microsoft, ArborText, Netscape и других.

XML сегодня

XML начал вызывать огромный интерес и поддержку с того момента, как о нем было впервые заявлено в 1996 году. Он обеспечивает стандартный способ кодирования содержания, обеспечивая гибкий способ создания структур данных. В XML для разметки содержания на основе правил, составляемых разработчиком документа, используются теги. Этот набор правил называется описанием типа документа (Document Type Definition, DTD), и он позволяет разработчикам, применяющим XML, размечать различные документы. Например:

  • Стандартные документы, которые могут содержать текст и ссылки на графические изображения и внешние ресурсы.
  • Более структурированные документы или записи, такие как формы HTML, со структурой, реально закодированной непосредственно в документе. К этой категории можно отнести заказ покупки, медицинское назначение или адресную книгу, либо другие документы.
  • Объект, содержащий данные и методы, например, объект Java или элемент ActiveX.
  • Записи баз данных, которые могут быть представлены на Web-странице, на основе запросов пользователей к поисковым средствам баз данных.
  • Содержание канала Internet Explorer.
  • Что-либо, обеспечивающее обмен данными между компьютерами, между компьютерами и людьми, либо другими типами машин, применяемых для обработки данных.

Сейчас документы всех этих типов можно создавать при помощи XML, для отображения содержания применяя HTML и Dynamic HTML (DHTML). XML также позволяет переназначать, переопределять и отображать содержание из одного источника при помощи других механизмов отображения. Например, хранить единую базу данных на сервере и отображать выделенные данные на нескольких разных устройствах.

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

Ресторан обслуживает тех, кто берет еду в дорогу, а также тех, кто делает заказы с доставкой. Они получают информацию о самых дешевых предложениях и остальной части меню на сайте ресторана. Некоторые ваши клиенты любят подписываться на канал Daily Specials, установленный при помощи инструмента Channels в Internet Explorer, а это значит, что ваша база с данными меню будет очень интенсивно использоваться. Эта база данных служит также для управления запасами. Когда кто-то заказал мясо, и повар вычеркнул исполненный заказ, поскольку блюдо приготовлено и оставлено, тотчас же будут откорректированы данные по запасам. Применение дополнительных инструментов автоматизации позволит автоматически формировать заказ поставщикам, когда запасы начнут иссякать.

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

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

&ltMEAL&gt&ltENTREE&gtChicken Cordon Bleu&lt/ENTREE&gt&lt/MEAL&gt

Здесь: Meal — еда, Entree — основное блюдо за обедом, Chicken Cordon Bleu — цыпленок «кордон бле».

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

Этот пример подходит для индустрии продуктов и напитков, но что если пользователь хочет применить XML для описания и отслеживания медицинских данных, например, назначений? Поскольку XML позволяет создавать собственные элементы, отвечающие конкретным нуждам, то вполне можно определить элементы, представляющие такие понятия, как дозировка, общие названия лекарств, имена докторов и пациентов и т. д. XML позволяет создавать документы, содержащие термины и определения, в соответствии с конкретными пожеланиями пользователей. Спецификации, которые применяются для описания документов, можно помещать в описание типа документа (Document Type Definition, DTD) — отдельный документ, устанавливающий структуру XML-документа. DTD можно поместить непосредственно в сам документ.

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

назад | содержание | вперед >>


ГЛАВА1 Зачем нужен XML? | Учебник по XML | Статьи | Программирование Realcoding.Net

Язык 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:

<HTML>

<HEAD>

<TITLE>Home Раgе</TITLE>

</HEAD>

<BODY>

<h2><IMG SRC=»MainLogo.gif»> Michael Young’s Home Page</h2 >

<P><EM>Welcome to my Web site!</EM></P>

<h3>Web Site Contents</h3>

<P>Please choose one of the following topics:</P>

<UL>

<LI><A Href=»Writing.htm»><B>Writing</B></A></LI> 

<LI><A Href=»Family.htm»><B>Family</B></A></LI> 

<LI><A Href=»Photos.htm»><B>Photo Gallery</B></A></LI> 

</UL>

<h3>Other Interesting Web Sites</h3> 

<P>Click one of the following to explore another Web site:</P> 

<UL> 

<LI>

<A HREF=http://www.yahoo.com/>Yahoo Search Engine</A> 

</LI> 

<LI>

<A HREF=http://www.amazon.com/>Amazon Bookstore</A> 

</LI> 

<LI>

<A HREF=http://mspress.microsoft.com/>Microsoft Press</A> 

</LI> 

</UL> 

</BODY> 

</HTML>

В Microsoft Internet Explorer 5 эта страница будет отображена, как показано на рисунке на следующей странице.

Каждый элемент начинается с начального тега: текста, заключенного в угловые скобки (< >), который содержит имя элемента и дополнительную информацию. Большинство элементов заканчиваются конечным тегом, который повторяет соответствующий начальный тег, за исключением того, что имеет символ косой черты (/) перед именем элемента. Элемент содержание представляет собой текст, расположенный между начальным и конечным тегами, как показано на рисунке на следующей странице. Обратите внимание, что многие элементы в предыдущем примере содержат вложенные элементы.

В рассматриваемом примере HTML-страницы содержатся следующие элементы:

Элемент HTML Составляющая разметки страницы

HTML

Вся страница

HEAD

Информация о заголовке, например, название страницы

TITLE

Название страницы, которое появляется в строке заголовка окна браузера

BODY

Основной текст, отображаемый браузером

h2

Заголовок верхнего уровня

h3

Заголовок второго уровня

P

Абзац текста

UL

Маркированный список (Unordered List)

LI

Отдельный элемент в списке (List Item)

IMG

Изображение

A

Связь с другой страницей или с другим местом данной страницы (элемент Anchor)

EM В

Блок текста, набранного курсивом (EMphasized) Блок текста, набранного полужирным шрифтом

Браузер, отображающий HTML-страницу, распознает каждый из этих стандартных элементов и отображает их в соответствующем формате. Например, обычно браузер отображает заголовок h2 наибольшим размером шрифта, заголовок Н2 — меньшим размером шрифта, а элемент Р — еще меньшим размером шрифта. Элемент LI отображается как абзац текста в составе маркированного списка. Элемент А браузер преобразует в ссылку (подчеркнутый текст), на которой пользователь может щелкнуть, чтобы перейти в другое место текущей страницы или на другую страницу.

Хотя набор HTML-элементов был существенно расширен по сравнению с первой версией HTML, язык HTML по-прежнему не пригоден для пред-

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

  • Документ, который не содержит типовых компонентов (заголовков, абзацев, списков, таблиц и т.д.) Например, в языке HTML отсутствуют элементы, необходимые для отображения музыкальных символов или математических уравнений.
  • База данных, такая как каталог книг. Вы можете использовать HTML-страницу, чтобы хранить и отображать информацию из статической базы данных (например, перечень книг и их описание). Однако, если бы вам понадобится осуществить сортировку, фильтрацию, поиск и обработку информации, придется снабдить каждую из составных частей информации соответствующей меткой (как в программе, работающей с базами данных, такой как Microsoft Access). В языке HTML не предусмотрено соответствующих элементов.
  • Документ, который вы хотите представить в виде иерархической структуры. Допустим, вы пишете книгу и хотите разбить ее на части, главы, разделы А, В, С и т.д. В дальнейшем программа может использовать данную структуру документа для создания оглавления, оформления различных уровней в структуре с помощью всевозможных стилей, извлечения определенных разделов, а также обработки информации иными способами. Однако элемент типа заголовок в HTML содержит лишь описание собственно текста. Например:

<Н2> Содержимое Web-сайта </Н2>

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

Язык XML позволяет преодолеть эти ограничения.

 

Язык XML решает проблемы

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

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

<?xml version=»1.0″?><INVENTORY>

<BOOK><TITLE>The Adventures of Huckleberry Finn</TITLE>

<AUTHOR>Mark Twain</AUTHOR>

<BINDING>mass market paperback</BINDING>

<PAGES>298</PAGES>

<PRICE>$5.49</PRICE> </BOOK> <BOOK>

<TITLE>Moby-Dick</TITLE>

<AUTHOR>Herman Melville</AUTHOR>

<BINDING>trade paperback</BINDING>

<PAGES>605</PAGES>

<PRICE>$4.95</PRICE> </BOOK> 

<BOOK>

<TITLE>The Scarlet Letter</TITLE>

<AUTHOR>NathanielHawthorne</AUTHOR>

<BINDING>trade paperback</BINDING>

<PAGES>253</PAGES>

<PRICE>$4.25</PRICE> 

</BOOK> 

</INVENTORY>

Примечание. Для описания базы данных в XML предусмотрена возможность работы с несколькими форматами (например, формат .mdb Access или .dbf dBase): язык XML построен на принципе открытых и доступных стандартов.

Имена элементов в XML-документе (такие как INVENTORY, BOOK и TITLE в приведенном выше примере) не являются определениями языка XML. Вы всего лишь назначаете эти имена при создании определенного документа. Для ваших элементов вы можете выбирать любые корректно заданные имена (LIST вместо INVENTORY, либо ITEM вместо BOOK).

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

В предыдущем примере XML-документ имеет иерархическую структуру в виде дерева с элементами, вложенными в другие элементы, и с одним элементом верхнего уровня (в нашем примере — INVENTORY). Он носит название элемент Документ взяли корневой элемент и содержит все другие элементы. Структуру описанного в примере документа можно представить, как показано на следующем рисунке.

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

  Создание ХМ L-документов

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

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

Во второй части книги будут затронуты вопросы создания XML-докумен-тов в соответствии с синтаксическими правилами. Вы узнаете, как создавать XML-документ, удовлетворяющий одному из двух уровней синтаксических ограничений. В зависимости от уровня соответствия стандартам документ может быть «верно сформированным» («well-formed») либо «валидным» («valid»).

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

При отображении HTML-страницы браузер определяет, что элемент h2, например, является заголовком верхнего уровня, и отображает его в соответствующем формате. Это определяется тем, что данный элемент является частью HTML-стандарта. Но каким образом браузер либо другая программа определяет, как обрабатывать и отображать элементы созданного вами XML-документа (такого как BOOK или BINDING в нашем примере), если вы сами составили эти элементы?

Есть три основных способа сообщить браузеру (в частности, Microsoft Internet Explorer 5), как обрабатывать и отображать каждый из созданных вами XML-элементов. (Подробнее об этом будет рассказано в 3 части.)

  • Таблица стилей. С помощью данного метода вы связываете таблицу стилей с XML-документом. Таблица стилей представляет собой отдельный файл, содержащий инструкции для форматирования индивидуальных XML-элементов. Вы можете использовать либо каскадную таблицу стилей (Cascading Style Sheet — CSS), которая также применяется для HTML-страниц, либо расширяемую таблицу в формате языка стилевых таблиц (Extensible Stylesheet Language — XSL), обладающую более широкими возможностями, нежели CSS, и разработанную специально для XML-документов. Об этих методах будет рассказано в главах 2, 7 и 10.
  • Связывание данных. Этот метод требует создания HTML-страницы, связывания с ней XML-документа и установления взаимодействий стандартных HTML-элементов на странице, таких как SPAN или TABLE, с элементами XML. В дальнейшем HTML-элементы автоматически отображают информацию из связанных с ними XML-элементов. Об этом способе рассказано в главе 8.
  • Написание сценария. В этом методе вы создаете HTML-страницу, связываете ее с XML-документом и имеете доступ к индивидуальным XML-элементам с помощью специально написанного кода сценария (JavaScript или Microsoft Visual Basic Scripting Edition [VBScript]). Браузер воспринимает XML-документ как объектную модель документа (Document Object Model — DOM), состоящую из большого набора объектов, свойств и команд. Написанный код позволяет осуществлять доступ, отображение и манипулирование XML-элементами. Этот метод описан в главе 9.

  SGML, HTML и XML

Обобщенный структурированный язык разметки (Structured Generalized Language — SGML) является родоначальником всех языков разметки. Языки HTML и XML образованы из SGML (хотя и различными способами). SGML определяет базовый синтаксис, но дает вам возможность создавать собственные элементы (отсюда термин обобщенный в названии языка). Чтобы использовать SGML для описания определенного документа, вы должны продумать соответствующий набор элементов и структуру документа. Например, чтобы написать книгу, вы должны использовать созданные вами элементы с именами BOOK, PART, CHAPTER, INTRODUCTION, A-SECTION, B-SЕCTION, C-SECTION и т.д.

Набор наиболее употребительных элементов, используемых для описания документа определенного типа, называется SGML-приложением. (SGML-приложение также включает в себя правила, устанавливающие способы организации элементов, а также другие особенности их взаимодействия — о чем пойдет речь в главе5.) Вы можете определить ваше собственное SGML-приложение, чтобы описать тип документа, с которым вы работаете, либо в теле основной программы должно быть определено SGML-приложение для описания типовых документов. Наиболее известным примером последнего типа приложений является HTML, который представляет собой SGML-пpилoжeниe, разработанное в 1991 г. для описания Web-страниц.

Казалось бы, язык SGML вполне подходит для описания Web-документов. Однако разработчики из консорциума W3C посчитали, что он является слишком сложным и фундаментальным, чтобы эффективно представлять, информацию в Web. Гибкость и большое обилие средств, поддерживаемых SGML, затрудняет написание программного обеспечения, необходимого для обработки и отображения SGML-информации в Web-браузерах. Следовало бы приспособить часть языка SGML специально для помещения информации в «Web. В 1996 г. группа XML Working Group разработала ветвь языка SGML, назвав его расширяемым языком разметки — Extensible Markup Language.

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

Синтаксис XML более простой, чем SGML, что облегчает восприятие XML-документов, а также написание программ браузеров, кодов и Web-страниц для доступа и представления информации документа.

 

  Заменит ли XML HTML?

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

В Internet Explorer 5 вы можете открывать XML-документы с вложенными таблицами стилей непосредственно браузером, не используя HTML-страницы. Однако в двух других основных методах отображения XML-документов — связывании данных и DOM-сценариях — отображение XML-документов осуществляется через HTML Web-страницы. (Даже при применении метода таблиц стилей в случае, если вы используете язык XSL, вам потребуется воспользоваться HTML, чтобы сообщить браузеру, каким образом форматировать XML-данные.)

Не заменяя HTML, XML в настоящее время используется в сочетании с ним, существенно расширяя возможности Web-страниц для:

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

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

 

  Официальные концептуальные цели XML

Ниже представлено десять концепций предназначения и целей применения XML, заявленных в официальной спецификации W3C, которые содержатся на Web-сайте http://www.w3.org/TR/REC-xml.

«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 требуют переопределения символов-разделителей для тегов (обычно <and>) и пропуск конечного тега с целью обнаружения процессором конца элемента. При строгом написании программы обработки 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).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *