diff --git a/data/posts/ru/2023-06-06-xml.md b/data/posts/ru/2023-06-06-xml.md
new file mode 100644
index 00000000..4669a027
--- /dev/null
+++ b/data/posts/ru/2023-06-06-xml.md
@@ -0,0 +1,321 @@
+---
+title: Что такое XML?
+description: Простыми словами про язык разметки XML
+author: Прядко Максим
+---
+
+## Если вкратце
+
+XML (*e**X**tensible **M**arkup **L**anguage*, то есть *«Расширяемый Язык Разметки»*) — это язык разметки, который используется для хранения и передачи данных (обычно из [API](https://guides.hexlet.io/ru/http-api/)), но не для отображения данных.
+
+XML может быть прочитан как человеком, так и компьютером по аналогии с [JSON](https://tproger.ru/articles/chto-takoe-json-vvedenie/).
+
+## Где используется XML?
+
+Много где, например:
+
+- Веб-сервисы: XML используется для передачи данных между веб-серверами и клиентскими приложениями. Например, [SOAP](https://ru.wikipedia.org/wiki/SOAP) (*Simple Object Access Protocol*) использует XML для кодирования запросов и ответов между веб-серверами и клиентами.
+
+- Базы данных: XML может использоваться для представления данных.
+
+- Конфигурационные файлы: файлы конфигурации веб-приложений могут быть написаны на XML.
+
+- Интернет-магазины: XML используется для передачи информации о заказах между интернет-магазинами и поставщиками. Например, информация о заказах может быть сохранена в формате XML и передана поставщику через веб-сервис.
+
+- Офисные приложения: XML может использоваться для представления данных в офисных приложениях, таких как Microsoft Excel и Microsoft Word. Документы Excel могут быть сохранены в формате XML.
+
+- RSS-ленты: XML используется для создания [RSS-лент](https://ru.hexlet.io/programs/frontend/projects/11), которые используются для распространения новостей и другой информации на веб-сайтах.
+
+## Структура
+
+XML-документ состоит из **пролога**, **элементов**, **текста**, **атрибутов** и **комментариев**. Подобно HTML, каждый элемент может содержать другие элементы внутри себя.
+
+#### Пролог
+
+Любой XML-документ обычно начинается с объявления XML-версии и кодировки UTF. Всё вместе это называется **пролог**:
+
+```xml
+
+```
+
+Здесь `"1.0"` указывает на версию XML, а `"UTF-8"` указывает на кодировку символов.
+
+#### Элементы
+
+Далее следует **корневой элемент**, который содержит все **остальные элементы** в документе. Корневой элемент должен быть заключен в угловые скобки и иметь *открывающий* и *закрывающий* тег:
+
+```xml
+
+
+
+
+
+```
+В коде выше `root` является корневым элементом, а `frontend` и `backend` — остальными элементами.
+
+**Важно!** Все тэги обязательно должны быть закрыты, даже одиночные. Иначе будут ошибки:
+
+```xml
+✅
+
+
+
+ Vue
+
+```
+```xml
+❌
+
+
+
+ Vue
+
+```
+
+#### Текст
+
+Каждый элемент может содержать **текст**, который находится между открывающим и закрывающим тегом:
+
+```xml
+
+
+ Иван
+
+```
+
+Здесь `name` — это элемент, а `Иван` — это текст, содержащийся в элементе.
+
+#### Атрибуты
+
+Элементы также могут содержать **атрибуты**, которые определяют дополнительные характеристики элемента. Атрибуты указываются в открывающем теге элемента, у них есть свои имя и значение:
+
+```xml
+
+
+
+
+```
+
+Здесь `user` — это элемент, а `name`, `age` и `id` — атрибуты элемента.
+
+#### Комментарии
+
+**Комментарии** могут быть добавлены в XML-документ с помощью специальной конструкции ``:
+
+```xml
+
+
+
+
+```
+
+## Конфликт имён и пространство имён
+
+В HTML все теги заранее предопределены: есть `
` для крупных заголовков, `
` для переноса строки или `` для описания блочного элемента. В XML все теги мы определяем самостоятельно.
+
+Допустим, мы хотим описать комнату и вещи, которые в ней находятся. В HTML есть специальный тег `
`, который определяет таблицу, поэтому добавим общий список всех объектов в комнате. А затем отдельно добавим компьютерный стол и тоже назовём его ``.
+
+И если в одном документе встретятся оба тега ``, у которых разное значение, то произойдёт **конфликт имён**:
+
+```xml
+
+
+
+
+
+ Компьютерный стол
+ ПВХ
+
+
+```
+Чтобы избежать этого, используются **пространства имён**.
+
+В XML-документе нужно сначала объявить пространство имен с помощью атрибута `xmlns`, который должен быть добавлен к корневому элементу. Значение атрибута `xmlns` указывает на [URI](https://ru.wikipedia.org/wiki/URI) (Uniform Resource Identifier), который идентифицирует пространство имен.
+
+URI может быть каким угодно, но обычно используется URL, указывающий на документ, где определяется пространство имен.
+
+Попробуем использовать пространства имён, чтобы разрешить конфликт имён:
+
+```xml
+
+
+
+
+ Стол |
+ Кресло |
+
+
+
+
+ Компьютерный стол
+ ПВХ
+
+
+```
+Здесь мы объявляем два пространства имен с URI `http://example.com/furniture` и `http://example.com/tech`.
+
+Затем мы присваиваем каждому элементу свой уникальный идентификатор с помощью префикса пространства имен (`furniture:` и `tech:`). Теперь элементы `` в разных пространствах имен не конфликтуют между собой, и мы можем использовать одно и то же имя элемента в разных контекстах.
+
+## XSD-схема
+
+XSD означает ***X**ML **S**chema **D**efinition* (*Определение XML-схемы*), а если ещё проще — это описание XML-документа.
+
+Зачем это нужно? Представим, что у нас есть два разработчика: первый должен получить XML-документ, а второй должен отправить XML-документ. Первый разработчик составляет для второго XSD-схему, второй делает всё по ней и отправляет нам XML-документ.
+
+Если проверка на типы данных и их организацию не проходят, то документ считается невалидным. Если всё проходит, значит с XML можно работать дальше. Очень удобно!
+
+XSD определяет следующие типы данных:
+
+- Простые типы: целые числа, строки, булевы значения, даты и другие простые типы данных.
+- Сложные типы: состоят из набора элементов, которые могут содержать другие элементы.
+
+Пример XSD-схемы для XML-документа, содержащего информацию о студентах:
+
+```xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+В этой схеме определен элемент `students`, который содержит неограниченное количество элементов `student`.
+
+Каждый элемент **student** содержит элементы `name`, `age` и `address`.
+
+Элемент **address** содержит вложенные элементы `city` и `zip`.
+
+Также определены типы данных для каждого элемента, например, тип `xs:string` для элемента `name` и `xs:int` для элемента `age`, и так далее.
+
+Эта схема определяет структуру, которую должен иметь XML-документ, чтобы он соответствовал требованиям. Например, каждый элемент `student` должен содержать элементы `name`, `age` и `address`, а элемент `address` должен содержать вложенные элементы `city` и `zip`.
+
+А теперь посмотрим пример. Предположим, что у нас есть XML-документ, который описывает студентов:
+
+```xml
+
+
+
+ Юрий
+ 20
+
+ Архангельск
+ 163000
+
+
+
+ Дарья
+
+ Санкт-Петербург
+ 187015
+
+
+
+ Николай
+ 22
+
+
+```
+
+Всё ли в нём правильно? Нет, есть ошибки. Согласно схеме:
+
+- У ***первого*** студента должен быть элемент ``, а не ``
+- У ***второго*** студента отсутствует ``
+- У ***третьего*** студента полностью отсутствует ``
+
+Теперь исправим всё недочёты:
+
+
+```xml
+
+
+
+ Юрий
+ 20
+
+ Архангельск
+ 163000
+
+
+
+ Дарья
+ 19
+
+ Санкт-Петербург
+ 187015
+
+
+
+ Николай
+ 22
+
+ Вологда
+ 160000
+
+
+
+```
+
+Отлично! XML-документ прошёл валидацию и может быть обработан дальше.
+
+
+## Вывод
+
+В качестве вывода тезисно обозначим особенности XML:
+
+- Предназначен для хранения и передачи данных, а не для отображения
+- Все теги создаются с нуля, нужно придумывать их самому
+- Код XML легко понятен человеку
+- XML легко расширяемый, похожий на HTML
+- В протоколе [SOAP](https://ru.wikipedia.org/wiki/SOAP) можно применять только XML
+- XSD — это схема для определения XML-документа. Важно пользоваться ей, чтобы в XMl не было ошибок
+
+Пример XSD-схемы:
+
+```xml
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+Пример XML-документа:
+
+```xml
+
+ Код. Тайный язык информатики
+ Ч. Петцольд
+ 1999
+
+```
\ No newline at end of file