707 MGraphics.ru - XML - Понятия XML. Введение в XML.
Уроки photoshopa


XML

Понятия XML. Введение в XML.

Условия перепечатки материалов

Рейтинг статьи: 0.000.000.000.000.00
Проголосовало 0 человек.
Оцените статью:

XML (extensible Markup Language, расширяемый язык разметки) - это утвержденный консорциумом W3C стандарт разметки документов. В нем определяются общие правила синтаксиса, используемые для разметки данных при помощи простых, доступных для чтения тегов. Он устанавливает стандартный формат компьютерных документов, который достаточно гибок для того, чтобы его можно было приспособить для самых разнообразных сфер деятельности, таких как веб-сайты, электронный обмен данными, векторная графика, генеалогия, списки недвижимости, сериализация объектов, удаленные вызовы процедур и системы голосовой почты. Может быть, вы займетесь созданием собственных программ, которые будут пользоваться данными XML-документов или обрабатывать их. В этом случае у вас есть доступ к целому ряду бесплатных библиотек на множестве языков, поддерживающих чтение и запись XML, так что можно будет сосредоточиться на специфических задачах вашей программы. Либо можно пользоваться, работая с XML-документами, готовым программным обеспечением, например, веб - броузерами и текстовыми редакторами. Некоторые программы позволяют работать с любыми XML-документами, другие приспособлены для поддержки только конкретного приложения XML в конкретной области, такой как, например, векторная графика, и не могут применяться вне этой сферы деятельности. Но в любом случае везде используется одинаковый базовый синтаксис, даже если он намеренно скрыт для блага пользователя или ограничен единственным приложением.

Что дает XML

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

Самое важное состоит в том, что XML - это язык метаразметки. Это значит, что он не имеет фиксированного набора тегов и элементов для работы с любыми сферами интересов. Попытки создать конечный набор подобных тегов обречены на неудачу. XML позволяет разработчикам и создателям документов определять нужные им элементы по мере необходимости. Химики могут при помощи тегов описывать элементы, атомы, связи, реакции и другие понятия, принятые в химии. Агенты по недвижимости могут использовать элементы, описывающие квартиры, аренду, комиссионные сборы, местоположение и другие понятия, связанные с недвижимостью. Музыканты могут определить элементы для описания четвертных и половинных нот, тональностей, слов песен и других объектов, встречающихся в музыке. В аббревиатуре XML «X» обозначает extensible-расширяемый. Это значит, что язык может быть расширен и адаптирован в соответствии с различными потребностями.

При своей гибкости в определении элементов XML строг в отношении многого другого. Он устанавливает для ХМL-документов грамматику, которая регулирует, где могут встречаться теги и как они располагаются, какие имена элементов являются допустимыми, как атрибуты присоединяются к элементам и т. д. Эта грамматика достаточно конкретна для разработки XML-анализаторов, которые могут читать и понимать любой XML-документ. Документы, удовлетворяющие этой грамматике, называются корректными (well-formed). Документ, не являющийся корректным, не допустим, подобно тому как не может быть допустимой программа на языке С, если она содержит синтаксическую ошибку. XML-процессоры отвергают документы с ошибками корректности. С целью лучшего взаимодействия частные лица и организации могут договариваться об употреблении лишь определенных тегов. Эти наборы тегов называются XML-приложениями. XML-приложение - это не программное приложение, наподобие Mozilla или Microsoft Word, которое использует XML. Скорее, это приложение языка XML к конкретной области деятельности, будь то векторная графика или кулинария.

Разметка в XML-документе описывает его структуру. Она позволяет видеть, как элементы связаны друг с другом. В хорошо составленном XML-документе разметка также описывает и его семантику. Например, разметка может показывать, является ли элемент датой, именем человека или штрих - кодом. В хорошо спроектированных XML-приложениях разметка ничего не говорит о том, как должен отображаться документ. То есть она не указывает, должен ли элемент выделяться жирным шрифтом, курсивом и не является ли он элементом списка. XML - это язык разметки структуры и семантики, а не язык представления. Разметка, разрешенная для конкретного XML-приложения, как правило, документирована в определении типа документа (DTD, Document Type Definition). В DTD перечислены допустимые теги разметки и указано, каким образом разметка включается в документ. Каждый конкретный случай сверяется с DTD. Документ, который соответствует DTD, называется действительным (valid). Если он не соответствует DTD, то является недействительным (invalid). Действительность зависит от DTD: документ будет действительным или недействительным в зависимости от того, с каким DTD выполняется сверка.

Разметка, разрешенная для конкретного XML-приложения, как правило, документирована в определении типа документа (DTD, Document Type Definition). В DTD перечислены допустимые теги разметки и указано, каким образом разметка включается в документ. Каждый конкретный случай сверяется с DTD. Документ, который соответствует DTD, называется действа тельным (valid). Если он не соответствует DTD, то является недействительным (invalid). Действительность зависит от DTD: документ будет действительным или недействительным в зависимости от того, с каким DTD выполняется сверка.

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

