Представьте себе мир, в котором бытовые приборы умеют взаимодействовать друг с другом без участия человека. Неплохо, придя вечером домой, расслабиться в удобном кресле за просмотром любимого фильма, а в это время автоматически включится СВЧ-печь, чтобы разогреть вам ужин, кофейник подогреет и нальет кофе, а телефон самостоятельно примет входящие звонки, пока вы смотрите фильм.
А холодильник к этому времени уже сделал заказы в ближайшем супермаркете, поскольку запас продуктов пора пополнять. Не правда ли, похоже на фантастику? Но это не фантастика, это только часть того, что открывают перед нами возможности языка по имени XML.
Хотя эта аббревиатура немного смахивает на обозначение размера футболки, на самом деле это новая среда, способная изменить наш мир к лучшему. Выросший из HTML, язык XML обещает стать общим языком для всех персональных компьютеров и любых других устройств, взаимодействующих с компьютерами.
Этот общий для различных устройств язык в ближайшее время будет способен соединить станки и офис в одну локальную сеть, что будет способствовать скоординированной деятельности, рационализации производственных процессов и, соответственно, повышению производительности и снижению стоимости товаров и услуг. Воздействие XML на Сеть будет вначале отмечено ускорением работы поисковиков и лучшим качеством поиска. Наиболее же прогрессивные вещи мы пока и не можем себе представить.
Будем знакомы?
Свое официальное существование eXtensible Markup Language начал с февраля 1998 года, когда World Wide Web Consortium (W3C) утвердил спецификацию XML 1.0. За основу был взят HTML (HyperText Markup Language — язык разметки гипертекста), который с помощью специальных меток — тэгов — позволяет формировать структуру документа и определять отношения между различными элементами этой структуры. Язык HTML вполне успешно справляется с задачей описания текстовой информации и отображением ее на экране программы просмотра (браузера).
Однако сами отображаемые данные никак не связаны с теми тэгами, которые используются для форматирования, поэтому у программ-анализаторов нет возможности использовать тэги HTML для поиска и работы с нужными фрагментами документа. Например, такой фрагмент HTML-кода: <font color=»red»>Это красный текст</font> — позволяет браузеру отобразить текст заданным цветом, но не позволяет определить, в каком месте документа расположен этот тэг, существуют ли вложенные объекты, правильность отношения объектов и т. д.
В отличие от HTML, XML сам по себе не содержит никаких тэгов, предназначенных для разметки, он просто определяет порядок их создания. Если, например, создавая торговый сайт, мы посчитаем, что для обозначения элемента computer в документе необходимо использовать тэг <tovar>, то XML позволяет определить и в дальнейшем свободно использовать определенный нами тэг, и мы можем включать в документ фрагменты типа <tovar>computer</tovar>. Если же в нашем виртуальном магазине предлагается несколько видов товара, то можно, пользуясь тем же тэгом, расширить ассортимент продукции:
<tovar>computer</tovar>
<tovar>CD-RW</tovar>
<tovar>monitor</tovar>
Вы как автор документа самостоятельно можете расширять число используемых тэгов. Например, если в вашем кибермаркете товары размещены в различных отделах, то вы можете задать тэги и выбрать порядок их следования:
<comp_otdel>
<tovar>computer</tovar>
<tovar>CD-RW</tovar>
<tovar>monitor</tovar>
</comp_otdel>
Любой XML-документ должен всегда начинаться с инструкции <?xml?>, внутри которой также можно задавать номер версии языка, номер кодовой страницы и другие параметры, необходимые программе-анализатору в процессе разбора документа.
Тело документа XML состоит из элементов разметки (markup) и непосредственно содержимого документа — данных (content). XML-тэги предназначены для определения элементов документа, их атрибутов и других конструкций языка.
Таким образом, у разработчиков появляется уникальная возможность определять собственные команды, позволяющие им наиболее эффективно определять данные, содержащиеся в документе. Автор документа создает его структуру, используя те команды, которые удовлетворяют его требованиям, и добивается такого типа разметки, которое необходимо ему для выполнения операций просмотра, анализа документа и поиска в нем.
В языке XML есть определенные правила создания документов. Должны солюдаться следующие требования:
— в заголовке документа помещается объявление XML, в котором указывается язык разметки документа, номер его версии и дополнительная информация;
— каждый открывающий тэг, определяющий некоторую область данных в документе обязательно должен иметь закрывающую часть (в XML, в отличие от HTML, в принципе нельзя опускать закрывающие тэги);
— в XML учитывается регистр символов;
— все значения атрибутов, используемых в определении тэгов, обязательно должны быть заключены в кавычки;
— вложенность тэгов в XML строго контролируется, поэтому необходимо следить за порядком следования открывающих и закрывающих тэгов;
— вся информация, располагающаяся между начальным и конечными тэгами, рассматривается в XML как данные, и поэтому учитываются все символы форматирования (то есть пробелы, переводы строк, табуляции не игнорируются, как в HTML);
— содержимое XML-документа представляет собой набор элементов, секций CDATA, директив анализатора, комментариев, спецсимволов, текстовых данных.
Если XML-документ не нарушает приведенные правила, то он называется формально правильным и все анализаторы, браузеры и другие программы, предназначенные для разбора XML-документов, смогут работать с ним корректно. Кроме средств проверки грамматики документ может содержать средства контроля соблюдения правил, определяющих необходимые соотношений между элементами и формирующих структуру документа.
Элементы данных в XML
Элемент — это структурная единица XML-документа. Заключая слово computer в тэг <tovar> (см. первый пример XML-кода), мы определяем непустой элемент, называемый <tovar>, содержимым которого является computer. Набором всех элементов, содержащихся в документе, задается его структура и определяются все иерархические соотношения. Плоская модель данных превращается с использованием элементов в сложную иерархическую систему с множеством возможных связей между элементами.
В некоторых случаях тэги могут изменять и уточнять семантику тех или иных фрагментов документа, по разному определяя одну и ту же информацию и тем самым предоставляя приложению — анализатору этого документа сведения о контексте использования описываемых данных. Например, прочитав фрагмент <tovar>Computer</tovar>, мы можем догадаться, что речь в этой части документа идет о товаре, а вот во фрагменте <shop>
Computer</shop> — о заголовке.
В случае, если элемент не имеет содержимого, то есть нет данных, которые он должен определять, он называется пустым. (Примером пустых элементов в HTML могут служить такие тэги, как <br>, <hr>, <img>.) Необходимо только помнить, что начальный и конечный тэги пустого элемента как бы объединяются в один, и надо обязательно ставить косую черту перед закрывающей угловой скобкой (например, <tovar/>).
Атрибуты XML
Если при определении элементов необходимо задать какие-либо параметры, уточняющие его характеристики, то имеется возможность использовать атрибуты этого элемента. Атрибут — это пара «название» = «значение», которую надо задавать при определении элемента в начальном тэге. Атрибуты существовали еще в HTML, например: <font color=»white» name=»Arial»>Это текст белого цвета, набранный шрифтом Arial</font>.
Чтобы задать область документа, которую при разборе анализатор будет рассматривать как простой текст, игнорируя любые инструкции и специальные символы, но при этом, в отличие от комментариев, сможет использовать их в приложении, необходимо использовать тэги <![CDATA[ и ]]>.
Внутри этого блока можно помещать любую информацию, которая может понадобиться программе- клиенту для выполнения каких-либо действий (в область CDATA, можно помещать, например, инструкции JavaScript). Естественно, надо следить за тем, чтобы в области, ограниченной этими тэгами, не было последовательности символов ]].
В XML предусмотрено использование специальных инструкций, управляющих процессом отображения элементов в окне программы-клиента (например, в окне браузера). Для этих целей в HTML, например, используются CSS (Cascade Style Sheets), а в XML — стилевые таблицы XSL (eXtensible Stylesheet Language). Спецификации этого «расширяемого языка стилевых таблиц» несколько отличаются от CSS Level 1.
Во-первых, стилевые таблицы XSL позволяют определять оформление элемента в зависимости от его месторасположения внутри документа, то есть к двум элементам с одинаковым названием могут применяться различные правила форматирования.
Во-вторых, у разработчиков появляется возможность использования средства для контроля за корректностью составления таких стилевых списков (используя, например, схемы данных). В-третьих, таблицы XSL не являются каскадными, подобно CSS. Однако в XSL существует возможность задавать правила для стилей, при помощи которых можно изменять свойства стилевого оформления, что позволяет использовать довольно сложные приемы форматирования.
XSL-документ представляет собой совокупность правил построения, каждое из которых выделено в отдельный блок, ограниченный тэгом <rule>. Правила определяют шаблоны, по которым каждому элементу XML ставится в соответствие последовательность HTML-тэгов, т. е. внутри них содержатся инструкции, определяющие элементы XML-документа и тэги форматирования, применяемые к ним.
Элементы XML, к которым будет применяться форматирование, обозначаются в XSL дескриптором <target-element/>. Для указания элемента с конкретным названием (название элемента определяется тэгами, его обозначающими), т. е. определения класса элемента, можно использовать атрибут type=»имя_элемента». Вот пример простейшего XSL-документа:
<xsl>
<rule>
<target-element type=»Pentium III»/>
<p color=»red» font-size=»12″>
<computer/>
</p>
</rule>
</xsl>
Процесс разбора XSL-правил является рекурсивным, т. е. если у элемента есть дочерние элементы, то программа будет искать определения этих элементов, расположенных «глубже» в дереве документа. Указанием на то, что необходимо повторить процесс разбора XML-документа для дочерних элементов, является инструкция <children/>.
Дойдя до нее, анализатор выберет из иерархического дерева XML-элементов нужную ветвь и найдет в XSL-шаблонах правила, определяющие форматирование этих нижележащих элементов. В том случае, если вместо <children> мы укажем инструкцию <empty/>, программа закончит движение по данной ветви и возвратится назад, в родительское правило. При этом текущее правило никакой информации в выходном HTML-документе изменять не будет, так как <empty/> в данном случае означает, что содержимое элемента отсутствует.
Еще одним достоинством XML является возможность использования его в качестве универсального языка запросов к хранилищам информации. Более того, XML-документы могут представлять собой базы данных, которые включают в себя одновременно средства для разбора информации и представления ее на стороне клиента (в браузере).
В этой области одним из перспективных направлений является интеграция Java- и XML-технологий, позволяющая использовать мощь обеих технологий при построении машинно-независимых приложений, использующих, кроме того, универсальный формат данных при обмене информацией. XML позволяет также осуществлять контроль за корректностью данных, хранящихся в документах, производить проверки иерархических соотношений внутри документа и устанавливать единый стандарт на структуру документов, содержимым которых могут быть самые разные данные.
Это означает, что его можно использовать при построении сложных информационных систем, в которых важным является вопрос обмена информацией между приложениями, работающими в одной системе. Существенную поддержку языка осуществляют разработчики браузеров и различных программ обработки. Сейчас с XML-документами работают: Internet Explorer, Netscape, Oracle, DB-2, приложения MS Office.
Перспективы
В этой статье мы рассмотрели лишь в общих чертах основы языка XML. Как видно из приведенных примеров, процесс работы с этим языком достаточно прост и не требует специальных знаний, а лучшим редактором для него остается классический Блокнот (из комплекта Windows). Все это дает основания предполагать, что скорее всего в ближайшем будущем XML станет основным языком обмена информацией для информационных систем, заменив собой тем самым HTML.
Слово прогрессивного редактора |
Эта статья — своего рода эксперимент. Экспериментальной мы ее назвали потому, что тему она затрагивает крайне узкую, интересную, может быть, только профессионалам. А может, и более широкому кругу читателей? Поэтому редакция обращается к вам с просьбой: откомментировать данный материал и сообщить нам, нужно ли вообще в журнале освещать подобные темы (может быть, даже завести отдельную рубрику?). Ждем ваших отзывов.
|
Слово консервативного редактора |
Вообще говоря, Upgrade никогда не увлекался веб-дизайном. И, если уж браться за эту тему, не начать ли с основных вещей, пусть они и придуманы не вчера, а 10 лет назад? А то лично я не нашел особых отличий XML от HTML, кроме развитых средств контроля правильности (что, конечно, хорошо, но о самих этих средствах еще хотелось бы узнать) и возможности вводить собственные элементы (что весьма странно). С другой стороны, XML заявляется как инструмент не только и не столько веб-дизайна… Что скажете, уважаемые читатели?
|
***
Редакция журнала благодарит дирекцию «Московского Дома Книги» за предоставленную возможность фотосъемки.
Вячеслав Белов