Основы XML для начинающих пользователей. Правильно и неправильно построенный XML

Рассмотрим технологию использования XML для передачи данных на сервер.

Мы уже рассмотрели 2 способа передачи данных на сервер: это простой текст с разделителем и JSON. Но у них есть недостатки:

  • Отсутствие типов данных. У JSON есть только строка, число, null, boolean. Т.е. ограниченный набор данных.
  • Сложно контролировать целостность передаваемых данных.
  • Сложно визуализировать данные, т.е. сложные объекты сложно отобразить, например, в виде html кода.
  • Сложно преобразовывать данные, т.е. сложно преобразовать свойства одного объекта в свойства другого объекта.

Теперь обратимся в XML как способу передачи данных. XML (eXtensible Markup Language) - язык разметки, предназначенный для описания, хранения и передачи структурированных данных. На сегодня XML используют повсеместно.

На базе XML существует много технологий: DOM (програмное взаимодействие с данными), XLink (указатели и ссылки), XPath (описание и выборка элементов), XSL, XSLT (преобразование XML документа).

Разбор XML пакета выглядит так:

//Объект XMLHttpRequest var req= getXmlHttpRequest (); //Установка обработчика req. onreadystatechange= function () { if (req. readyState== 4 ) { //состояние "4 - comlete" var xml= req. responseXML; }}

Здесь даже сериализацию и десериализацию делать не надо. Это делает сам объект. Как только сервер присылает XML данные, они уже в распарсенном виде (responseXML - DOM модель документа). Подробнее о технологии DOM читайте в предыдущих статьях на сайте.

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

//для IE var str = dom. xml //для Firefox var serializer = new XMLSerializer (); var str = serializer. serializeToString (dom);

Для IE рабочий код короче, т.к. в него уже встроен объект для сериализации, а в других браузерах только появляется объект XMLSerializer для сериализации.

При работе с XML данными обычно мы имеем дело с DOM моделью документа. Поэтому стоит вспомнить некоторые моменты DOM (об этом читайте в предыдущих статьях). Напомню только способы доступа к элементу DOM модели:

//корневой элемент var root = xmlDOM. documentElement; //первый элемент в коллекции var book = root. childNodes[ 0 ]; //дочерний элемент var title = book. childNodes[ 0 ]; //текстовый узел элемента alert (title. firstChild. nodeValue);

Также из DOM модели документа можно выбирать элементы одного типа. Внимание! Функции getElemensById - нет, т.к. в XML id может означать что угодно, а не только идентификатор, поэтому его не применяют.

//выборка всех элементов с одним тегом var books = xmlDOM. getElementsByTagName ("book" );

XML также активно используется не только для представления данных, но и для обмена данными в сервер-ориентированной архитектуре. Это такой подход, при котором мы представляем сложное приложение не как классическое клиент-серверное приложение, а как набор сервисов (служб), каждый из которых отвечает за свои задачи. И каждый сервис имеет точки входа (точки взаимодействия). Здесь нет четкого клиента, т.к. одна служба может быть клиентом другой службы. Получается такая распределенная технология. Есть несколько подходов к построению таких технологий - удаленный вызов процедур, SOAP.

Чтобы службы разных клиентов могли взаимодействовать, они должны говорить на одном языке (при этом не важно какая операционная система у службы). И такой язык был разработан и назван RPC.

Протокол XML-RPC

RPC (Remote Procedure Call) - удаленный вызов процедур. Это протокол взаимодействия между двумя удаленными точками. Он позволяет точке “а” вызвать функцию на удаленной точке “б”.

Есть несколько реализаций протокола RPC. Рассмотрим реализацию на базе XML.

По сути, клиент и сервер просто обмениваются какими-то XML фрагментами.

XML-RPC предоставляет следующие типы данных:

  • boolean.
  • integer.
  • double.
  • string.
  • date/time.
  • base64.
  • array.
  • struct.
  • null.

Т.е. при передаче определенного типа данных нужно декларировать, что это за тип данных. Структура похожа на объект JSON.

Преобразование XML данных

Для преобразования данных, полученных с сервера в виде XML используют XSLT.

XSLT (eXtendable Stylesheet Language Transformation) - технология, которая помогает получить на вход XML, а на выходе сформировать все, что угодно.

Преобразование XSLT на javaScript - IE

