Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
История XML Печать

Как зарождался 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.

XML сегодня

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

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

Январь 2000 г. Выход языка XHTML 1.0, представляющего семантику последней версии HTML 4.01 в виде XML-файлов.

Май 2001 г. Опубликована версия XHTML 1.1, реализующая модульный подход к созданию XHTML-файлов, что позволило анализировать эти файлы одинаковыми способами в разных операционных системах (в 2003 г. появилась версия XHTML 2.0, определяющая синтаксис HTML с помощью трех DTD-документов).

В этом же месяце усилиями WWW-консорциума увидела свет концепция XML Schema, которую в свое время предложила Microsoft, чтобы, видимо, полностью избавиться от наследия SGML. Концепция предназначалась для борьбы с главным недостатком XML – отсутствием в XML-документе жесткой привязки к определению типа документа DTD, ключевой концепции SGML. В XML возможность указания DTD-документа входила, но была необязательной, что нередко лишало XML-документы смысла, так как без определения значений тегов и их взаимосвязи такие документы нельзя было корректно интерпретировать.

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

В то же время создалось впечатление, что Microsoft предложила схемы с целью внести раскол в сообщество XML-разработчиков и вновь перетянуть одеяло XML на себя. Корпорация выпустила свой вариант XML Schema еще до официального одобрения этой концепции консорциумом WWW, а затем ее примеру последовали другие производители. Кроме того, с появлением XML Schema возникла потребность в технологиях преобразования XML-данных с одной схемой в эти же XML-данные, представленные с помощью другой схемы. В результате был предложен универсальный формат Web-данных RDF, упростивший этот процесс. Но массового распространения он пока не получил .

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

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

Технология XPointer ввела в XML средства формирования указателей на объекты любых типов и любые их части (не только элементы текста).

Август 2001 г. Вышел язык SMIL 2.0, ориентированный на поддержку XML-документов в мобильных телефонах с доступом в Интернет.

Сентябрь 2001 г. Опубликовано описание языка SVG 1.0 – средства независимого представления векторной графики в Сети на основе XML (в нынешнем году появилась версия SVG 1.2, дополненная средствами качественного рендеринга, динамического формирования графических образов, поддержкой графики в разных форматах и т. д.).

Февраль 2002 г. Технология XML-Signature определила принципы использования электронной подписи XML-документов.

Текущий год богат на новые и обновленные XML-приложения и технологии. В феврале была наконец опубликована предварительная рекомендация стандарта XML 1.1. Потребность в совершенствовании XML возникла прежде всего в связи с развитием кодировки Unicode и новыми возможностями Unicode 2.0. Стало допустимым использовать произвольные кодировки символов в названиях элементов, удалось уйти от проблем с представлением символов перевода строки в разных операционных системах. Отметим, что WWW-консорциум разработал свою кодировку UCS (Universal Character Set), основанную на стандартах Unicode Standard и ISO/IEC 10646, и рекомендовал применять ее при построении всех текстовых материалов в Сети.

Были выпущены описания языка подготовки Web-форм XForms 1.0 , в котором разделены способы представления внешнего вида форм и их содержания, а также языка EMMA, задающего способы взаимодействия между человеком и программами в Сети. Этот язык определяет, как использовать XML для интерпретации информации, получаемой от пользователя не только через обычный графический интерфейс, но и в виде речевых сигналов, жестов, рукописного текста и пр.

Важной вехой в развитии СУБД стал документ по универсальному языку запросов к базам данных XML Query 1.0, синтаксически напоминающему SQL и Бейсик. XML Query позволяет готовить сложные запросы не только к реляционным данным, но и к информации, организованной иерархически и другими способами (при условии, что она хранится в XML-формате или ее можно просматривать в XML-представлении).

Консорциум OASIS, выросший, как уже говорилось, из группы SGML Open, специализируется на разработке открытых стандартов э-бизнеса, действуя при этом в тесной связке с WWW-коллегами. Среди его последних материалов – язык XLIFF для разметки и форматирования данных с учетом региональных стандартов и графическая нотация моделирования бизнес процессов BPMN 1.0, ориентированная на технических и бизнес-специалистов.

Среди готовящихся к выпуску спецификаций XML-приложений такие, например, как язык описания трехмерных интерактивных миров X3D, призванный заменить язык виртуальной реальности VRML, и вторая версия языка представления математических выражений MathML, позволяющая описывать с помощью набора ANSI-символов внешний вид математических формул и их смысл.

Интересно, что в сентябре Тим Бернерс-Ли, директор WWW-консорциума, выдвинул идею коммерческого лицензирования ряда ISO-кодировок, задающих коды национальных языков, стран и валют. К чему приведет подобная инициатива, пока сказать сложно.

Недостатки XML

