Rambler's Top100 Service калинин.ru / программирование / xml /  << 02.08.00 >>

Зачем же все-таки нужен XML

XML сейчас является очень модным словом --- обычно вместе с его упоминанием встречаются слова "метаязык", "перспективная технология" и прочее. Вообще, как только появляется что-то относительно новое или популярное, сразу же, как стервятники, слетаются различные "знатоки" и начинают умными словами рассказывать об этом. Вы знаете --- у меня всегда складывается такое впечатление, что чем больше ненужных умных слов человек употребит, тем менее он компетентен в рассматриваемом вопросе. Нет, "метаязык", это наверное, справедливо. Но обычно все статьи на русском языке, имеющие отношение к XML, носят такой восторженный характер, что понять о чем говорит автор, очень сложно. Это, кстати, относится не только к XML, точно так же пишут о CORBA, COM+ и, к примеру, Active Directory в Win2000. Поверьте, я, когда случайно прочитал заметку об Active Directory, ничего не понял. После того как мне пришлось настраивать сеть под Win2000, я понял что автор статьи, наверняка, сам никогда Active Directory не пользовался и судит по ней только по рекламным проспектам. Собственно, по этим причинам я никогда не покупаю околокомпьютерных журналов и крайне редко их читаю; нет, там попадаются иногда вполне интересные статьи, но для этого приходится просматривать столько "воды", что становится жалко потеряного времени.

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

В качестве более сложных примеров можно привести математическую формулу, причем в двух разных вариантах: формула является набором математических символов и формула является либо уравнением, либо неравенством и т.д. Последнее "и т.д." подразумевает, что вместо того, что бы сохранять формулу в виде типографского набора литер, можно сохранить ее смысл (а по смыслу всегда можно сделать соответствующий набор литер).

Каким конкретно образом XML представляет эти данные, я буду говорить чуть позже (в следующих заметках на эту тему). Сейчас же достаточно понять то, что при помощи XML можно эту иерархию записать и прочитать. "Ну и что?" спросите вы и будете совершенно правы, записать иеархическую структуру можно без всякого XML, пользуясь подручными кустарными средствами. Кроме всего прочего, XML позволяет задать грамматику для этой иерархической структуры, т.е. позволяет определить правила, по которым можно будет говорить о том, подпадает ли под эти правила конкрентный XML документ, или нет. Этот набор правил называется Document Type Definition (DTD). При его помощи можно контролировать правильность документа (иерархической структуры данных) без всяких знаний о конкретных данных. Это, согласитесь, уже что-то: автоматизировать процесс проверки конкретного документа ничего не стоит, соответственно, если, допустим ваша программа получает какие-то данные из разных, не всегда компетентных в наборе этих данных, источников, то всегда можно будет еще на стадии набора указать клиенту на то, что его данные ошибочны. Кроме того, такой подход (т.е., написаное DTD) позволяет сторонним разработчикам свободно писать программы для своих нужд, которые будут обмениваться данными с вашей программой. И, обратите внимание, все совершенно стандартно, с использованием известных библиотек и готовых интсрументальных средств. Это, согласитесь, уже немало.

Кроме того, даже если вся эта структурность вам сейчас и не нужна, все равно стоит проделать эту работу. Потому что, во-первых, выделение структуры документа еще никому не вредило; во-вторых, это достаточно просто что бы это проделать; в третьих, если это не надо вам, то вполне может понадобиться кому-то другому; в четвертых, этот кто-то другой вполне может оказаться вами, а превращение груды неструктурированных данных в набор структурированных это, вообще говоря, очень тяжелая задача (нудная, если делать вручную, и сложная, если пытаться автоматизировать).

Частный случай сторонней программы, которая будет уметь работать с вашим документом, является web-браузер. Современные браузеры умеют отображать XML документы на экране, т.е. у вас сразу же появится средство для визуализации. Кроме того, принципиальная возможность использования таблиц стилей, позволяет очень просто изменять отображение на экране в соответствии с вашими требованиями.

Частным случаем пользы выделения структуры является обычный текст. Если его представить в виде набора ASCII-символов, то этот текст сложно будет назвать книгой. Почему? А вы когда-нибудь видели распечатки инструкций, выполненные на старых принтерах? Где весь текст изображен одним и тем же моноширным шрифтом? А читать пытались? Я тоже. И, знаете, обычные книги было легче читать. Значительно. А все потому, что в них было соответствующее оформление для заголовков, текста, примечаний и прочего. Текст, который, например, оформлен в WinWord'е традиционно (нет, там можно использовать стили, но это обычно забывают) изобилует тем, что каждой букве жестко ставят в соответствие еще и ее оформление (шрифт, размер) --- это тоже нехорошо, потому что, во-первых, для того, что бы оформить документ надо обладать типографскими знаниями и, во-вторых, изменение вида подобного текста превращается в мучение.