var dom = new ActiveXObject ("MSXML2.DOMDocument" ); dom. async = false; dom var xsl = new ActiveXObject ("[email protected]" ); xsl. async = false; xsl. load ("my.xsl" ); //само преобразование var result = dom. transformNode (xsl);

Преобразование XSLT на javaScript для Firefox. Ghrome, Opera

var xslStylesheet; var xsltProcessor var myXMLHTTPRequest = mew XMLHttpRequest (); myXMLHTTPRequest. open ("GET" , "example.xsl" , false); myXMLHTTPRequest. send (null); //получение xml xslStileshett = myXMLHTTPRequest. responseXML; xsltProcessor myXMLHTTPRequest = new XMLHttpRequest (); myXMLHTTPRequest. open ("GET" , "example.xml" , false); myXMLHTTPRequest. send (null); //сама трансформация var xmlSource = myXMLHTTPRequest. responseXML; var resultDocument = xsltProcessor. transformToDocument (xmlSource);

Введение в правильную разметку

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

Языки разметки прошли путь от первых форм, создаваашихся компаниями и госучреждениями, до Стандартного языка обобщенной разметки (Standard Generalized Markup Language - SGML), Гипертекстового языка разметки (Hypertext Markup Language - HTML) и в конечном итоге до XML. SGML может показаться сложным, а HTML (который, по сути, сначала был просто набором элементов) оказался недостаточно мощным для идентификации информации. XML разрабатывался как простой в применении и удобный для расширения язык разметки.

В XML можно создавать свои собственные элементы, что позволяет точно представлять фрагменты данных. Документы можно не просто разделять на абзацы и заголовки, но и выделять любые фрагменты внутри документа. Чтобы это было эффективно, нужно определить конечный перечень своих элементов и придерживаться его. Элементы можно определять в Описании типа документа (Document Type Definition - DTD) или в схеме, что будет кратко обсуждено ниже. Когда вы освоите и начнете использовать XML, не бойтесь экспериментировать с именами элементов, создавая реальные файлы.

Построение документа XML

Как уже упоминалось, файлы XML состоят из текста и разметки. Большая часть текста помещается в элементы, в которых текст окружен тегами. Например, допустим, нужно создать поваренную книгу в формате XML. У нас есть рецепт под названием Ice Cream Sundae , который нужно преобразовать в XML. Чтобы разметить название рецепта, заключим его текст в элемент, который начинается и заканчивается тегами. Этот элемент можно назвать recipename . Чтобы отметить начальный тег элемента, поместим его имя в угловые скобки <>), вот так: . Затем введем текст Ice Cream Sundae . После текста поставим замыкающий тег, который представляет собой имя элемента в угловых скобках, плюс косая черта завершения элемента (/) перед именем элемента, вот так: . Эти теги образуют элемент , в который можно вводить текст и даже другие элементы.

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

Начало создания файла XML

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

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

Создание корневого элемента

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

Листинг 1. Корневой элемент

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

Наименования элементов

Соблюдение регистра в тегах

При создании XML регистры начального и конечного тегов должны совпадать. В противном случае можно получить сообщение об ошибке при использовании или просмотре XML. Например, Internet Explorer не отображает текст в случае несовпадения регистров. Вместо этого он выводит сообщения о несовпадении начального и конечного тегов.

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

  • Пробелы в именах элементов не допускаются.
  • Имена должны начинаться с буквы, а не с цифры или знака. (После этой первой буквы можно использовать любую комбинацию из букв, цифр и допустимых символов.)
  • Регистр не имеет значения, но во избежание путаницы соблюдайте его.
Листинг 2. Другие элементы
Ice Cream Sundae 5 minutes

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

Вложение элементов

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

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

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

Листинг 3. Правильное вложение элементов XML.
Ice Cream Sundae 3 chocolate syrup or chocolate fudge 1 nuts 1 cherry 5 minutes

Добавление атрибутов

