[классификация XML-языков, описание сфер применения]материал подготовил: Александр Лозовюк 16.11.2004
Многие говорят, что появление языка XML дало толчок новому витку эволюции всей программной индустрии. Может, это и верно — множество программных продуктов были быстренько переписаны, дописаны или обзавелись новыми модулями для поддержки новомодной технологии. Правда, пока еще, кажется, нет значка типа «XML compatible». Так что же принесла в наш мир комета по имени XML? Хотя языков на основе XML создано великое множество, они используются во многих, если не во всех отраслях, все их можно условно разделить на некоторые классы. Это поможет понять, где можно использовать XML, а где нет (но если очень хочется, то можно).
На рисунке можно видеть, для каких задач семейство языков XML подходит наиболее органично.
Преобразование данных. С помощью XML задаются правила, по которым данные из одного формата (не обязательно текстового) преобразуются в другой. Самым известным и применяемым языком этого типа есть XSL (XSLT). XSLT-схемы позволяют трансформировать документ XML в любой другой формат — будь то HTML, WML, plain text, RTF. На практике чаще всего применяется преобразование в HTML или WML. Преобразование в бинарные форматы требует специальной поддержки со стороны XSL-процессора. В настоящее время известны разработки преобразователя XML-RTF, RTF-XML, XML-PDF, XML-QuarkXPress (это открывает поистине безграничные перспективы перед издательствами). Ознакомиться со списком доступного программного обеспечения для преобразования XML-документов можно на сайте XML Software, в разделе XSL formatters.
Описания структуры данных (семантики). Для определения, является тот или иной документ корректным, надо иметь описание структуры данных. Необходимо указать парсеру, какой тег какие данные может содержать, и как разные теги могут совмещаться в одном документеили узле. Это достаточно важная область применения XML, поскольку без определения документ — это просто произвольный текст, по которому парсер может лишь построить дерево документа, а программа должна сама заботиться о значении и типе каждого узла. Наиболее известными являются стандарты DTD и новый стандарт Xschema. Семантику документа описывают такие стандарты, как RDF, XMI и некоторые другие.
Данные XML можно преобразовать в любой формат
Обработка данных (хранение, поиск). Уже почти все производители широко распространенных баз данных объявили о поддержке в своих продуктах XML. Некоторые компании (например, IBM) приступили к созданию баз данных, полностью базирующихся на XML. Это вполне логично, поскольку в базе хранятся данные, а XML как раз предназначен для хранения разнородных данных. Вопрос, как производить поиск в таких базах, тоже недолго оставался открытым. Претендентов на замену SQL нашлось сразу несколько, но пока никто не стал общепризнанным стандартом. Поиски оптимального языка запросов к XML-базам данных (по сути, это может быть или один большой документ, или множество связанных документов) продолжаются и сейчас. Отметим лишь, что наиболее удачными оказались разработки XQL, Quilt, SQLXML и Xquery. Последняя имеет статус public W3C Working Draft, а в ее становлении принимали участие такие компании, как IBM, AT&T и Software AG. Весьма вероятно, что это единственный претендент на всеобщий стандарт.
Но основное предназначение XML — разметка структуры данных. Причем тут можно выделить два направления — разметка данных для их восприятия человеком (визуальная), и представление данных для обмена между программами (невизуальная). К невизуальной разметке относятся стандарты, которые описывают служебные данные (SMIL, SOAP, XML-RPC, XAR и другие). Эти стандарты предназначены для стандартизации и формализации обмена разнородной информацией между различными платформами или для передачи служебных данных между программами. Наиболее интересным применением является описание д
анных, предназначенных для вывода на дисплей или другое устройство взаимодействия с пользователем. Эти форматы можно разделить на текстовые (предназначенные для хранения текстовой информации), графические (для графической информации, хоть и описанной в виде текста) и комбинированные. Наиболее известные форматы для представления текста — WML, DocML, DocBook, Open eBook, FuctionBook. Частным случаем, который стоит где-то посредине между графическими данными и текстом, являются языки, которые описывают специальные символы — например, MathML для математических символов, CML (Chemical Markup Language) для химических формул. Графические данные описываются языками SVG (Scalable Vector Graphics) — для векторной графики, X3D — для трехмерных моделей, и VML (Vector Markup Language).
Также с помощью XML описываются данные, которые могут быть использованы как для представлению их человеку (выводу на экран), так и для обработки программами. Например: MusicML для описания нот, Geography Markup Language (GML) для описания географических карт и другие.
В своей основе язык XML является чисто описательным, предназначенным для формального определения структуры данных. Множество раз мне приходилось слышать фразы типа «программа на XML» или что-то в этом роде. Мне всегда казалось, что это неправильно, так как XML ближе к HTML, SGML, а не к традиционным языкам программирования, пусть даже и к скриптовым. И приставка ML переводится как «язык разметки»… Но! Как программисты среагируют на язык, совмещающий XML и программирование — названный, конечно, XML Script?
Сравните:
Язык разработал Michael Houghton довольно давно (по меркам XML) — в 2000 году. Текущая версия стандарта — 0.22.
XML широко применяется в базах данных
Теперь создать свой язык с приставкой ML стало не просто, а очень просто. Поскольку спецификация языка лишь указывает, как нужно писать теги, и как их обрабатывают парсеры или процессоры, а сама семантика остается на усмотрение автора конкретного языка, то формально любой правильно оформленный (well formatted) XML-документ является новым языком. Что означают конкретные теги, в каждом случае надо решать отдельно — общим у всех документов является только то, что они одинаково обрабатываются парсером, а дальше приложение само должно решить, что ему делать с данными.
Для создания нового языка надо сделать как минимум три шага:
Описать основные теги языка и их параметры.
Создать для языка DTD-описание или воспользоваться другим языком из раздела «Описание схем данных» карты XML языков.
Написать спецификацию-документ, который указывал бы разработчикам, для чего предназначается новый язык, что означают его основные теги, комбинации их параметров, как должно вести себя приложение при обработке того или иного тега или их комбинации.
Не думайте, что тут все так просто. Если вы делаете язык очень узкоспециализированным, например, только для описания сети термодатчиков, то все относительно просто. Но если создавать что-то универсальное, то приходится учитывать множество нюансов, которые надо совместить в одном стандарте. Даже если вы очень хорошо знаете предметную область, все равно создание качественного стандарта, который бы учитывал все нюансы и комбинации, будет достаточно трудным.
Создать свой язык на основе XML очень просто…
Но часто велосипед изобретать вовсе не нужно. В большинстве случаев ситуация такова, что необходимый стандарт уже кто-то придумал, а если нет чего-то именно для вашей конкретной задачи, то стоит обратить внимание на более общие стандарты в той или иной области — XML и все производные стандарты очень универсальны и могут удовлетворить запросы не только той сферы, для которой созданы, но и смежных. Надо только поискать и разобраться. Специально для этого я попробовал составить некую карту языков XML. Полная версия схемы доступна в виде файла MS Word по этому адресу: http://www.open-hill.com/big_sheme.doc. На рисунке ниже приведен фрагмент схемы, отображающий некоторые XML-стандарты для описания данных, которые применяются или потенциально могут применяться на веб-сайтах. Это может быть как внутренний формат хранения данных, который по запросу посетителя конвертируется в любой другой, или, если браузер пользователя поддерживает стандарт, основной формат для предоставления информации. Конечно, схема далеко не полная и постоянно обновляется, но с
ее помощью вы можете примерно очертить круг поисков.
Например, для музыкального сайта не обязательно придумывать формат для хранения нот и текстов песен — для этого уже разработан специальный стандарт MusicML.
… но часто этого не надо делать — все уже изобретено
На сегодняшний день в мире насчитывается около 200 различных языков на основе XML. Сюда входят как уже ставшие стандартами Xpath, FpML, WML, так и экспериментальные разработки, часто разрабатываемые одним человеком — KML (Knowledge Markup Language), GameML, ChessGML (для компьютерных игр, например, для шахмат). В каких же областях сейчас используется XML? На рисунке представлена краткая классификация областей индустрии, где успешно применяется XML.
Сегодня существует больше 200 XML-based языков
В бизнес-сфере XML-технологии развиваются очень бурно. Язык здесь используется для задания авторских прав на произведения (аудио, видео, текст, графика). Наиболее законченный вид имеет eXtensible Media Commerce Language (XMCL), больше ориентированный на аудио/видеоданные. Перспективными также являются XML Access Control Language (XACL), позволяющий распределять права доступа к отдельным элементам структуры документа (похоже на разграничение доступа в системе UNIX) и Digital Property Rights Language (DPRL). Повальное увлечение электронной коммерцией привело к созданию серии стандартов для e-commerce. На первом месте по известности тут стоит СommerceML для обмена коммерческой информацией между различными субъектами рынка, ebXML применяется для электронного бизнеса и торговли (крупные игроки, например, Sun, Microsoft и другие считают XML, UDDI, SOAP и ebXML краеугольными камнями всего электронного бизнеса), потом идут такие сравнительно новые разработки, как FpML (Financial Products Markup Language) для разметки финансовых продуктов и интеграции различных финансовых услуг в сфере e-commerce, Open Financial Exchange (интересно, что сначала стандарт был ориентирован на SGML, но потом переписан на XML, он даже старше всех других стандартов, включая сам XML), ориентированный на операции со счетами. Следует отметить и новый язык XBRL (или XFRML, Extensible Business Reporting Language) — расширенный язык бизнес-отчетности. Он предназначен для унификации публикаций финансовой отчетности для компаний различных сфер деятельности.
Рассказывать, где в компьютерной индустрии применяется XML, вряд ли нужно, поэтому остановимся лишь на языках, малоизвестных широкому кругу разработчиков.
Для создания распределенных приложений у разработчика есть выбор между протоколом SOAP (Simple Object Access Protocol), сверхпростым XML-RPC и загадочном PI-RPC (Platform independed RPC) о котором я сумел разыскать лишь одну статью без рисунков.
При разработке систем искусственного интеллекта, которые взаимодействуют с пользователем для создания формальной модели человека, используется язык Human Markup Language (HumanML). При создании робототехнических систем применяется язык Robotic Markup Language (RoboML). А если вы создаете интернет-приложения, которые функционируют как распределенные агенты, то можете использовать разработку DARPA Agent Markup Language (DAML) для упрощения взаимодействия агентов. Для создания инфраструктуры ASP (Application Service Provider) применяется ITML (Information Technology Markup Language). Написание различных руководств и инструкций станет легче благодаря языку TML (Tutorial Markup Language). Теперь даже внешний вид приложения можно описывать с помощью XML — впервые этот подход применили разработчики браузера Mozilla. Созданный ими язык XUL (XML-based User Interface Language) позволяет определить внешний вид всех элементов интерфейса и гибко менять все параметры — пользователям теперь очень легко настроить облик приложения под себя. Подобный подход применен и в Microsoft Windows XP.
XML широко применяется в электронной коммерции
Но неужели все так радужно, и проблем нет? Помните те времена, когда практически единственным средством для хранения данных был простой текстовый файл? Потом, после взрывного возрастания количества компьютеров и программ, каждое приложение стало обзаводиться своим специфическим форматом, причем закрытым двоичным. Ситуация породила множество утилит, некоторые из которых стоят вполне солидных денег, а единственным их предназначением является преобразование информации из файла типа А в файл типа Б. И теперь все снова возвращается к прос
тому тексту, ведь XML-документ — это просто текст и ничего более.
Никто не спорит, что XML — очень нужная и полезная технология. Но вот решать, надо или не надо каждый конкретный продукт ориентировать на XML, следует в каждом случае отдельно, чтобы за стремлением следовать моде не страдала функциональность и надежность. Ведь неспроста Счетная палата Конгресса США и Федеральный совет специалистов по информационным технологиям предупреждают разработчиков, сотрудничающих с госструктурами, не торопиться с использованием языка XML — это касается использования новой технологии для создания электронных представительств правительственных учреждений.