Когда мы говорили о разметке в Маркдауне, то там смысл был такой: есть текст, а мы его размечаем специальными символами, чтобы он хорошо выглядел. Теперь перейдём на этап выше — будем форматировать данные на уровне логики с помощью XML.
👉 XML нужен для работы с техническим текстом, где всё строго, упорядоченно и логично. Его, конечно, можно применить и к художественному тексту, но выйдет так себе.
Что такое XML
XML — это сокращение от eXtensible Markup Language, а переводится это как «Расширяемый язык разметки». Смысл XML в том, чтобы выстроить внутри документа логическую структуру — чтобы было видно, что к чему относится и как всё связано между собой, в каком формате представлены данные.
С помощью XML можно:
- записать оргструктуру компании или любую другую иерархию — «этот подчиняется тому»;
- разметить текст по смыслу — «тут важное, там второстепенное, вот это поясняет вон то»;
- хранить типовые данные — например, имена артистов, названия их альбомов и треки; или настройку какой-нибудь программы, или скрипты;
- разметить веб-страницу по смыслу и отдать эту разметку алгоритму, который сам нарисует дизайн;
- разметить текст для дальнейшего машинного обучения;
- хранить результаты работы программ, которые работают с текстом — например, ничто не мешает текстовым редакторам хранить документы со всем оформлением в формате XML.
И многое другое, где нужен порядок, структура и работа с текстовыми данными.
Сила XML
Сила XML в том, что данные здесь представляются как обычный текст, размеченный тегами (как в HTML). Например, чтобы записать оргструктуру компании в XML, не нужно рисовать схему в графическом редакторе, достаточно правильно разметить текст с именами и должностями. Файлики получаются маленькими, из легко обрабатывать.
И ещё сила XML в том, что эти данные может прочитать и обработать компьютер. Например, если мы передаём ему оргструктуру компании, компьютер поймёт её: кто кому подчиняется, что куда входит и т. д. Для сравнения: если скормить компьютеру схему, нарисованную в графическом редакторе, он её не поймёт.
Если XML хорошо составлен, его также может понять человек.
Как устроен XML
Внешне XML очень похож на HTML — в нём тоже всё пишется в угловых скобках, есть закрывающие теги и параметры: аналоги классов и стилей. Но, в отличие от HTML, здесь нет обязательных тегов или вообще каких-то обязательных элементов. Объясним, как это работает, на примере.
Допустим, у нас есть такой текст, из которого нужно сделать XML-документ:
«По состоянию на 21 октября 2021 журнал Код работает и в редакции есть главред Максим Ильяхов и автор Михаил Полянин»
Первое, что нам нужно сделать — написать в документе, что перед нами именно XML:
<!--?xml version="1.0"?-->
Этот параметр говорит, что ниже будет XML-разметка. Иначе программа-обработчик не будет знать, что с ним делать — рисовать как HTML или выводить как просто текст?
Внутри XML-документа всегда есть корневой элемент — внутри него лежит всё остальное. Так как в XML мы придумываем названия для разметки сами, то пусть этот элемент будет называться actual (это название может быть любым):
<?xml version="1.0"?>
<actual>
<!-- содержимое корневого элемента -->
</actual>
👉 Комментарии в XML такие же, как в HTML.
Теперь разбираем содержимое. Первое, что мы видим в документе, — это дата, поэтому можем сделать отдельный раздел со статусом издания. В него будет входить значение Active (издание работает) и два параметра — дата последней проверки и статус этой проверки. Сам элемент мы назовём status:
<?xml version="1.0"?>
<actual>
<!-- содержимое корневого элемента -->
<status lastUpd = "21.10.2021" checked = "true">
Active
</status>
</actual>
Это очень похоже на стили и классы в HTML, но работает иначе: мы просто указываем параметры и их значения, а не подключаем какие-то внешние данные или правила.
Также вы могли заметить, что мы пишем дату в нестандартном формате (с точки зрения компьютера). Так можно: если мы потом будем писать обработчик этого XML, мы сможем научить его читать именно этот формат даты.
Это история о том, что XML — это просто полочки, на которые мы раскладываем данные. Какие там данные — ему не важно.
Добавим ниже сведения про название журнала:
<?xml version="1.0"?>
<actual>
<!-- содержимое корневого элемента -->
<status lastUpd = "21.10.2021" checked = "true">
Active
</status>
<media type = "online">
Журнал «Код»
</media>
</actual>
Новый элемент мы назвали media — так человеку будет проще прочитать и понять, что внутри, а компьютеру всё равно.
Последнее — добавим информацию о составе редакции. Обратите внимание, что появилась вложенная структура: внутри элемента person есть три дочерних элемента: name, lastname и role. Это значит, что они относятся к родительскому элементу, а не живут сами по себе:
<?xml version="1.0"?>
<actual>
<!-- содержимое корневого элемента -->
<status lastUpd = "21.10.2021" checked = "true">
Active
</status>
<media type = "online">
Журнал «Код»
</media>
<!-- редакция -->
<person>
<name>
Максим
</name>
<lastname>
Ильяхов
</lastname>
<role>
главред
</role>
</person>
<person>
<name>
Михаил
</name>
<lastname>
Полянин
</lastname>
<role>
редактор
</role>
</person>
</actual>
Таким способом можно разобрать на логические составляющие любой технический или информационный документ — от инструкции к чайнику до ежегодного отчёта для инвесторов. Главное — не запутаться в элементах и чётко понимать, что от чего зависит и куда вкладывается.
Где нужен XML
XML применяют везде, где нужно выделить логическое содержимое документа, чтобы потом его можно было как-то обработать. Например, если у вас есть размеченный XML-файл с названием и характеристиками товаров, то можно научить сервер обрабатывать его как угодно: выводить название в заголовке или простым текстом, понимать, где лежит цена, откуда брать описание и к какому разделу отнести этот товар.
Ещё XML применяют в API, когда идёт ответ от сервера в виде XML-файлов.
Что дальше
В другой статье придумаем свой XML-формат и научим сервер с ним работать.