Текст же, в котором расставлены некоторые логические атрибуты, которые явным образом идентифицируют для программ, обрабатывающих этот текст, заголовки, примечания и обычный текст, сразу же позволяет удобным образом им пользоваться. Такой текст можно легко видоизменять, просто "играя" с соответствием логических и физических атрибутов (т.е., параметров шрифта); его можно просмотреть где угодно, даже на монохромных терминалах, и везде будут использоваться все возможные средства для того, что бы читать его было бы удобно; по такому тексту можно искать данные, ограничив некоторыми логическими зонами область поиска; с таким текстом легко автоматизировать работу (например, разбивку на страницы и автоматическую генерацию содержания). Все это позволяет сделать простая вещь: выделение структуры документа. А выделить структуру стандартным образом позволяет использование XML.

Резюме

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


Версия для печати


  Ссылки по теме:
http://www.w3.org/xml
   Раздел на сайте W3C, посвященный XML.
http://www.xml.org
   Полезная информация и ссылки на тему XML.
http://www.xmlsoftware.com
   Подборка программного обеспечения для работы с XML.
  Рядом в разделе:
Средства для разбора XML-файлов (27.09.00)
   С момента последнего обновления в этом разделе прошло уже больше месяца... но ведь никто же никому ничего не обещал? ;) Тем...   >>>>
Преобразование XML при помощи XSL (11.08.00)
   Одна из самых частых операций, которую требуется произвести с XML-документом, это показать его. Хочется предупредить сразу, что на этот раз я...   >>>>
  Рядом по дате:
www.absurd.org, стильный дизайн (03.08.00)
   Я давно хотел добавить к "комментариям" комментарий на этот сайт. Все дело в том, что комментировать там нечего, но дать хорошую...   >>>>
Кто я / Who am i, 1998 (01.08.00)
   Пожалуй, фраза, с которой стоит начать комментарий: в этом фильме играет Джекки Чан. Мало того, на мой взгляд, это у него...   >>>>
  Содержание:
Заглавная страница
Мой блог
Мое резюме
Дайджест
Программирование
   C&C++
Сети
Unix
Алгоритмы
Оптимизация
Соревнования
Отвлеченно
XML
TeX
Просто так
Студенческое
Туризм
  Байки
Фотографии
Комментарии
   Книги
Web-ресурсы
Фильмы
Интернет
Программное обеспечение
Жизнь
Благодарности
Форум
Хронология
 
  В этом разделе:
HTML must die (18.11.00)
   Язык гипертекстовой разметки документов (HTML) используется сейчас повсеместно. Задачи, которые ставились перед создателями этого языка заключались в необходимости создания универсального формата...   >>>>
Средства для разбора XML-файлов (27.09.00)
   С момента последнего обновления в этом разделе прошло уже больше месяца... но ведь никто же никому ничего не обещал? ;) Тем...   >>>>
Преобразование XML при помощи XSL (11.08.00)
   Одна из самых частых операций, которую требуется произвести с XML-документом, это показать его. Хочется предупредить сразу, что на этот раз я...   >>>>
Зачем же все-таки нужен XML (02.08.00)
   XML сейчас является очень модным словом --- обычно вместе с его упоминанием встречаются слова "метаязык", "перспективная технология" и прочее. Вообще, как...   >>>>
Содержание раздела полностью...
   Примерно в тоже время
www.absurd.org, стильный дизайн (03.08.00)
   Я давно хотел добавить к "комментариям" комментарий на этот сайт. Все дело в том, что комментировать там нечего, но дать хорошую...   >>>>
Кто я / Who am i, 1998 (01.08.00)
   Пожалуй, фраза, с которой стоит начать комментарий: в этом фильме играет Джекки Чан. Мало того, на мой взгляд, это у него...   >>>>
Хронология полностью...
   Содержание
Заглавная страница
Мой блог
Мое резюме
Дайджест
Программирование
  C&C++
Сети
Unix
Алгоритмы
Оптимизация
Соревнования
Отвлеченно
XML
TeX
Туризм
  Байки
Фотографии
Комментарии
  Книги
Web-ресурсы
Фильмы
Интернет
Программное обеспечение
Жизнь
Студенческое
Просто так
Благодарности
Форум
Хронология
© 2000-2008, Andrey L. Kalinin
mailto:andrey@kalinin.ru
Rambler's Top100