История языков разметки
Сергей Бобровский
Все началось с папирусов
Много тысяч лет назад лучшие умы человечества неоднократно задумывались над возможностью организации альтернативных, нелинейных способов представления текстов. Конечно, художественные книги, где сюжет развивается последовательно, от начала к концу, и читать сподручнее таким же способом. Но вот различные документальные тексты, справочные материалы, исторические труды и словари, с которыми удобнее работать, быстро перемещаясь от одного интересного понятия к другому, гораздо проще представлять в электронном виде, дополненном средствами поиска нужной информации. А Всемирная Сеть вообще немыслима без браузеров, позволяющих следовать от одного документа к другому щелчками мыши. Практически все современные комфортные системы компьютерной навигации основаны на концепции гипертекста, дающего пользователю возможность быстро переходить между связанными по смыслу частями одного или нескольких документов.
История ссылок в материалах восходит к папирусам и глиняным табличкам (3000 лет до н. э.), на которых были обнаружены перекрестные указания на другие работы. А в Александрийской библиотеке подготовкой аннотаций и ссылок занимались уже целенаправленно (300 лет до н. э.). Первые же системы, напоминавшие современный гипертекст, возникли в начале второго тысячелетия н. э. Они представляли собой всевозможные наборы пометок в печатных изданиях Библии, отсылающих человека к схожим по тематике разделам. Для этого, в частности, была детально продумана система адресации внутри священных текстов: каждая из книг Библии делится на главы, главы — на стихи, а стихи состоят из отдельных фраз. Подобный подход значительно облегчал подготовку подробных цитат и комментариев. Первым таким проектом стал, пожалуй, знаменитый “Декрет” Грациана 1140 г., в котором было систематизировано около 4000 текстов католической Библии и который положил начало новой богословской дисциплине — канонистике.
История современного гипертекста начинается с июля 1945 г. Доктор Ванневар Буш, научный советник президента США Рузвельта, упомянул в своей статье “As We May Think” идею машины Memex. Она предназначалась для хранения различных видов научных материалов (в частности, на микрофишах), причем любые разделы каждого материала можно было связывать с любыми разделами других. Правда, сама машина так и не была реализована. Но автор описал в статье замысел сети связанных между собой информационных элементов, по которой можно было бы путешествовать, а также расширять ее добавлением своих материалов.
Идея получила развитие спустя 15 лет. Нью-йоркский издатель Стэнли Райс решил разработать универсальный гипертекстовый каталог, хранящий описания книг, а Норман Шарф, директор Ассоциации графических коммуникаций (Graphic Communications Associations, GCA), его поддержал. Ассоциация запустила проект GenCode, в рамках которого придумывались способы формального описания независимых друг от друга структуры и способа представления иерархически организованных документов. Результаты этого проекта появились только через 10 лет.
Легендарные "отцы гипертекста" Тед Нельсон (слева) и Даг Энгельбарт
В 1963 г. легендарный компьютерный деятель Дуглас Энгельбарт, впоследствии изобретший манипулятор-мышь, а тогда возглавлявший центр развития человеческих способностей в Стэнфордском исследовательском институте, изучал возможность создания обучающей системы HLAM/T (Human using Language, Artifacts, and Methodology, in which he is Trained). Он выдвинул идею интерактивного взаимодействия человека и машины, но реализовать ее на практике пока не сумел — существовавшие компьютеры способны были принимать данные только в виде наборов заранее подготовленных перфокарт.
Параллельно с Энгельбартом, хотя и независимо от него, бакалавр философии Теодор Холм Нельсон из Гарвардского университета увлекся идеей программы подготовки текстов, которая позволяла бы пересматривать сделанную работу, сравнивать различные элементы материала и отменять внесенные изменения. Нельсон назвал ее Xanadu. Он первым в мире предложил термины hypertext и hypermedia в 1965 г. на конференции Ассоциации компьютерной машинерии (Association of Computing Machinery, ACM). “Гипертекст, — заявил Теодор, — означает непоследовательное письмо, текст, который ветвится и предоставляет читателю выбор наилучшего варианта чтения на интерактивном экране”. Тогда же появился первый вариант Xanadu, представлявший собой редактор текста для мэйнфреймов, написанный на ассемблере.
Нельсон мечтал о грандиозных перспективах, которые должен был открыть Xanadu. Он задумал перевести всю мировую литературу в электронный вид, а затем продавать тексты побайтно, с тем, чтобы пользователь такой библиотеки мог заказывать нужный материал целиком или любыми частями. С этой целью в Xanadu закладывались передовые алгоритмы, позволявшие перемещаться из того или иного документа к любой подстроке другого, а также хранить все версии материалов, чтобы не возникало ошибок — прообразов часто встречаемой сегодня в Интернете ошибки отсутствия нужного документа (404-Document Not Found). Забегая вперед, отметим, что эта идея, к сожалению, оказалась для своего времени слишком передовой. После 30 лет развития проекта Нельсон уехал в Японию, где преподавал в университете Keio.
Зарождение гипертекста
Первым полноценным гипертекстовым приложением стала система Hypertext Editing System для мэйнфреймов IBM/360, которую в 1967 г. совместно с Теодором Нельсоном закончил Эндрис Ван Дам, возглавлявший в Браунском университете исследовательский коллектив, работающий при финансовой поддержке IBM. В ходе проекта Ван Дам выдвинул идею обратного возврата по ссылке (обязательная кнопка Back в любом современном браузере). В дальнейшем Hypertext Editing System была продана Хьюстонскому космическому центру и использовалась при подготовке документации для проекта Apollo.
Год спустя Ван Дам создал первую коммерческую гипертекстовую систему FRESS (File Retrieval and Editing System) для 16-разрядного компьютера DPD-8 с графическим модулем IMLAC, применявшегося в качестве интеллектуального терминала. Она эксплуатировалась компанией Philips на протяжении 20 лет.
К тому времени появились практические результаты деятельности Дугласа Энгельбарта. Он продемонстрировал на конференции Fall Joint Computer Conference систему NLS (oN Line System), способную обрабатывать сотни тысяч документов (она существует и по сей день в виде коммерческого продукта Augment). В процессе ее создания Энгельбарт предложил идеи систем поддержки коллективной работы в масштабе реального времени, телеконференций, электронной почты, онлайновых подсказок и многооконного интерфейса.
В 1969 г. сотрудник IBM Чарльз Голдфарб возглавил проектирование компьютерной системы обслуживания юридических контор. Под его руководством был создан первый язык разметки документов Generalized Markup Language (GML), в котором была реализована концепция типа документа (формально определенного шаблона, описывающего схему внутреннего построения схожих документов) и вложенных друг в друга структур. GML не зависел ни от марки компьютеров, ни от операционной системы, и IBM удалось перевести 90% своей документации в этот формат.
К 1970 г. завершился проект GenCode Ассоциации GCA. Стало ясно, что для разных задач будут требоваться разные способы описания документов (говоря современным языком, не удалось обойтись ограниченным набором тегов разметки текста), поэтому возникла потребность в расширяемой метасхеме такого описания. А чтобы можно было включать одни документы в другие, авторы проекта решили ориентироваться на гипертекстовый способ организации данных. Основа для реализации этих требований в виде GML уже существовала, но трудно было остановиться на конкретном технологическом решении: слишком расплывчато выглядели перспективы гипертекста из-за отсутствия на рынке персональных компьютеров.
Через два года Дональд Мак-Кракен и Роберт Акскин, сотрудники Университета Карнеги — Меллона, запрограммировали первую гипермедиа-систему ZOG, представлявшую собой базу из так называемых кадров — информационных элементов, связанных с ними описаний их структуры и набора меню для перехода к другим кадрам. Сначала ZOG работала только на текстовых терминалах IBM, но вскоре была перенесена на сеть из 28 графических рабочих станций PERQ ядерного авианосца Carl Vinson. В дальнейшем ZOG переросла в систему управления знаниями Knowledge Management System с графическим интерфейсом для компьютеров Sun и HP Apollo.
Идею гипермедиа в 1974 г. расширил автор термина “гипертекст” Теодор Нельсон. Он предложил понятие гиперграммы (оно, впрочем, не прижилось), с помощью которого можно было организовывать взаимосвязанную сеть спрайтовых картинок и даже создавать фильмы с меняющимся по требованию пользователя сюжетом. Эту идею воплотила в 1978 г. в системе Aspen Movie Map группа ученых Массачусетского технологического института во главе с Андреем Липпманом. Система предлагала виртуальное путешествие по Аспену (шт. Колорадо). Машина киногруппы предварительно объехала весь город, засняв всевозможные места под разными углами с помощью четырех камер, а затем фотографии были оцифрованы и заложены в Aspen. Пользователям было доступно не только множество навигационных средств, но и глобальная карта для быстрого переключения к нужной точке города.
К 1978 г. комитет по обработке информации Американского национального института стандартов (ANSI) всерьез заинтересовался языками подготовки гипертекстовых данных. Чарльз Голдфарб стал в этом комитете руководителем нового направления, связанного с формированием стандарта на мощный язык разметки документов, который получил название SGML (Standard General Markup Language). В его основу был заложен GML. Первый рабочий вариант спецификации появился в 1980 г. А в 1983-м Ассоциация GCA приняла шестую рабочую версию SGML в качестве промышленного стандарта (GCA 101-1983), поддержанного Министерством обороны и Налоговым управлением США. Спустя два года сформировалась международная группа пользователей SGML. Начался расцвет гипертекстовых технологий.
В том же 1983-м увидела свет очередная прикладная гипертекстовая система Symbolics Document Examiner, созданная под руководством Джанет Уолкер. С помощью этой системы удалось перенести в электронный вид 8 тыс. страниц печатной документации к компьютерам Symbolics. Интересно, что в ней впервые была реализована концепция пользовательских закладок. А написанная на Лиспе программа NoteCards для ведения заметок с применением перекрестных ссылок, разработанная компанией Xerox, порадовала прокручиваемыми окнами, возможностью работы с единой системой форматирования для всех заметок, а также многооконной системой, где просмотрщику заметок (прообразу будущих браузеров) отводилось собственное окно.
В 1986 г. Международная организация по стандартизации ISO одобрила стандарт SGML ISO-8879. Основанный на языке GML, он позволил отказаться от конкретных способов представления информации и сосредоточить усилия на продумывании структуры документов с помощью правил определения собственных тегов форматирования, их атрибутов и синтаксиса использования. Для создания конкретных прикладных наборов тегов было введено понятие “SGML-приложение”. Так, популярный сегодня язык разметки гипертекста HTML является SGML-приложением.
SGML оказался очень мощным и универсальным. Он требовал точного описания всех нюансов создаваемого синтаксиса документа и подробных правил формирования тегов. В рамках SGML была изобретена концепция DTD (Document Type Definition) — определение типа документа. Она позволила связать конкретные синтаксические правила разбора с заданными способами организации структуры документов, после чего многие компании приступили к активной разработке программ анализа SGML-текстов.
Следующий год вошел в компьютерную историю первой международной конференцией по гипертексту Hypertext?87 и выходом гипертекстовой системы Hypercard для широкого круга пользователей. Ее автором был Билл Аткинсон, сотрудник Apple Computers, разработчик первого графического редактора MacPaint. Он начал создавать Hypercard для собственных нужд, чтобы отслеживать появление своих статей в прессе. Затем Аткинсона заинтересовали алгоритмы эффективного поиска и упаковки данных, и он решил реализовать новые замыслы в общедоступном пакете. Этот фанатичный программист, любимым языком которого был ассемблер, поднимался ежедневно в четыре утра и ухитрился перенести каталог из ста тысяч книжных карт библиотеки Лос-Гейтос в формат Hypercard, в результате чего поиск в Hypercard по запросу к 15-мегабайтной БД сократился с 10 мин до 2 с.
Эта система быстро завоевала популярность у пользователей Apple и устанавливалась на каждый компьютер Mac.
Судьба же системы Xanadu Теодора Нельсона оказалась менее удачной. В 1988 г. компания Autodesk купила основанную им фирму Xanadu Operating, но потеряла интерес к проекту и закрыла его через пять лет.
1989 г. известен появлением идеи Всемирной Сети. Она была предложена (а реализована через два года) Тимом Бернсом Ли, программистом Европейского центра ядерных исследований CERN, расположенного в Женеве. Тогда же он создал и новое SGML-приложение, известное сегодня как язык разметки HTML. А сам SGML расширился стандартизованной ISO таблицей стилей DSSSL (ISO 10179), позволившей дополнять описания структуры SGML-документа независимыми от платформы способами его представления на экране. Через год Бернс Ли написал на Objective-C первый браузер для компьютера NeXT. Браузер включал в себя также первый редактор HTML-документов. А в декабре 1990-го в СССР при Министерстве связи был открыт Научно-технический центр гиперинформационных технологий, известный как ГНТЦ “Гинтех”.
Популярность Сети росла. На следующий год Роберт Каилау, коллега Бернса Ли, сделал браузер Samba для Мака. В Ленинградском электротехническом институте появилась первая версия пакета “ГиперМетод” для DOS одноименной фирмы (которая, кстати, на основе своих разработок устроила к 300-летнему юбилею Санкт-Петербурга живую Интернет-трансляцию с художественной подсветкой самой высокой в городе 310-метровой телевизионной башни).
В 1992 г. Том Брюс распространил первый браузер Cello для компьютеров класса IBM PC, после чего множество компаний начали выпускать собственные Интернет-навигаторы. Это привело к массовой нестыковке, потому что каждый производитель браузеров старался дополнить тогда еще крайне ограниченный HTML своим набором тегов.
В феврале 1993 г. в Национальном центре суперкомпьютерных приложений США под руководством Марка Андриссена был создан браузер Mosaic для Unix, знаменитый первым графическим интерфейсом среди себе подобных. Летом Марк подготовил версии для Мака и Windows. А на следующий год группа разработчиков Mosaic, возглавляемая Джеймсом Кларком, создала собственную корпорацию Netscape Communications (которая вскоре потрясла Уолл-стрит самыми быстрыми в мире темпами роста) и затем выпустила коммерческий браузер Netscape. Современное название Netscape Navigator 2.0 он получил со второй версии, когда в действовавший стандарт HTML эта корпорация добавила множество новых тегов.
Ведущие информационные корпорации, недовольные неразберихой тегов HTML, сформировали в декабре 1994 г. консорциум WWW (W3C), быстро взявший под свой контроль работу практически над всеми стандартами важнейших технологий Сети. Надо отметить, что формально W3C выпускает только рекомендации и некоторые компании их игнорируют, но в целом рекомендации W3C признаются всем рынком в качестве стандартов.
Тем временем была утверждена версия HTML 2.0 — такую ответственность взяла на себя Международная комиссия по стандартам в Интернете (Internet Engineering Task Force), разрабатывавшая сетевые протоколы. Но HTML 2.0 все же оставался SGML-приложением, ориентированным не на более востребованные в практических Web-проектах задачи форматирования текста, а на построение структуры документа.
В феврале 1996 г. Билл Гейтс провозгласил: “HTML стал нашим типом данных”. Это было объявлением войны новому конкуренту Netscape. Интересно, что всего пару лет назад эксперты Microsoft предлагали руководству обратить серьезное внимание на Интернет, но тогда амбициозные менеджеры корпорации их не послушали. Теперь пришла пора наверстывать упущенное. Впрочем, ошибки допустили и конкуренты Microsoft. Джеймс Кларк не догадался выкупить исключительные права на браузер Mosaic, и его исходные тексты через фирму Spyglass приобрела Microsoft. В результате появившиеся летом обновленные браузеры Netscape Navigator 3.0 и Internet Explorer 3.0 оказались основанными на одном ядре, причем в последнем пакете была реализована поддержка всех тегов конкурента. С этого момента чаша весов стала неуклонно склоняться в его пользу. Вдобавок Microsoft решила распространять Internet Explorer бесплатно, и рыночная доля Netscape Navigator стремительно пошла вниз.
Между тем Дэйв Рэггетт, специалист W3C, трудился над третьей версией HTML 3.0 (известной также как HTML+). Эта спецификация из-за конкуренции между производителями Web-приложений, оказывавших давление на W3C, так и не была закончена, а консорциум сосредоточил усилия не на технологической, а на политической стороне вопроса, стараясь примирить враждовавших разработчиков браузеров. В результате была достигнута договоренность о выпуске в январе 1997-го стандарта HTML 3.2, объединившего наборы тегов, поддерживаемые и Netscape Navigator, и Internet Explorer. На скорейшем выходе HTML 3.2 настаивали также IBM, Novell и Sun.
Не выдержав давления софтверной империи Билла Гейтса, Netscape стала допускать новые ошибки. Все еще веря в собственное влияние на рынок, она не отнеслась с должным вниманием к новой технологии Cascading Style Sheets (CSS, аналог таблиц стилей DSSSL, только для HTML), реализовав ее поддержку в виде не очень удобной технологии JASS (JavaScript Accessible Style Sheets), требовавшей знания программирования. Microsoft же наоборот выделила возможность создания сценариев в HTML-документах, предложив пользователям сразу два скрипт-языка — JScript и VBScript. Эта корпорация также начала финансировать подразделение W3C, ответственное за разработку новых рекомендаций HTML, фактически взяв под свой контроль процесс стандартизации браузеров.
CSS мгновенно завоевала популярность. Она позволила разделять логическую структуру HTML-документов и способы их форматирования и отображения на экране. При этом технология CSS оказалась весьма гибкой и дала возможность создавать вложенные (каскадные) стили с иерархической системой подчинения и наследования возможностей. Симпатии пользователей окончательно переместились к браузеру Internet Explorer. А компания Netscape была куплена сетевым гигантом America Online за 8,98 млрд. долл.
Продолжалась подготовка нового стандарта HTML 4.0. Его рабочая версия стала доступной 8 июня 1997 г., а в декабре появилась и официальная рекомендация W3C. Война браузеров и наборов тегов закончилась, поэтому HTML 4.0 оказался на удивление стабильным. Он действует до сего дня, вышла только одна небольшая промежуточная версия 4.01 с исправленными ошибками спецификации. Интересно, что HTML 4 был снова признан W3C языком логической разметки, хотя всего три года назад казалось, что главное назначение этого языка — форматирование документов. Но теперь существовала технология CSS, по поводу которой W3C высказалась однозначно: все, что связано с визуальными аспектами отображения HTML-документа, разработчики должны выносить в CSS-таблицы.
В конце 90-х годов быстро набрал популярность новый язык разметки — XML (о нем будет рассказано в следующий раз). Он представляет собой упрощенный вариант SGML и также позволяет создавать пользовательские XML-приложения.
26 января 2000 г. вышла спецификация нового языка разметки XHTML 1.0, в которую консорциум W3C предложил переносить существующие HTML-материалы. Она была названа “переформулировкой HTML 4.0 в виде приложения XML 1.0” (хотя ранее HTML считался приложением SGML). Разработчики дополнительно получили три DTD-документа для описания типов, определяемых требованиями HTML 4, поэтому теперь можно обрабатывать XHTML-файлы с помощью практически любых XML-анализаторов. Очень важной оказалась возможность создания в XHTML-приложении собственных тегов (ведь XHTML основывается на XML). Да и компании, производящие интеллектуальные телефоны с возможностью выхода в Интернет, пообещали поддержать XHTML в микробраузерах. А W3C назвал XHTML технологией, предназначенной для мягкого перехода с HTML на 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.
Подробную информацию о текущей ситуации в мире XML можно найти на сайте WWW-консорциума: http://www.w3.org/XML/.
Статья опубликована в PC Week/RE, 2003 г., № 37, c. 33; № 38, c. 32; № 39, c. 46; № 40, c. 46.