Чего не может XML

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

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

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

И наконец, тот случай, когда реклама чаще всего затмевает реальность: XML не является базой данных. Нельзя заменить сервер Oracle или MySQL на XML. База данных может содержать XML-данные в поле типа VARCHAR, BLOB или специального типа для XML; однако сама база данных не является XML-документом. Можно хранить XML-данные в базе данных или на сервере, извлекать данные из базы в формате XML, но для этого вам потребуется запустить программу, записанную на настоящем языке программирования типа С или Java. Для записи XML в базу данных программное обеспечение на стороне клиента отправляет XML-данные на сервер по установленному сетевому протоколу типа TCP/IP. Программное обеспечение на сервере получает XML-данные, обрабатывает их и сохраняет в базе данных. Чтобы извлечь XML-документ из базы данных, обычно приходится пользоваться промежуточной программой, такой как Enhydra, которая выполняет SQL-запросы к базе данных и форматирует результат в виде XML перед передачей его клиенту. Конечно, некоторые базы данных могут включать такой программный код в основной сервер или предоставлять для этого подключаемые модули, такие как сервлет Oracle XSQL. XML очень хорошо служит в качестве всеобщего, не зависящего от платформы транспортного формата для таких сценариев. Однако XML сам не является базой данных и не должен использоваться в качестве таковой.

Переносимые данные

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

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

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

Как работает XML

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

Пример 1-1. XML-документ

<?xml version="1.0"?xproduct barcode="2394287410">   <manufacturer>Verba-tiro</manufacturer>    <name>DataLife MF 2HD</name>    <quantity>10</quantity>

<size>3.5"</size>

<со1ог>черный</со1ог>

<description>дискеты</description> </product>

Этот документ - текстовый и без проблем хранится в текстовом файле. Можно редактировать этот файл в любом стандартном текстовом редакторе, таком как BBEdit, UltraEdit, Emacs или vi. Специальный редактор XML не требуется; на самом деле оказывается, что большинство универсальных редакторов XML создают гораздо больше проблем, чем того стоит, и намного сложнее в использовании, чем простые текстовые редакторы.

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

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

Отдельные XML-приложения обычно четко предписывают, где и какие элементы и атрибуты допускаются. Например, в биологическом документе не предполагается наличие элемента G Clef. Некоторые из этих правил точно задаются с помощью DTD. Документ содержит либо само DTD, либо указатель на URI, где находится DTD. Некоторые XML-анализаторы понимают такие детали и сверяют документ с DTD в процессе его чтения на предмет соответствия его указанным ограничениям. Такой анализатор называется проверяющим анализатором (validatingparser). Нарушение этих ограничений - это нарушение действительности (validity error), а весь процесс сверки документа с DTD называется проверкой действительности (validation). Если проверяющий анализатор находит ошибку, то сообщает о ней приложению, от имени которого он обрабатывает документ. Это приложение затем решает, требуется ли дальнейший анализ документа. Однако в отличие от нарушения корректности нарушение действительности необязательно является фатальным; приложение может принять решение игнорировать это. Не все анализаторы выполняют проверку действительности; некоторые проверяют только корректность.

Приложение, получающее данные от анализатора, может быть:

•    Веб-броузером, отображающим документ, таким как Netscape или Internet Explorer.

•    Текстовым процессором, например StarOffice Writer, загружающим XML-документ для редактирования.

•    Сервером баз данных, например Oracle, сохраняющим XML в базе данных.

•    Графической программой, например Corel Draw, интерпретирующей XML как двумерные координаты элементов рисунка.

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

•    Программой персональных финансов, такой как Microsoft Money, рассматривающей XML как план банковских счетов.

•    Программой для информационного агентства, читающей XML-документ и извлекающей заголовки текущих новостей.

•    Программой, написанной на Java, С, Python пли на другом языке, которая в точности выполняет то, что вы скажете.

•    И практически всем, что еще можно представить.

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

Эволюция XML

XML- потомок языка Standard Generalized Markup Language (SGML, стандартный обобщенный язык разметки). Язык, который в итоге стал SGML, был изобретен Чарльзом Голдфарбом (Charles Goldfarb), Эдом Мошером (Ed Mosher) и Рэем Лори (Ray Lorie) в фирме IBM в 70-х годах и развивался несколькими сотнями человек по всему миру до его окончательного принятия в качестве стандарта ISO 8879 в 1986 го­ду. В значительной степени SGML предназначался для решения тех же задач, что и XML. Он был и является языком семантической и структурной разметки текстовых документов. SGML - чрезвычайно мощный язык, и он имел некоторый успех в армии и правительстве США, в аэрокосмическом секторе и других отраслях, где требовались средства эффективного управления техническими документами, со­держащими десятки тысяч страниц.

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

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

