Пришествие XML

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

Дальнейшее развитие спецификации HTML и разработка новых, расширенных, наборов тегов в попытке удовлетворить требованиям всех и каждого не могут решить проблему. Язык и так уже слишком засорен, борьба за совместимость отнимает у Web-мастеров до половины их рабочего времени. Поскольку текущее положение вещей также не может быть признано удовлетворительным, W3C (World Wide Web Consortium) предложила ввести в использование новый язык разметки документов - XML (Extensible Markup Language). Это даже не язык, а метаязык, предназначенный для создания новых, определенных пользователем, языков разметки.

Для того, чтобы яснее понять, что представляет собой новый язык (скорее всего, его практическое применение начнется через год-два), необходимо обратится к истории вопроса. До сих пор спецификации языков разметки писались при помощи метаязыка SGML (Standard Generalized Markup Language - стандартизированный обобщенный язык разметки). На нем написана не одна спецификация, включая все спецификации HTML. Фактически, он является промышленным стандартом в своей области, подобно, например, тому, как SQL является стандартом в области баз данных. Так как XML является прямым потомком SGML, обсудим свойства родителя подробнее.

SGML предназначен для создания DTD (document type description, описание типа документов). Пример такого описания - спецификация HTML. Она определяет конкретный тип документа - документ для представления информации в Интернете. Описание DTD не определяет, как конкретно будут выглядеть документы HTML, скорее, оно описывает их возможную структуру. Это можно себе представить примерно так.

Документ HTML состоит из двух частей - заголовка (тег <HEAD>) и тела (теги <BODY> или <FRAMESET>). Внутри тега <HEAD> могут встречаться теги <TITLE>, <META> и т.п. Таким образом дается описание всех возможных видов документов в виде иерархии.

 

Само собой, SGML не использует словесные описания. Вместо них используются формализованные регулярные выражения. С последними ближе должны быть знакомы те, кто работал в UNIX и столкнулся с awk или perl. Для тех же, кто не представляет себе, что это такое, приведем простой пример - описание тега <DL> из спецификации HTML.

<!ELEMENT DL - - (DT*,DD?)+>

Для того, чтобы разобраться в этой записи, определим смысл символов "?", "+" и "*". Символ "+" означает одно или более вхождение помеченной им конструкции, "*" - ни одного или более вхождений, "?" - одно или ни одного вхождения. Итак, ключевое слово ELEMENT определяет новый элемент спецификации - DL. За ним следует описание того, что может входить в данный тег. (DT*,DD?)+ обозначает, что конструкция в скобках должна появиться в теле DL не менее одного раза. Выражение же внутри скобок обозначает некоторое количество тегов <DT>, за которыми может следовать (но не обязательно) ровно один тег <DD>. Именно таким образом и специфицируются все теги HTML в SGML-описании языка. Тем из вас, кто знаком с теорией компиляторов, это должно что-то напомнить...

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

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

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

Первые серьезные браузеры с поддержкой XML должны вот-вот появиться. Это будут Netscape и Explorer пятых версий. Сразу после их выхода начнется постепенное внедрение нового языка. Означает ли это, что HTML будет отмирать? Скорее всего, нет. Во-первых, Интернет чрезвычайно консервативен, поэтому серьезного проникновения XML в Сеть следует ожидать не ранее, чем через лет пять. Во-вторых, XML - это, скорее, для избранных. Далеко не всем придется по вкусу процесс создания собственной DTD - он очень трудоемок и кропотлив. Другой вопрос, что появляется возможность использовать другие уже готовые DTD (а их существует множество, например, математические DTD для описания формул), кроме HTML. Однако многим, как и сегодня, будет достаточно простого HTML.

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

Денис МАРГОЛИН,
pb8266@belsonet.net,
kulichki.rambler.ru/poems/

Версия для печатиВерсия для печати

Номер: 

05 за 1999 год

Рубрика: 

Internet
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!