XML, безусловно, не лишен недостатков. Он весьма сложен в сравнении с HTML, что предъявляет повышенные требования к функциональным возможностям XML-клиентов. В XML отсутствуют средства описания способов отображения информации на экране – для этого необходимы таблицы стилей XSL и XSL-интерпретатор. Поскольку смысл тегов XML-документа в отличие от тегов HTML не определен, совместно с XSL-описаниями приходится создавать и поставлять сценарии на сценарных языках типа JavaScript.

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

Из других мелких недочетов XML можно отметить невозможность поддержки одиночных тегов (не требующих закрывающего тега). Но такие одиночные теги активно применяются в HTML, например, для разделения абзацев и параграфов. Тем не менее каких-то серьезных недоработок в XML не выявлено, что подтверждает готовящийся стандарт XML 1.1, в котором будут преимущественно косметические изменения.

XML в будущем

Главное назначение XML, используемого прежде всего для создания новых языков разметки типа HTML, – интеграция существующих стандартов хранения и представления данных и упрощение процессов обмена информацией. Этот язык в отличие от HTML ориентирован не на форматирование, а на данные. Он позволил разработчикам самостоятельно определять используемые в документе теги и порядок их применения, задавая тем самым структуру и значение конкретных данных. Смысл тегов можно формулировать программно – в серверных компонентах или на клиентской стороне с помощью Java и языков сценариев. XML упрощает подходы к хранению данных произвольной организации и произвольного формата, причем независимо от платформы и ПО, а также делает возможным проверки корректности как самих данных, так и способов их организации и взаимосвязи и, что важно, целостности всего документа. Эти три отличия – создание оригинальных тегов, поддержка произвольных структур данных, обеспечение проверки корректности документа (описание грамматики) – и сделали XML столь популярной технологией.

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

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

В подобной роли посредника XML прекрасно подходит для любых задач, в которых востребована независимость от конкретных программных продуктов. Независимости от СУБД можно легко добиться представлением запросов к ним на языке XML Query. Это важно, в частности, для проектов, где клиентское приложение должно обращаться к нескольким СУБД разных производителей.

XML не связан с типом хранимых данных, поэтому он получил широкое распространение в областях, где ранее не существовало универсального способа отображения и обмена специфической информацией. В научной сфере известно немало XML-приложений (например, языки записи химических и математических формул Chemical Markup Language и MathML).

Незаменим XML для Web-проектов. Он позволяет передавать с сервера по запросу клиента целостные копии Web-страниц со всеми входящими в них элементами, точными настройками шрифтов, проверенными взаимосвязями и сохраненными гиперссылками. С его помощью можно по-разному представлять одни и те же данные у разных пользователей (в зависимости от типов браузеров) и настраивать формы представления информации. XML задумывался и как своеобразная замена HTML (в силу чего появился язык XHTML), поэтому в его поддержку был предложен язык XSL – по аналогии с таблицами стилей CSS для HTML, только с гораздо большими возможностями. XSL упрощает способы представления XML-документов на экранах различных программ и устройств – от домашних компьютеров до интеллектуальных телефонов и диагностического оборудования.

Вместо XSL в принципе можно было взять уже готовую технологию DSSSL, которая доказала эффективность в SGML-приложениях и допускала интерпретацию неограниченного числа тегов, тонкую настройку стилей под особенности документа, работу с ним как с деревом, возможность воспроизведения текста в любых направлениях (справа налево и сверху вниз), а также создание эффектов плавающих зон, вращения текста и др. Однако влияние компаний-монополистов, не заинтересованных в независимых стандартах, сказалось и здесь. Вместо DSSSL был придуман собственный вариант стилевых таблиц.

Особую роль XML играет в продуктах Microsoft. Так, импорт и экспорт данных в электронной таблице Excel 2002 и настольной СУБД Access 2002 теперь допустим в формате XML. А в платформе Microsoft .NET эта технология стала ключевой и стратегической – на ней основываются концепция распределенной модели данных и механизмы передачи информации. Одним из таких механизмов стал высокоуровневый протокол SOAP, который позволяет использовать формат XML для описания пакетов и упрощает взаимодействие сетевых приложений, написанных для разных архитектур (например, DCOM и CORBA).

В будущем же, считают такие эксперты, как Симон Фипс, руководивший XML-направлением в IBM, на основе XML будет создана мировая БД из ныне существующего хаотического набора Web-страниц Сети, а систематизацией такой базы займутся интеллектуальные программные агенты. При этом на основе XML будут разворачиваться службы UDDI, предназначенные для быстрого и легкого поиска партнеров по бизнесу. С помощью UDDI можно точно описать свой бизнес и предлагаемые услуги, найти поставщиков нужных услуг и объединить свою деятельность с деятельностью коллег. А процесс обмена сообщениями и организации такого взаимодействия в упорядоченной XML-инфраструктуре доступен уже сегодня в рамках концепции электронного бизнеса ebXML, развиваемой консорциумом OASIS.