*1
ОБЗОР
Расширяемый язык XML
_____
*1 Продолжение. Начало см. PC Week/RE, N 37/2003, c. 33 и N 38/2003, c. 32.
Как зарождался XML
1995 г. стал одним из наиболее памятных в истории Всемирной Сети. Появился десятимиллионный сайт и десятитысячная новостная группа, а ежедневное число сообщений в этих группах достигло 250 тыс. Заработали поисковые механизмы Yahoo и Lycos, к декабрю поисковая машина Altavista компании DEC проиндексировала 15 млн. страниц Интернета. Компании Sun удалось отладить первый Java-аплет, работавший без переделки и перекомпиляции на разных компьютерных платформах, а стремительный взлет акций Netscape вместе с ее одноименным браузером поразил дельцов Уолл-стрита. Начинался звездный час дотнет-фирм.
На этом фоне стали ясны недостатки существующих сетевых технологий, ограничивавшие текущие и потенциальные возможности разработчиков. За решение узких проблем Сети взялись лучшие инженерные умы, благо множество богатейших компаний занялось инвестированием Интернет-проектов. Немало нареканий, в частности, вызывал набиравший популярность HTML, хотя в том же знаменательном 1995-м вышла вторая версия спецификации HTML 2.0. В ней появились новые теги, позволившие, к примеру, центрировать текст в окне и задавать размеры используемых шрифтов. Были улучшены и старые теги, предназначенные для создания списков, разделительных полос и отображения графических элементов.
Однако HTML не мог удовлетворить нужды зарождавшегося электронного бизнеса, перспективы которого выглядели крайне заманчиво. Ведь предназначался он прежде всего для презентационных целей и позволял более-менее красиво форматировать Web-странички с помощью фиксированного набора тегов - но не более того. При этом разработчик мог перемешивать теги в документе в произвольном порядке, и никаких средств проверки корректности их записи и соответствия в HTML не существовало.
Между тем разработчики сетевых приложений нуждались не только в средствах описания внешнего вида данных, но и в механизмах определения смысла различных частей сетевых документов (организованных как линейно, так и иерархически). Возможность создания тегов для собственных нужд - да еще с учетом специфики конкретной деятельности - казалась весьма полезной. Кроме того, интерпретация HTML-текстов выполнялась браузерами целиком на компьютерах пользователей, что не позволяло задействовать мощь серверных технологий. А было бы очень удобно создавать содержимое Web-страниц динамически, например, вставляя в них информацию из БД, расположенных на сервере. Технология Java получила к тому времени некоторое развитие, но фиксированный набор тегов HTML ограничивал и ее возможности, не позволяя гибко генерировать содержимое Web-страницы.
Актуальной выглядела задача стыковки и автоматического обмена данными, хранимыми в самых разных форматах. Это означало, что с помощью некоторого промежуточного универсального и гибкого формата нужно описывать представление структур данных, для чего в рамках SGML, как уже говорилось в предыдущем обзоре, была придумана технология DTD для описания пользовательских тегов и их предназначения в документах.
Консорциум W3C одно время настоятельно рекомендовал создателям браузеров реализовывать поддержку языка SGML, но на его членов оказывалось все возрастающее давление со стороны как ведущих компьютерных корпораций, так и независимых сообществ разработчиков, не желавших прикладывать усилия к изучению и сопровождению этого языка и утверждавших, что SGML слишком сложен (не сложнее, впрочем, любого языка программирования). Одной из неформальных причин, по которой W3C все же отказался от продвижения SGML, можно считать влияние Microsoft. Так как исторически SGML зародился в IBM, специалисты Microsoft полностью игнорировали это творение одного из основных своих конкурентов. Кроме того, SGML был стандартизован ISO, а корпорация Билла Гейтса всегда недолюбливала стандарты, предложенные другими. Достаточно вспомнить историю с технологией TCP/IP, которая появилась в Windows только после того, как ее поддержка была реализована многими сторонними фирмами. Сказывалось и желание Microsoft приватизировать очередную новую перспективную технологию. Наконец пришла пора и SGML. Потребность в этом языке или его аналоге была очевидной, и в дальнейшем Microsoft сделала данную технологию одной из ключевых в своих продуктах.
По этой и другим причинам консорциум в конце концов признал необходимость выработки ограниченного варианта SGML и выделил средства на деятельность рабочей группы, в которую вошло несколько экспертов по SGML. Они собрались вместе в августе 1996 г. в Сиэтле, куда их пригласила Ассоциация графических коммуникаций GCA, и выявили, во-первых, все классы программных задач, плохо решаемых с помощью HTML, а вовторых, определили направления модификации SGML с целью эффективного представления структурированной информации в Сети.
Группу (она получила название SGML Editorial Review Board) возглавил Джон Боусек, ранее работавший ведущим инженером в корпорации Sun, а также управлявший в рамках W3C небольшой исследовательской командой SGML-специалистов. Джон уже имел богатый опыт организации систем онлайновой обработки данных, поскольку в Sun он занимался проектом распределенного представления документации AnswerBook2 по операционной системе Solaris (документацию можно увидеть на сайте docs.sun.com). Показательно, что HTML в AnswerBook2 вообще не используется, а Web-страницы генерируются из базы с SGML-данными. До этого Боусек перенес в Сеть в виде SGML-данных документацию по системе NetWare компании Novell. Проект продолжался с 1990 по 1994 гг. и охватил 150 тыс. страниц технических сведений.
Боусек также известен как автор спецификации DocBook - представления электронной документации по Unix и Linux. Он участвовал в разработке стандарта DSSSL ISO/IEC 11079 (таблиц стилей SGML, на основе которых затем появился язык XSL - таблицы стилей для XML) и придумал его онлайновый вариант, известный как dsssl-o. В дальнейшем этот человек стал одним из основателей консорциума OASIS, выросшего из группы SGML Open, а сегодня он - традиционный председатель ежегодной конференции XML Developers, постоянный участник различных комитетов W3C и большинства мероприятий, посвященных XML.
Приступив к интенсивной работе, группа определила важнейшие критерии, которым должно было отвечать их детище. От будущего варианта XML требовалась пригодность к решению прикладных Интернет-задач, поддержка самых разных типов приложений, совместимость с SGML, удобство программной обработки, отсутствие неоднозначных особенностей эксплуатации (чтобы не возникали диалекты языка), понятность и простота для пользователя, легкость проектирования и подготовки данных в XML-формате, возможность краткого и формального представления грамматики языка и максимальная компактность.
Уже 14 ноября на бостонской конференции SGML-96 группа представила предварительный вариант нового языка на 32-х страницах (спецификация SGML занимает 500 страниц). Рабочий вариант, в котором было учтено множество деталей, пожеланий и нюансов, авторы закончили в августе 1997 г. В частности, на WWW Conference, которая прошла в апреле 1997 г. в Санта-Кларе, был определен механизм организации гиперссылок в XML, для чего группа придумала язык XLL (Extensible Link Language). На этой же конференции Microsoft совместно с фирмой Marimba внесла на рассмотрение W3C первое XML-приложение - технологию OSD (Open Software Description), позволяющую описывать программные компоненты (версии, поддерживаемые платформы, способы связи с другими компонентами).
На вашингтонской конференции SGML-97 (8 декабря) была анонсирована окончательная версия XML 1.0, которая вышла 10 февраля 1998 г. в виде рекомендации W3C. Интересно, что по поводу названия нового языка мнения членов группы разделились, а окончательное решение было принято только перед выходом самой рекомендации. Название "Extensible Markup Language" предложил Джеймс Кларк, известный специалист по SGML/DSSSL, однако в результате опечатки заглавной оказалась вторая буква и язык был записан в документах как eXtensible Markup Language. Такой вариант Кларку очень понравился, и поэтому вместо аббревиатуры EML мы сегодня пользуемся аббревиатурой XML.
Но это название было не единственным. В ходе февральского голосования обсуждались другие варианты, и XML победил с преимуществом в один голос. Его поддержали пять членов группы, четверо высказались за MAGMA (Minimal Architecture for Generalized Markup Applications), трое - за SLIM (Structured Language for Internet Markup), а одному специалисту понравился MGML (Minimal Generalized Markup Language).
В версии XML 1.0 были учтены требования стандартов Unicode (UTF-8 и UTF-16) и ISO/IEC 10646 к формату и кодировке символов; Internet RFC 1766 к тегам идентификации национальных языков; ISO 639 к кодам названий национальных языков; ISO 3166 к кодировке названий стран. Тогда же официально заработала группа W3C XML Working Group по сопровождению XML. Был также выпущен свободно распространяемый XML-разборщик - важнейший элемент приложений, обрабатывающих XML-данные. С помощью подобных разборщиков программисты могут работать с XML-данными как с иерархически организованным документом - не тратя усилия на самостоятельное выделение и анализ отдельных тегов, а сразу получая доступ к его структуре, представленной в виде дерева (узлы-родители и узлы-потомки). По официальной версии W3C, первым браузером, поддерживающим XML 1.0, стал Microsoft Internet Explorer 5.0.
Окончание следует