xmlЩо таке XML? XML (eXtensible Markup Language) — це спрощений діалект мови SGML, призначений для опису ієрархічних структур даних в World Wide Web. Він розробляється робочою групою W3C в 1996 р.; в даний час прийнятої рекомендацією є друга редакція мови XML 1.0 XML, безсумнівно, входить в обойму найбільш перспективних технологій WWW, чим пояснюється інтерес, який приділяється йому і корпораціями-розробниками, і широкою публікою.

           Перш ніж перейти до його опису, видається доречним обговорити причини його появи та подальшого бурхливого розвитку. Спробуємо для цього поглянути на ті проблеми WWW, які повинні бути вирішені засобами нового покоління Веб-технологій.

           XML — це спроба вирішити перераховані проблеми шляхом створення простої  мови розмітки, що описує довільні структуровані дані. Точніше кажучи, це метамова, на якій пишуться спеціалізовані мови, що описують дані певної структури.

           Такі мови називаються XML-словниками. На відміну від HTML, XML не містить ніяких вказівок на те, як описані в XML-документі дані повинні відображатися. Спосіб відображення даних для різних пристроїв задається мовою опису стилів XSL, який грає для XML приблизно ту ж роль, що CSS дл HTML.

           Інша принципова її відмінність від HTML полягає в тому, що XML може містити будь-які теги, які вважатимуть за потрібне використовувати творці XML-словника.

           Наведемо список лише декількох спеціалізованих мов на базі XML, які сьогодні знаходяться в різних стадіях розробки робочими групами W3C: MathML — мова математичних формул; SMIL — мова інтеграції і синхронізації мультимедійних засобів; SVG — мова двовимірної векторної графіки; RDF — мова метаописів ресурсів; XHTML — переформулювання HTML в термінах XML.

           Процес обробки XML-документа полягає в наступному. Його текст аналізується спеціальною програмою, яка називається XML-процесором. XML-процесор нічого не знає про семантику даних у документі, він тільки виробляє синтаксичний розбір (parsing) тексту документа і перевіряє його правильність з точки зору правил XML. Якщо документ правильно оформлений (well-formed), то результати розбору тексту передаються XML-процесором прикладній програмі, яка виконує їх змістовну обробку, якщо ж документ оформлений невірно, тобто містить синтаксичні помилки, то XML-процесор повинен повідомити про них користувачеві . HTML не висловлює змісту документів.

           Мова HTML була створена для опису структури документів (назва, заголовки, списки, абзаци і т. п.) і, в деякій мірі, правил їх відображення (напівжирний шрифт, курсивний шрифт і т. п.). Вона ні в якій мірі не призначена для опису сенсу написаних на ньому документів, а в багатьох випадках саме дані складають тіло документа, будь-то біржовому зведенні чи наукова публікація.

           Тому з’явилася необхідність в мові опису даних, причому даних, організованих в ієрархічні структури. HTML громіздкий і негнучкий. За останні роки HTML перетворився на накопичення тегів, які часто дублюють один одного і аж ніяк не вносять ясності в текст документа.

           Якщо додати сюди ще і нестандартні розширення HTML, якими грішать всі розробники браузерів, то створення малих складних HTML-документів стає серйозним завданням. З іншого боку, раз і назавжди зафіксований набір тегів часто виявляється недостатньо гнучким для вираження потрібного нам змісту.

           Концепція Веб-оглядача занадто обмежена. З появою Java-аплетів, сценарних мов та елементів ActiveX Веб-оглядачі перестали бути простими «відвідувачами» HTML-документів; сьогодні скоріше вони виглядають як програми, що запускають конкретні програми.

           Тим не менше, сама концепція оглядача накладає зайві обмеження на користувача; в багатьох випадках нам потрібні Веб-орієнтовані програми, тобто програми, здатні читати спеціалізовану інформацію з Веб-сайтів і видавати нам її в звичному вигляді, наприклад, у вигляді електронних таблиць.

Припустимо, що мені потрібні всі тексти книг ,наявні в Мережі. Спроба пошуку по імені автора призведе до того, що я отримаю список всіх посилань з цим ім’ям, включаючи спогади про Довлатову, рецензії на її книги і т. д. Набагато зручніше було б скористатися спеціальним тегом, щоб вказати, що саме я шукаю. Неможливо знайти взаємопов’язані ресурси. Припустимо тепер, що я все ж знайшов кілька оповідань Довлатова, які явно складають єдиний збірник. Добре, якщо вони містять посилання на зміст, але часто це не так. Тому необхідний спосіб вказівки того, що дана група сторінок складає єдиний ресурс і повинна оброблятися відповідно. Для цього необхідна стандартизована і розвинена система метаописувачів Веб-сторінок.

Виникає питання: а який сенс у використанні «порожньої мови», позбавленого власного змісту? Справа в тому, що, незважаючи на зовнішню простоту, XML має досить витонченими механізмами контролю правильності даних, дозволяє проводити перевірку ієрархічних відносин всередині документа, і, саме головне, встановлює єдиний стандарт для документів, що зберігають дані, якою б не була природа цих даних. Зупинимося докладніше на деяких сферах застосування мови XML. Традиційна обробка даних Перераховані вище можливості дозволяють розглядати XML як платформо-незалежний стандарт зберігання та подання інформації, який у поєднанні з іншими сучасними технологіями (зокрема, з технологіями Java) здатний стати основою для створення будь-яких машинно-незалежних додатків, у т. ч. для обміну даними між сервером і клієнтом. Крім того, активно розробляються сьогодні мови запитів на базі XML можуть скласти серйозну конкуренцію мови SQL.

           Програмовані, керовані документом XML-документи можуть служити контейнерами для побудови додатків з існуючих інтерфейсів і компонентів. У цьому випадку документ складається з посилань на компоненти для користувача інтерфейсу і модулі обробки даних, які зв’язуються в процесі відображення сторінки на екрані.

           Архівування компонентів. Сучасне програмування базується на використанні компонентів, які в ідеалі повинні легко збиратися в єдине ціле за допомогою нескладного додаткового кодування. Основою для цього служить архівування компонентів, яке, в свою чергу, вимагає однакового підходу до їх зберігання і подальшого використання. Є всі підстави вважати, що в найближчому майбутньому XML-документи виявляться альтернативою поширеній сьогодні зберігання компонентів у вигляді двійкових модулів.

           Впровадження даних. Після того, як ми визначили структуру даних XML, принципово нескладно написати генератор коду, що обробляє ці дані. У міру розвитку подібних програмних засобів вся рутинна обробка даних (включаючи перевірку їх правильності, подання в потрібному форматі і т. п.) може бути автоматизована, дозволяючи розробникам зосередитися на нестандартних частинах створюваного продукту.