HTML, SGML, XML… ?ML
АрхивВ настоящее время Web-страницы пишутся преимущественно на языке HTML. Для сообщения основных сведений о структуре документа в HTML используется набор специальных команд - тегов. Набор их не так уж и велик. Как язык разметки - HTML прост и универсален (иначе он бы не получил такого распространения). Создать свою страницу может буквально каждый, даже не используя появившиеся в последнее время редакторы HTML, - сейчас в Интернете бесчисленное множество страниц, созданных миллионами авторов. Но превращение World Wide Web в некую универсальную среду обмена информацией и общения привело к тому, что сейчас повысились требования к ее гипертекстовой основе. От документов в Интернете в настоящее время требуется больше, чем это позволяют возможности HTML.
У HTML есть свои четко обозначенные пределы, которые не позволяют создавать более функциональные документы. Расширение же стандарта может завести (и уже заводит) в тупик - добавки к HTML уменьшают его пригодность в качестве простого и универсального языка разметки. Расширения Netscape и Microsoft, поддерживаемые только в одном определенном браузере, привели к увеличению числа неуниверсальных, а следовательно, и нефункциональных страниц. К тому же многие средства этого языка используются не по своему основному назначению. Например, стандартом де-факто стало применение таблиц для верстки материала. Кажется, что из HTML выжали уже практически все, что можно, и назрела необходимость в чем-то более совершенном.
|
Знакомьтесь - XML
Часто бывает, что новое - это хорошо забытое старое. Если обратиться к истокам HTML, то можно увидеть, что он произошел от SGML (Standard Generalized Markup Language) и является небольшим его подмножеством. Из SGML вышли и другие языки разметки - например, TIM (Telecommunications Interchange Markup - высокоструктурированный язык, использующийся в основном для хранения информации, а не для ее демонстрации). Казалось бы, ответом на "проклятые вопросы" HTML была бы полная поддержка стандарта SGML. Практически, однако, это трудноосуществимо. Причина здесь кроется в чрезвычайной подробности и обширности SGML - краткое описание стандарта занимает около пятисот страниц. Из всех его возможностей практически необходимыми оказываются лишь несколько процентов. Если сравнить HTML c "жигулями", SGML представляется чем-то вроде "роллс-ройса". Но если человеку хочется большего, чем могут дать "жигули", он совсем не обязательно пересядет на "роллс-ройс", который слишком дорог в эксплуатации.
Если HTML слишком прост и негибок, а SGML слишком сложен, разумно остановиться где-нибудь посередине. Так, собственно, и поступила группа специалистов, созданная в рамках World Wide Web Consortium и возглавляемая Джоном Босаком (Jon Bosak) из компании Sun Microsystems.
То, что произвела на свет эта группа, было названо XML (Extensible Markup Language) - расширяемым языком разметки. По существу, это облегченный SGML, его практически используемое подмножество. Одним из основных преимуществ XML является использование структурированной разметки, за которую многие любят SGML.
XML обеспечивает:
- расширяемый набор тегов. Пользователь может определять свои собственные теги и атрибуты для обозначения структурных элементов документа;
- структурную наращиваемость. В документе можно создавать вложенные структуры любой сложности;
- внутреннюю проверку. Правильность структуры документа контролируется автоматически.
SGML настолько обширен, что для него весьма непросто написать даже программу-парсер (синтаксический анализатор). В этом плане рабочая группа по XML ориентировалась на субъективный, но практический критерий. Язык XML не должен превышать уровня сложности, при котором парсер к нему мог быть написан достаточно профессиональным программистом за неделю.
XML начинает приобретать поддержку в рядах создателей браузеров. Разумеется, прежде всего это компании Microsoft и Netscape. Microsoft входит в рабочую группу по разработке стандарта и ведет себя очень активно. Netscape, которая поначалу сдержанно относилась к XML (наверное, по причине активности Microsoft), также начала проявлять признаки благосклонности.
|
Почему не plug-ins или Java?
Прежде чем ознакомиться с XML более детально, рассмотрим, почему его не могут полностью заменить другие нововведения в WWW.
Подключаемые модули (plug-ins), которые призваны обрабатывать мультимедийное и другое "нестандартное" содержание, таят в себе потенциальную проблему. Она состоит как раз в их "нестандартности". Plug-ins возвращают нас к частным форматам данных. А это является большим шагом назад. Распространяя свое содержание с помощью, например, Shockwave, вы оказываетесь привязанными именно к этому формату данных.
Java, в отличие от plug-ins, является стандартным средством, и с его помощью можно создавать программы практически любого уровня сложности. Но это будут именно программы, а не документы. Писать их могут далеко не все, и в этом первое ограничение Java. Второе заключается в том, что документы создаются не только для просмотра в браузере. Хорошо, когда их можно редактировать, обрабатывать, помещать в базы данных с помощью самых разнообразных средств.
Таким образом, plug-ins и Java не могут являться основными поставщиками информации в Сети, но зато они могут эффективно обрабатывать и дополнять основные документы. И чем больше возможностей предоставляют последние, тем большей функциональности можно добиться с помощью дополнительных средств. Джон Босак как-то заметил, что XML будет достойным материалом для обработки средствами Java.
Многомерные документы
Рассматривая форматы документов, можно провести аналогии с геометрическими понятиями. Простой текст имеет лишь одно измерение. HTML уже является двумерным - он содержит разметку, которая описывает, каким образом программа должна обрабатывать содержание. В XML документы становятся многомерными, их можно обрабатывать различными программами, распространять различными методами и даже представлять по-разному, сохраняя при этом совместимость.
В XML каждый документ является объектом, и каждая составная часть этого документа - тоже объект. Логическая структура может быть описана в "Определении типа документа" - (Document Type Definition - DTD). В принципе, это делать не обязательно, но DTD позволяет определить правильность составления документа. Например, мы хотим разместить на странице фотографии с подписями. В этом случае объект может быть описан следующим образом:
<FIGURE TYPE="PHOTO">
<IMG>face.jpeg</IMG>
<CAPTION>A Funny Picture</CAPTION>
</FIGURE>
Мы видим, что элемент FIGURE обладает атрибутом TYPE, который имеет значение PHOTO. Элемент CAPTION вложен в элемент FIGURE. Теперь мы можем определить в DTD, что элемент FIGURE всегда должен содержать элемент IMG и может содержать CAPTION. Можно также дополнительно указать, что элемент CAPTION может встречаться только внутри элемента FIGURE, а самостоятельно он не имеет смысла. Парсер, который будет анализировать документ с фотографиями, в этом случае сможет легко обнаружить логические ошибки в структуре. В DTD можно определить также скрипты и стили, связанные с документом. Например. можно указать, что при нажатии мышкой на фотографию будет активироваться какой-либо скрипт, а согласно определению стиля подпись (CAPTION) всегда будет располагаться под изображением и автоматически нумероваться.
За связь без брака
Несмотря на свое название, гипертекстовый язык разметки документов, сиречь HTML, реализует только часть свойств, которые традиционно ассоциировались с гипертекстовыми системами. В нем поддерживается только простейший вид линков - односторонняя связь с жестко определяемым "пунктом назначения". Такая простота, которая бывает хуже известно чего, - дальний отголосок систем, использовавшихся в 70-е и 80-е годы.
В истинно гипертекстовой системе, к которой стараются приблизиться создатели XML, должен наличествовать стандартный синтаксис для всех классических гипертекстовых механизмов. Он должен поддерживать:
- систему наименований, не привязанную жестко к положению объекта;
- двухсторонние ссылки;
- многомерные структуры ссылок (кольца, множественные окна и т. д.);
- суммарные ссылки (множественные источники);
- вложенность документов (удаленный документ, на который содержится ссылка в документе-источнике, встраивается и становится частью этого самого источника);
- атрибуты связей (определение новых типов связей).
Стильный язык
Частью XML должна стать и система определения стилей в документе (cascading style sheets - CSS). Она хорошо сочетается даже с относительно низкими запросами HTML (и включена в версию Dynamic HTML от Microsoft). В то же время CSS хорошо удовлетворяет и требованиям продвинутого языка гипертекстовой разметки. Достойным партнером XML является язык определения стилей, который:
- является расширяемым, чтобы разработчики могли определять способы обработки неограниченного количества тэгов в документе;
- основан на стандартном синтаксисе, дабы упростить обучение;
- способен обращаться с древовидной структурой XML-документа таким образом, чтобы контекстные взаимоотношения его элементов могли быть отображены при любом уровне сложности;
- интернационален и может работать с различными способами чтения - слева направо, справа налево и сверху вниз, даже если они находятся в одном документе;
- обладает достаточной сложностью, чтобы определять структуры профессиональной верстки документа (набор в несколько колонок, повернутый текст, "плавающие" участки и т. д.;
- допускает частичную обработку, при которой не теряется содержание.
Такой язык существовал и до этого под названием Document Style Semantics and Specification Language (DSSSL). Стандарт на этот язык был определен в апреле 1996 года. В XML опять-таки войдут не все определения DSSSL, а только их подмножество.
Раздолье для скриптов
При попытке написать даже простой Java-скрипт становятся очевидными преимущества объектной ориентации XML. Java-скрипт воспринимает документ как объект и позволяет оперировать с отдельными его свойствами, например title или location. Однако нельзя ссылаться на содержание внутри документа (третий параграф, второй заголовок сверху и т. д.). Текст должен быть привязан к переменным в программе - мы можем оперировать с такими понятиями HTML, как списки, параграфы, заголовки, таблицы. Для перечисления объектов в HTML, однако, хватит пальцев на двух руках. А что, если нужно, например, обрабатывать с помощью JavaScript документ, описывающий телефонную книжку? При этом было бы удобно оперировать понятиями <NAME>, <PHONE> и <EMAIL>. Эти теги помогли бы Java-приложению понять "смысл" документа. В HTML мы можем только ассоциировать скрипты со списком, в котором перечислены телефоны, или с жирным шрифтом, которым они выделены. Но только XML позволяет нам связать представление информации с ее внутренней структурой и логикой. Например, вместо того чтобы вставлять ссылку "mailto:" на каждый адрес e-mail в записной книжке, можно написать скрипт, который будет ее генерировать за вас.
Документ, живущий сам по себе
XML позволяет создавать документы, которые существуют отдельно от сервера и живут своей собственной жизнью. Уже будучи полученным, такой документ продолжал бы функционировать. Продолжим наш пример с телефонной книжкой. Внешне она может выглядеть как список фамилий, организованный в алфавитном порядке. Если щелкнуть на имени, список "раздвинется", и мы увидим более подробную информацию о человеке. Чтобы реализовать это средствами HTML, пришлось бы каждый раз отправлять запрос на сервер. В XML можно легко организовать функционирование документа в режиме off-line. Слова "функционирование документа" наводят на мысль, что наша телефонная книжка начала самостоятельную жизнь - стала приложением. Документ XML может функционировать как программа: например, наша телефонная книжка напоминает простенькую базу данных.
Господство Документа
Одна из причин колоссального успеха Web заключается в том, что создавать HTML-документы не просто, а очень просто. Но для достижения большей функциональности мы вынуждены прибегать к программированию. Гибкость и контроль нам сегодня могут предоставить апплеты Java, plug-ins и частные форматы данных, в большинстве случаев не доступные нашему пониманию.
Важность XML заключается в том, что он открывает для Web-документов новые измерения, обеспечивая им большую функциональность. XML-документы - уже не просто тексты и даже не просто тексты с разметкой. Это уже структуры, содержащие данные. Они включают инструкции о том, как их нужно обрабатывать или показывать, то есть средства взаимодействия с пользователем. Документ будет способен жить своей собственной жизнью. Говоря образно, он сможет найти вас вместо того, чтобы вы искали его. Он сможет представить информацию о себе людям или другим программам. XML поможет установить в Интернете господство Документа.
Многие специалисты считают, что XML - язык будущего Интернета. К сожалению, мы не обладаем способностью заглядывать в завтрашний день, но состав группы разработки (Adobe, IBM, HP, Lockheed Martin, Microsoft, NCSA, Novell, SoftQuad, Sun Microsystems и примкнувшая к ним Netscape Communications) придает некоторую уверенность в перспективах языка. Судьба любого нововведения в Интернете сейчас зависит не только от того, насколько оно хорошо само по себе, но и от того, кто его поддерживает. А с этим у XML пока все в порядке.
Где его искать
Несмотря на то что спецификация находится в настоящее время в стадии разработки, уже написаны экспериментальные XML-браузеры (например JUMBO). Как и в случае с HTML, одним видом браузера здесь дело не ограничится, их будет много. А поскольку количество XML-приложений не ограничено, от браузера может и не требоваться умение делать все. Тем, кому хочется все потрогать руками, можно посоветовать обратиться на http://www.venus.co.uk/omf/xml/ - там можно найти программное обеспечение и множество демо-файлов XML. Исчерпывающие и постоянно обновляющиеся вопросы и ответы (FAQ) можно найти на http://www.ucc.ie/xml. Официальные же документы W3C располагаются на http://www.w3.org/XML/. Удачного вам гипертекста!