В 1996 году Йон Босак (Jon Bosak), Тим Брей (Tim Bray), С. М. Сперберг-МакКуин (С.М. Sperberg-McQueen), Джеймс Кларк (James Clark) и еще несколько человек начали работать над облегченной вер­сией SGML. Она сохранила большинство мощных средств SGML, одна­ко были урезаны многие избыточные возможности, которые были сложны в применении, запутывали конечного пользователя или прос­то за 20 лет существования SGML доказали свою бесполезность. В результате в 1998 году появился XML 1.0, сразу получивший признание. Многие разработчики, которые испытывали необходимость в структурном языке разметки, но не могли смириться со сложностью SGML, с радостью приняли XML. В конце концов он стал использоваться в самых различных сферах деятельности, начиная от судебных архивов и заканчивая свинофермами.

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

Следующим шагом стал extensible Stylesheet Language (XSL, расширяемый язык таблиц стилей) - XML-приложение, которое преобразует другие XML-документы в форму, доступную для просмотра веб-броузерами. Этот язык вскоре разделился на XSL Transformations (XSLT) и XSL Formatting Objects (XSL-FO). XSLT стал универсальным языком преобразования одного XML-документа в другой для отображения на веб-страницах и других целей. XSL-FO - это XML-приложение, которое описывает компоновку как печатной, так и веб-страницы. Это приложение по своей мощности и выразительности конкурирует с PostScript.

Однако XSL - не единственный вариант применения стилей к XML-документам. Когда был изобретен XML, Cascading Stylesheet Language (CSS, язык каскадных таблиц стилей) уже использовался для HTML-документов и также вполне подходил для XML. С появлением CSS Level 2 консорциум W3C объявил применение стилен к XML-документам непосредственной задачей CSS, равной по важности HTML. Ранее существовавший Document Style Semantics and Specification Language (язык семантики и спецификации стиля документа, DSSSL) был также призван из мира SGML, чтобы задавать стили XML-документов для печати и использования в Сети.

Extensible Linking Language (XLL, расширяемый язык связывания) определяет более мощные конструкции связей, которые позволяют объединять XML-документы в гипертекстовые сети средствами, намного превосходящими тег А в HTML. Он также делится на два стандарта: XLinks, который описывает связи между документами, и ХРо-inter, позволяющий обращаться к отдельным частям XML-документа. В какой-то момент было замечено, что и XPointer и XSLT разрабатывали достаточно сложные и при этом несовместимые синтаксисы для выполнения в точности одинаковых функций: идентификации конкретных элементов XML-документа. В дальнейшем адресные части обеих спецификаций были выделены и объединены в третью спецификацию, XPath.

Нечто подобное произошло, когда обнаружилось, что XML 1.0, XSLT, XML Schemas и Document Object Model (объектная модель документа, DOM) содержат схожие, но слегка отличные концептуальные модели структуры XML- документа. Например, в XML 1.0 корневой элемент документа рассматривается как корень документа, в то время как в XSLT имеется абстрактный корень, который содержит корневой элемент и некоторые другие части документа. Поэтому группа по разработке ядра XML (XML Core Working1 Group) консорциума W3C начала работу над информационным набором XML (XML Information Set), на котором должны основываться и на который должны ссылаться все эти стандарты.

Другой головоломкой был единообразный интерфейс для доступа к содержимому XML-документа из программ на Java, JavaScript и C++. Простейший API должен был лишь рассматривать документ как объект, включающий другие объекты. На самом деле и внутри и извне W3C уже шла разработка подобной объектной модели документа (Document Object Model) для HTML. He составило труда расширить эту деятельность на XML.

Вне W3C Питер Мюррей-Раст (Peter Murray-Rust), Дэвид Меггинсон (David Megginson), Тим Брей (Tim Bray) и другие члены списка рассылки xmi-dev обратили внимание, что XML-анализаторы, будучи совместимы в отношении документов, которые они могут обрабатывать, оказались не совместимы по своим API. Это наблюдение привело к тому, что был разработан простой API для XML- SAX (Simple API for XML). В 2000 году появился SAX 2, увеличив возможности настройки и добавив поддержку пространств имен и несколько менее значительных нововведений.

Разработка расширений базовой спецификации XML продолжается. Будущие направления включают:

X Fragment

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

XMLSchetnas

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

XHTML

Переформулирование HTML как корректного, модульного, потенциально действительного XML-приложения.

XML Query Language (язык запросов XML )

Язык для поиска в документе элементов, соответствующих определенному критерию.

Canonical XML (канонический XML)

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

XML Signatures (подписи XML)

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

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

Разместил: Elder
Опубликовано: 06.11.2008
Статья "XML - Понятия XML. Введение в XML." прочтена 5877 раз.





Последние новости