Архивы: по дате | по разделам | по авторам

Размечаем документы. Часть вторая

АрхивСетевое окружение (архив)
автор : Александр Печерский   17.11.2000

Начинаем размечать. IE - наш друг, брат и вообще...

<<Первая часть

Какой он, XML?

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

XML очень похож на HTML, что вызвано наличием общего средства их описания - SGML. Основой для XML служит обычный текстовый файл, в который при помощи символов "<, >" и "/>" включаются специальные маркеры-теги. Этот файл может храниться на сервере и предоставляться по запросу клиенту так же, как и обычная Web-страница, по стандартному протоколу HTTP. В качестве сервера могут выступать любые существующие сегодня Web-серверы. На стороне клиента XML-документ может быть обработан любой программой просмотра, знакомой со спецификацией XML, например, браузером Microsoft Internet Explorer 5. Но в XML теги нужны не для указания программе-анализатору способа отображения того или иного отрывка текста, а для того, чтобы просто как-то отметить этот текст. Выбор маркеров при этом зависит лишь от фантазии автора документа, а их конкретное значение для программы-обработчика определяется специальными правилами - описателями грамматики языка.

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

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

<AUTHOR><FIRSTNAME>Иван</FIRSTNAME> Сергеевич <LASTNAME>Петров</LASTNAME></AUTHOR>

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

<FRIEND>

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

<?xml version="1.0" encoding="windows-1252"?>
<DOCUMENTS>
<DOCUMENT id=54571 date="12/05/99">
<AUTHOR>Иван Сергеевич Петров
</AUTHOR>
<TEXT href="text.txt">
<INTRODUCTION>
Экологические проблемы <LAKE>Телецкого озера </LAKE> - сокровища
<REGION>Горного Алтая</REGION>. Одобрено правительством Республики
<DEPARTMENT>Горный Алтай </DEPARTMENT> .... </INTRODUCTION> <PROBLEM type="ecology"> Одной из самых острых проблем на сегодняшний день является загрязнение
Алтайского Государственного Заповедника несгоревшими
остатками ступеней ракет, запускаемых с
<AHREF="DOCUMENT5.XML#ID6"> Космодрома Байконур</A>. </PROBLEM>.... </TEXT> </DOCUMENT> ...

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

Мы не будем останавливаться на описании грамматики языка более подробно - сейчас существует достаточно богатый выбор посвященных этой теме ресурсов (большинство из них, правда, только на английском языке). Наиболее полную информацию, а также множество ссылок вы можете найти на серверах The WWW Consortium, XML.com, XMLINFO, OASIS. Известные автору русскоязычные материалы опубликованы на серверах CITforum и "Открытые системы".

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

В отличие от HTML, XML никак не определяет способ отображения и использования описываемых с его помощью элементов документа. Задав определение элемента Телецкое озеро, мы не включили информацию о том, как нужно отображать его содержимое. Этого требует принцип независимости определения внутренней структуры документа от способов представления информации. Поэтому на стороне клиента должна выполняться программа просмотра, осуществляющая необходимые действия по отображению нашего XML-документа. Если в качестве такой программы используется браузер, поддерживающий сценарии JavaScript и спецификацию DOM (Document Object Model - объектная модель документа), то для этих целей можно использовать XML-анализаторы в виде Java-апплета или COM-объекта, если речь идет о платформе Windows. Доступ к XML-ресурсам возможен из обычного JavaScript-сценария, включенного в HTML-страницу и генерирующего ее содержимое в соответствии с информацией, полученной из этого внешнего XML-документа. DOM в этом случае просто предоставляет универсальный интерфейс для доступа к внутренним объектам XML-документа, позволяя манипулировать его содержимым при помощи абстрактной объектной модели. На сегодняшний день единственным браузером, поддерживающий DOM-интерфейс для доступа к объектам XML-документа, является Microsoft Internet Explorer 5.

В IE 5 XML-данные могут включаться в страницу при помощи специального нового тега . Такие включения (называемые в спецификации от Microsoft областями данных - DSO) доступны для JavaScript- (или VBScript-) сценариев, так же как и любые другие объекты страницы - текст, изображения, формы и т. д. Вот пример небольшого сценария, использующего объектную модель документа в браузере IE 5:

<HTML id=EcologyArticles 
<SCRIPT ecology.xml? src="/printimages/307-308/printimages/307-308/"
<XML - документа XML внешнего Включение <!- <HEAD> function ViewDocument(Doc) { var header_str="Озера Горного Алтая:"; var result_str=" "; <!- Получение указателя на первый элемент документа -> var elem = Doc.documentElement.firstChild; while (elem != null){ result_str+= "<DIV style="COLOR: blue">"
+docobj.selectSingleNode("lake").text +"</DIV>"; <!- Последовательный перебор всех элементов
(а можно задать и способ сортировки) -> elem = elem.nextSibling; } <!- Вывод строчки на экран
(используются возможности DynamicHTML) -> List_of_lakes.innerHTML = header_str+result_str; } </SCRIPT> <!- Формируем строчку после загрузки всех элементов
документа, но перед их отображением-> <DIV id=List_of_lakes> <BODY ONLOAD="ViewDocument(EcologyArticles)">
<DIV ID=List_of_lakes> </BODY> </HTML>

Стильно!

Другим, более универсальном механизмом управления отображением XML-документов в ближайшем будущем должны стать расширяемые стилевые таблицы XSL (eXtensible Stylesheet Language).

Стилевыми таблицами (стилевыми листами) принято называть специальные инструкции, управляющие процессом отображения элемента в окне программы-клиента (например, в окне браузера) и включаемые либо в тело самого документа, либо передаваемые по сети отдельным файлом. Принцип обработки XML-документов стилевыми таблицами очень прост: при разборе XSL-документа программа-анализатор обрабатывает инструкции этого языка, в которых указываются названия XML-элементов, и отображает соответствующие элементы так, как указано в таблице. Если для показа основного текста приведенного выше XML-документа требуется использовать черный цвет шрифта, инициалов автора - красный, а для элемента Телецкое озеро - синий, то в XSL-таблицах можно задать следующие определения (подробное описание синтаксиса XSL в IE 5 можно найти на странице msdn.microsoft.com/xml/default.asp):

<?xml:namespace prefix = xsl />
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:template match="text()"> <xsl:value-of> <HTML> <xsl:for-each select="documents/document/"> <DIV style="COLOR: black"> <xsl:apply-templates select="author"></xsl:apply-templates> <xsl:apply-templates select="text"></xsl:apply-templates> </DIV> </xsl:template> <xsl:template match="author"> <SPAN class=author style="COLOR: red"> <xsl:apply-templates></xsl:apply-templates> </xsl:template> <xsl:template match="text"> <xsl:apply-templates select="lake"></xsl:apply-templates> </xsl:template> <xsl:template match="lake"> <SPAN style="COLOR: blue"> <xsl:value-of></xsl:value-of> </xsl:template> </xsl:template> </xsl:stylesheet>

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

При помощи инструкций XSL можно определить точное месторасположение элемента XML в дереве, поэтому существует возможность применять различные стили оформления к одинаковым элементам в зависимости от уровня вложенности и контекста их использования. Кроме того, при помощи XSL можно изменять объем передаваемой пользователю информации - просто не указывая названия "ненужных" элементов в описаниях таблиц. Более подробную информацию об использовании XML в продуктах Microsoft можно получить по адресу msdn.microsoft.com/xml/default.asp.

(Продолжение следует)

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.