К элементам иногда добавляются Атрибуты . Атрибуты состоят из пары имя-значение, где значение берется в двойные кавычки ("), вот так: type="dessert" . Атрибуты позволяют сохранять вместе с элементом дополнительные параметры, меняя значения этих параметров от элемента к элементу в одном и том же документе.

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

Листинг 4. Наш файл XML с элементами и атрибутами
Ice Cream Sundae 5 minutes

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

Правильно и неправильно построенный XML

Если вы следуете правилам, определенным в вашей структуре, вы сможете легко создавать правильно построенный код XML. Правильный XML — это код XML, составленный с соблюдением всех правил XML: правильное именование элементов, вложение, именование атрибутов и т.п.

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

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

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

Листинг 5. DOCTYPE

Этот пример означает, что ваш файл списка элементов с именем filename.dtd находится в вашем компьютере (то есть в каталоге SYSTEM , а не в общем каталоге PUBLIC).

Использование сущностей

Сущности (entity) могут представлять собой фрагменты текста или специальные символы. Они могут указываться внутри документа или вне его. Во избежание ошибок и для правильности отображения сущности должны быть надлежащим образом объявлены и выражены.

Нельзя вводить специальные символы прямо в текст. Для использования в тексте специальных символов их нужно сделать сущностями и использовать коды этих символов. В качестве сущностей можно определить фразы, такие как название компании, а затем использовать их по всему тексту. Чтобы создать сущность, назначьте ей имя и вставляйте это имя и вставляйте это имя в текст после знака амперсанда (&) и заканчивая точкой с запятой — например, &coname; (или другое имя). Затем укажите этот код в своей строке DOCTYPE в квадратных скобках(), как в . Этот код определяет текст, который подставляется вместо сущности.

Листинг 6. Сущность

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

Как избежать ошибок

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

Заключение

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

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

Зачем он нужен, этот XML ?

[В последнее время, в связи с появлением этих страничек, самым частым
вопросом ко мне оказался такой: "Расскажи, а зачем он вообще нужен, XML?
Разве нам мало HTML? " Не имея многого времени (или ума;) на изготовление собственных публикаций, а также глубоко чтя классиков, я предпочел лучше бегло перевести отличную статью по названной subj
- возможно, это первый эпизод сериала "в помощь" ]

Jon Bosak, Tim Bray
XML and the Second-Generation Web
из журнала "Scientific American", май 1999

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

Именно для этого - сделать информацию само-описанной - и был придуман новый язык разметки документов - Extensible Markup Language (XML). Эти легко выговариваемые изменения ("само-описанный" документ, смена правил общения с компьютерами) несут в себе огромный потенциал - роль Internet от среды доставки информации начинает расширяться на другие виды человеческой деятельности. И действительно, с момента утверждения ее W3C в 1998г, XML-спецификация со скоростью лесного пожара стала проникать повсюду - в промышленность и науку, в производство товаров и медицину.

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

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

Это отражается на сложности разработки web-сайтов, если только эти сайты не должны походить на факсы, рассылающие страницы всем желающим, кто попросит. Более половины людей и компаний во всем мире предпочли бы web-сайты, которые умеют принимать от пользователей заказы, пересылать диагнозы болезней и даже запускать тонкие инструментальные операции в заводских цехах и научных лабораториях. Подобные задачи _НИКОГДА_ не стояли перед HTML!.

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

бе бе бе

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

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

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

и , но не цены с вариантами доставки.

Добавьте к этому и неудовлетворительное качество возможностей поиска в Web. Поскольку не существует способа как-то особо пометить информацию о ценах, решительно невозможно осуществлять в web поиск страниц по признаку "цена".


Что-то старое, что-то новое

В принципе, решение элементарно: в тегах нужно указывать, что это за информация, а не то, как она должна выглядеть. Например, размечать компоненты заказа на рубашку тегами "цена, размер, количество, цвет", а не "bold, paragraph, row, column", как это предлагается в HTML. Тогда программе проще идентифицировать документ как заказ и выполнить остальную часть работы: показать этот заказ в том или ином виде, провести через бухгалтерскую систему, или сделать все так, чтобы назавтра новая рубашка была бы доставлена к вашему порогу.

Мы, рабочая группа W3C, еще в 1996 г. приступили к разработке такого проекта. Идея была сильная, хотя и не совсем оригинальная. На протяжении поколений редакторы и печатники маркировали рукописные тексты пометками для наборщиков. Подобный "язык разметки" развивался самостийно до 1986г., пока, в результате десятилетней работы, Международная Организация по стандартизации (ISO) не ввела систему создания новых языков разметки.

Получив имя SGML (Standard Generalized Markup Language), этот язык описания языков - метаязык - доказал свою полезность на примере многих крупных систем подготовки публикаций. И даже HTML получил свое определение через SGML. Единственная трудность с SGML заключалась в его всеядности - там масса заумных вещей для минимизации нажатий на клавиши, так как в ту пору каждый байт был на счету. Вот почему сегодня web-браузеры с ним не в ладах.

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


<имя пациента> blah blah
<аллергия на лекарство> blah blah blah

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

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

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

Правило вкладывания автоматически обуславливает простоту любого XML-документа, производя структуру, известную в информатике как дерево. Аналогично генеалогическому дереву, любой графический или текстовый элемент документа есть отец, сын или брат (parent, child, sibling) какого-то другого элемента, и это отношение родства всегда однозначно. Конечно, деревья не описывают все многообразие структур данных, однако покрывают большую часть типовых случаев применения компьютеров. Кроме того, деревья необычайно удобны для программистов. Нет проблем написать небольшой кусочек кода для переупорядочивания транзакций или вывода на экран вполне понятного чека, когда этот чек представлен в виде дерева.

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


Конец вселенскому ожиданию (World Wide Wait)

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

Для иллюстрации представьте себе, как в онлайновом бюро путешествий вам нужно подобрать рейс из Лондона в Нью-Йорк на 4 июля. Скорее всего, вы увидите список в несколько раз длиннее, чем может поместиться на экране. Этот список можно сократить, задав более точные параметры типа времени вылета, цены или авиакомпании, но в этом случае вы просто "нагружаете" сервер бюро путешествий своим запросом и вынуждены дожидаться ответа. Однако если бы этот длинный список рейсов вам предоставили в XML, то бюро могло бы сопроводить его небольшим Java-аплетом, с помощью которого моментально и легко отсортировать и отсеять ненужное, не прибегая к какому-либо взаимодействию с сервером. Помножьте это на миллионы пользователей Web, и общий эффект окажется впечатляющим.

Чем больше сетевой информации будет размечено "отраслевыми" XML-тегами, тем легче будет найти то, что вы ищете. Сегодня поиск в Internet по запросу "работа для биржевого брокера" захлестнет вас лавиной рекламных объявлений, но вероятно, о работе их там будет всего несколько штук - в основном работа прячется на бесплатных досках объявлений газетных сайтов, с которыми не любят работать поисковые роботы. И сейчас Ассоциация Газет Америки (Newspaper Association of America) создает на XML свой язык разметки объявлений, обещающий сделать процесс поиска намного эффективнее.

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

Поэтому с самого начала важная роль в XML-проекте отводилась созданию сопутствующего стандарта метаданных. Ту же самую роль, как каталожные карточки для библиотечных книг, для информации в Web должна сыграть февральская Спецификация Описаний Ресурсов (Resource Description Framework, RDF). Распространяясь по Сети, метаданные RDF сделают поиск намного более быстрым и релевантным, чем сейчас. В Сети нет библиотекарей, но каждый веб-мастер, ко всему прочему, стремится к легкой "находимости" его сайта, поэтому мы ожидаем, что RDF, как только людям откроется его мощь, окажет огромное влияние на развитие Internet.

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

Вероятно, полезнее всего в XLink окажется та часть спецификации, которая позволяет авторам прибегать к опосредованным ссылкам, отсылающим вместо самих страниц в некую сводную БД. Так, если автор изменил адрес страницы, простым авторским редактированием одной записи в такой базе данных легко обновить все ссылки, ведущие на его страницу. Это позволит избавиться от становящихся привычными сообщений "404 File Not Found", сигнализирующих о "сломавшейся" ссылке.

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


Необходимо сотрудничество

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

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

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

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

Создавая новый язык разметки на XML, его создатели должны договориться о трех вещах: какие там будут теги, как они могут вкладываться друг в друга, и как они должны обрабатываться. Первые два пункта - словарь языка и структура - кодируются сейчас посредством DTD (Document Type Definition). Стандарт XML не обязывает разработчиков языка прибегать к DTD, но у большинства новых языков DTD-описания, по-видимому, будут - программистам так проще писать программы, понимающие данную разметку и извлекающие из нее что-то толковое. Нужны будут также комплекты руководств, где на человеческом языке описаны значения всех тегов. Например, HTML имеет DTD-описание, но по HTML есть и сотни страниц привычных руководств, с которыми сверяются программисты, разрабатывая браузеры и другие программы для Web.


Эссе о стиле

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

Для публикаторов, стремящихся написать однажды, а потом постоянно издавать ("write once and publish everywhere"), самое главное - "родить" публикацию, а затем "разливать" ее в мириады видов изданий, как печатных, так и электронных. XML помогает им так: контент размечается описательными тегами, независимыми от среды визуализации. Далее публикатор может оформить правила представления в виде т. н. stylesheets (листов стилей), автоматически "стилизующих" его произведение под разные устройства и среды. Стандарт такого XML-языка, разрабатываемый для этих целей, носит название Extensible Stylesheet Language (XSL).

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

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

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

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

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

Таким образом, Сеть, усиленная XML, должна стать для своих пользователей быстрым, дружественным и лучшим местом для бизнеса. Еще больше XML необходим web-мастерам и web-дизайнерам. "На полную катушку" потребуется знание новых XML-языков армиям программистов. И хотя дни самообразованных хакеров [авторы имели в виду лучший смысл этого слова] еще длятся, над их популяцией уже нависла угроза.

Завтрашний web-дизайнер обязан быть сведущ не только в изготовлении текста и графики, но и в строительстве многоуровневых, взаимозависимых систем на основе DTD, деревьев данных, гиперссылочных структурах, метаданных и стилевых компонентах - сильной и передовой инфраструктуре Web второго поколения.

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

Что представляет собой файл XML

Начнем, пожалуй, с того, что, с точки зрения современных компьютерных технологий и программ, используемых для создания документов такого типа, представляет собой текстовый файл, в котором прописаны команды универсального расширяемого языка (Extensible Markup Language), который достаточно сильно напоминает известное средство разметки HTML.

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

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

Вид XML-файла

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

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

Чем открыть стандартный XML-формат

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

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

Можно поступить иначе, используя правый клик на файле с последующим выбором команды «Открыть с помощью…», после чего, опять же, выбрать нужное приложение либо из списка, либо указать местоположение основного исполняемого компонента (чаще всего это файл EXE).

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

Впрочем, если возникает необходимость редактирования XML-формата, тогда лучше применять профессиональные утилиты с поддержкой языкового синтаксиса, например, Oxygen XML Editor, XML Marker или EditiX Lite Version. Естественно, это далеко не все утилиты, способные работать с языком файла на высшем уровне. Сегодня таких программ можно найти очень много.

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

Возможные ошибки при открытии XML-файла в виде вложения электронной почты

Иногда ошибки могут появляться, когда производится попытка открытия файла, являющегося вложением электронного сообщения. Чащу всего это относится к стандартным почтовым клиентам вроде Outlook Express.

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

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

Вместо итога

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

11 ответов

Я пытаюсь сделать несколько резюме моего опыта работы с XML:

Pros

Формат для чтения:

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

Независимость платформы:

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

Великие инструменты для преобразования

Отличный инструмент для проверки с помощью

Против

Многословность

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

Неэффективное использование

Далеко не тривиально, какие объекты (выражения XPath, шаблоны XSL, схемы XSD, синтаксические анализаторы XML и т.д.) имеют какой жизненный цикл. Что можно кэшировать? Многие люди не делают это правильно, чтобы избежать проблем безопасности нитей. И это приведет вас к ужасной медлительности. И я хочу подчеркнуть, что это не проблема технологии, а неправильное использование . Многие люди застряли в старом партере DOM, который является уродливым. Они абстрагировали некоторый слой над ним и создали собственные API для обработки XML, что плохо. Двигайтесь дальше, используйте DOM4j или STAX или JAXB или что-то стандартное.

Ложная свобода создания чего-то особенного

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

Лучшие учебники по XML находятся на ZVON Я думаю. Используйте их, если хотите.

В качестве общей формы для передачи данных. Это были 90-е годы, и все метки были яркими!

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

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

Действительно, что это.

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

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

Он может быть проверен на основе формальных правил грамматики (DTD, XSD...), преобразованных в другую древовидную структуру (XSLT), данные могут быть извлечены различными способами, такими как языки запросов (XQuery), XML может быть построен из дерево (DOM) и многое другое.

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

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

Одна вещь, которую никто не любит в XML, - это многословие. Человек потеряется во всех этих тегах, если имеется более 2-3 уровней отступов. И нет, вы не перестаете видеть все те теги через некоторое время, как люди с круглыми скобками Lisp.

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

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

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



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

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

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