За 5 лет существования XML, публикаций о нем, было, пожалуй, более, чем о какой-либо другой интернет-технологии. И все же до сих пор не так уж многие имеют четкое представление об XML. Мне случалось неоднократно наблюдать как на собеседованиях программисты, устраивающиеся на работу и не понаслышке знакомые со своей предметной областью, в вопросе о предназначении XML откровенно «плавают» словно нерадивые студенты на экзамене. Подобные обстоятельства отчасти оправданы тем, что пресса, буквально, завалена разношерстной информацией о бесчисленных стандартах, языках и технологиях на платформе XML. Разобраться в подобном информационном потоке не так-то просто. Но, вероятно, вас занимает вопрос о том, стоит ли разбираться в этом потоке и есть ли нужда в подобных знаниях у вас лично?! Даже если вы обычный пользователь веб, без претензий на специализацию, то технологическая эпоха XML вас не минует. «Хоть программистом можешь ты не быть, о XMLе знать обязан». В этой пародии, как и в любой хорошей шутке, есть своя доля истины. Столь любимый нами и такой родной веб, фактически, исчерпал свой технологический потенциал. Поэтому уже в 90х годах стала актуальной идея веба нового поколения, так, называемого, семантического веба. Мы привыкли к Интернету, как к среде разрозненных электронных документов, связанных между собой гиперссылками. Когда-то и эта концепция была революционной. Однако прошло время и теперь мы на пороге информационного пространства, все элементы которого связаны сложными множественными логическими цепочками, в рамках развитых структурных моделей. Причем эти самые элементы теперь не ограничиваются понятием документа, но могут быть самыми различными сущностями: схемами, шаблонами, описаниями, определениями, связями и различными типами данных. Функциональное ядро веба нового поколения - XML. Расшифровка аббревиатуры - расширяемый язык разметки может легко ввести в заблуждение. Так уж устроено наше ассоциативное мышление, что услышав сокращение XML мы тут же представляем себе некую новую версию привычно HTML. Но понимать под XML лишь разметку документов, все равно, что утверждать о том, якобы персональный компьютер – устройство для набора текстов. Но и не стоит распинать разработчиков. Полагаю, они вовсе не предвкушали подобную путаницу. Исторически сложилось так, что первоначальная концепция универсального стандарта описания документов и документных связей SGML, оказалась сложна для широкой реализации. В результате была принята упрощенная версия концепции, каковую мы наблюдаем как HTML. XML представляет собой развитие первоначальной более совершенной нежели HTML концепции. Так, что подобное название, по-своему, адекватно.
Впрочем, к чему абстракции?! XML ныне широко и активно используется так, что имеет смысл говорить о нем, как о технологии свершившейся. Я бы обозначил XML как комплекс стандартов международного консорциума W3C, объединенных определенным языковым синтаксисом. По сути, речь о тегах подобных HTML, одиночных и контейнерных. Вся прелесть в том, что эти теги могут назначаться разработчиком структуры электронных документов. Собственно эта идеи и лежит в основе столь стремительного роста числа XML-базированных стандартов. Унификация определений синтаксиса для различного рода XML-документов, достигается за счет технологий XML Information Set (InfoSet) и XML Namespaces. Первая технология реализуется ссылкой в заголовке XML-документа на соответствующий набор информационных элементов XML, вторая ссылкой на согласованное пространство имен XML. Также в XML-документах может присутствовать DTD заголовок, описывающий структуру документа. Впрочем, на смену DTD пришла технология XML Schema и в частности Relax NG. Подобный формат описание близок специалистам, привыкшим моделировать бизнес процессы в CASE- инструментарии на UML (универсальном языке моделирования).
Итак, данные любого рода можно представить в заданной структуре с помощью синтаксиса XML. Что дальше?! Эти данные можно транспортировать из приложения в приложение. XML благодаря своей универсальности послужит замечательным протоколом. Можно даже организовать удаленный вызов процедур с помощью XML инструкций. В этом помогут стандарты SOAP и XML RPC, а также язык описания программных интерфейсов для взаимодействия различных веб-сервисов WSDL. Есть возможность взаимодействия с базами данных посредством XML-ориентированного языка запросов xQuery. Однако, располагая данными, невольно задумываешься об их представлении. Технология XSLT – расширяемого языка стилей, включающего форматные преобразования, позволяет разделение данных и их представления. Для представления данных достаточно сослаться на XSLT-шаблон представления документа в XML-файле. В отличии от каскадных таблиц стилей (CSS), XSLT позволяет богатые функциональные возможности представления данных, включая фильтры, сортировки, условия и циклы. Имеется также и технология графического представления данных SVG (язык масштабируемой векторной графики). При обращении к SVG-файлу возникает ощущение, что загружена SWF-страница (Macromedia Flash), однако реально, это результат исполнения XML-инструкций. Расширенны также и возможности форм запросов данных, что описано в стандарте xForms.
Мы располагаем богатыми возможностями определения данных, хранения, транспортировки и представления. Чего же не хватает для целостной картины, скажем, о привычном нам веб-сайте?! Не хватает функциональных возможностей. XML содержит ряд замечательных взаимосвязанных структурообразующих технологий, способных обеспечить беспрецедентные функциональные возможности. Это xLink, xPointer, xPath, xIncludes, xFragment. xLink способен обеспечить непосредственные, множественные, семантические, ролевые и прочие связи между документами. В связке xLink с xPointer и xFragment появляется возможность задания связей между фрагментами документов, вплоть до редактирования фрагмента удаленного документа. xPath позволяет организовать модульность документа, где от модуля к модулю можно обращаться с помощью xPointer. xInclude позволяет включать в документ сторонние документы. В XML остается возможность задания интерактивности с помощью Java/Java-script. Здесь очень кстати вспомогательные стандарты DOM (объектная модель документа), SAX (простой API для XML), и с не давних пор XOM (объектная модель XML). Существуют также и XML-рекомендации по созданию общедоступных сайтов (WCAG) и по принципам авторской разработки удобных инструментов (ATAG). Имеется также и XML- ориентированный язык описания программных интерфейсов XUL, пока не нашедший широкого применения.
Если уже говорить о рекомендациях, то стоит вспомнить об универсальном методе описания, обнаружения и интеграции веб-сервисов для b2b систем электронной коммерции (UDDI). А что касается, электронного документооборота в рекомендациях XML EDI приняты два стандарта европейский (UN/EDIFACT) и американский (ANSI X- 12).
Электронная коммерция, документооборот… Невольно задумываешься: «А на сколько безопасно оперирование XML-данными?!». На сей счет приняты стандарты цифровой подписи XML Signature (XML Encryption), язык инфраструктуры поддержки открытых ключей XKMS, язык разметки управления доступом к XML XACML, язык разметки утверждений безопасности SAML.
На самом деле это далеко не все стандарты XML. Например, существует ряд специализированных XML-базированных языков. Скажем, математический язык разметки (MathML), химический (CML), географический (GML). Существуют язык интерфейсов мобильных устройств (WML) и язык интерактивных мультимедийных приложений и презентаций (SMIL). Имеется даже язык описания принципов создания пользовательских программ, снижающие барьеры для доступности в Сети и приносящие пользу людям с отклонениями зрительными, слуховыми, физическими, умственными и неврологическими (UAAG).
Принципы XML в корне отличаются от подходов принятых в HTML. В настоящее время во всемирной паутине размещено огромное число HTML страниц и каждый день это число растет. Взять и перевести одним махом все эти документы на платформу XML невозможно. Учитывая эти обстоятельства был разработан переходный язык XHTML, по сути являющийся HTML с синтаксисом тегов, принятом в XML. В частности для того, что бы задать представления документа в XSLT можно воспользоваться языком XHTML, что не составит особого труда для человека, знакомого с HTML. Также консорциумом W3C был одобрен язык XML Basic, который предназначен для скорейшего ознакомления широкого круга разработчиков с потенциалом технологии xLink.
В этой статье я не задавался целью подробно рассказать о стандартах XML. Здесь приведен краткий обзор этих технологий. Более подробную информацию о XML можно найти на сайтах http://w3c.org, http://www.elbib.ru, http://www.xmlhack.ru, http://www.raleigh.ru/XML/, http://www.citforum.ru и многих других. Очень рекомендую архив примеров использования XML-технологий на http://zvon.org. Перечень стандартов XML в структурированной форме представлен на http://blog.redgraphic.ru/.
Автор: Дмитрий Шейко