XML: що це, структура документа та принцип роботи

Автор: IT Sectr Опубліковано: 2026-03-08 Час читання: 8 хв

XML (eXtensible Markup Language) — це текстовий формат для зберігання та передачі структурованих даних з використанням користувацьких тегів. Він широко застосовується у конфігураційних файлах, веб-сервісах та Android-розробці. За даними консорціуму W3C, специфікація XML залишається стабільним стандартом з 2008 року. XML забезпечує сувору структуру даних з можливістю валідації через схеми.

Головне

  • XML — розширювана мова розмітки з користувацькими тегами для структурованих даних
  • Сувора структура — обов’язкові закриваючі теги, кореневий елемент та валідація через XSD
  • Простори імен — механізм для уникнення конфліктів імен в одному документі
  • XSLT — трансформація XML в інші формати: HTML, PDF, CSV
  • Android-розробка — XML використовується для макетів, маніфесту та ресурсів

Що таке XML?

XML — це мова розмітки, яка визначає набір правил для кодування документів у форматі, читаному як людиною, так і машиною. На відміну від HTML, XML не має фіксованого набору тегів — розробники створюють власні теги, що відповідають структурі даних.

XML був розроблений консорціумом W3C у 1996 році як спрощена підмножина SGML (Standard Generalized Markup Language). Основна мета XML — відокремити вміст від презентації даних. На відміну від HTML, який описує зовнішній вигляд, XML описує структуру та зміст даних.

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

Основні галузі застосування XML

  • Android-розробка — файли макетів, маніфест, ресурси (strings, colors, themes)
  • Конфігурація — Maven POM, Ant build, веб-конфіги (web.xml)
  • Веб-сервіси — SOAP, XML-RPC, стрічки RSS/Atom
  • Документообіг — SVG, DocBook, Office Open XML
  • Бази даних — SQL Server (XML тип), Oracle, PostgreSQL

Синтаксис та структура XML

Синтаксис XML суворіший, ніж у HTML. Кожен відкриваючий тег повинен мати відповідний закриваючий, атрибути беруться в лапки, а імена тегів чутливі до регістру. Документ повинен мати рівно один кореневий елемент, що містить усі інші.

XML-документ може починатися з декларації, яка вказує версію XML та кодування. Потім йде кореневий елемент, всередині якого можуть бути вкладені елементи, атрибути, текстовий вміст та коментарі. Порожні елементи записуються як <element />.

xml
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
    <book id="bk001">
        <title>XML Developer Guide</title>
        <author>John Smith</author>
        <price currency="USD">29.99</price>
        <published>2026-03-15</published>
    </book>
    <book id="bk002">
        <title>Advanced XML Schemas</title>
        <author>Jane Doe</author>
        <price currency="USD">49.99</price>
        </book>
</catalog>

Правила добре сформованого XML

Добре сформований (Well-formed) XML повинен дотримуватися базових правил: закриваючі теги обов’язкові для кожного відкриваючого, вкладення суворе (перетинання тегів заборонено), значення атрибутів завжди в лапках. Порушення будь-якого правила робить документ некоректним і непридатним для парсингу.

  1. Один кореневий елемент — документ містить рівно один корінь
  2. Правильна вкладеність — теги не повинні перетинатися
  3. Закриваючі теги — обов’язкові для всіх елементів, крім самозакривних
  4. Чутливість до регістру — <Book> та <book> — різні елементи
  5. Лапки в атрибутах — значення атрибутів у подвійних або одинарних лапках

Простори імен та схеми XML

Простори імен XML вирішують проблему конфлікту імен, коли в одному документі використовуються елементи з різних словників. Простір імен задається атрибутом xmlns з URI, який однозначно ідентифікує словник.

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

Технологія Призначення Приклад
DTD Базова валідація структури Старий, менше можливостей
XSD Сувора типізація та валідація Стандарт галузі
RELAX NG Компактна альтернатива XSD Простіша та читабельніша за XSD
XSLT Трансформація XML в інші формати XML в HTML, PDF, CSV
XPath Навігація та вибірка вузлів Запити до XML-дерева

XML у мобільній розробці

XML відіграє ключову роль у розробці Android. Операційна система Android використовує XML для опису користувацького інтерфейсу (файли макетів), конфігурації додатка (AndroidManifest.xml), ресурсів (strings, colors, themes) та векторної графіки (VectorDrawable). На iOS XML застосовується рідше, в основному для Storyboard та конфігураційних plist-файлів.

У Android кожен екран додатка описується XML-файлом з ієрархією View-компонентів: ConstraintLayout, LinearLayout, TextView, Button. Цей підхід відокремлює логіку додатка від презентації, спрощуючи підтримку та адаптацію під різні екрани. Ресурсні XML-файли дозволяють локалізувати додаток без зміни коду.

Приклад макету Android

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

xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/welcome"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/click"
        app:layout_constraintTop_toBottomOf="@id/title"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Парсинг XML на мобільних платформах

Парсинг XML на мобільних платформах виконується двома основними підходами: DOM (Document Object Model) завантажує весь документ у пам’ять як дерево, SAX (Simple API for XML) читає документ потоково, викликаючи обробники подій. DOM зручний для невеликих документів, SAX — для великих файлів з обмеженнями пам’яті.

Android має вбудовані парсери: XmlPullParser для потокового розбору та DocumentBuilder для DOM-підходу. iOS використовує Foundation XMLParser з делегатним протоколом. Для серіалізації об’єктів у XML часто використовуються бібліотеки на кшталт SimpleXML у PHP або Jackson XML у Java.

Парсинг XML на Android (Kotlin)

Android рекомендує використовувати XmlPullParser для ефективного розбору XML. Парсер працює в подійному режимі: викликає next() для переміщення до наступного елемента та повертає тип події (START_TAG, TEXT, END_TAG). Це дозволяє обробляти документи будь-якого розміру з мінімальним споживанням пам’яті.

kotlin
import org.xmlpull.v1.XmlPullParser
import org.xmlpull.v1.XmlPullParserException
import java.io.IOException

fun parseCatalog(parser: XmlPullParser): List<Book> {
    val books = mutableListOf<Book>()
    var eventType = parser.getEventType()
    var currentBook: Book? = null

    while (eventType != XmlPullParser.END_DOCUMENT) {
        when (eventType) {
            XmlPullParser.START_TAG -> {
                when (parser.getName()) {
                    "book" -> currentBook = Book()
                    "title" -> parser.next()
                    "author" -> parser.next()
                }
            }
            XmlPullParser.TEXT -> {
                currentBook?.apply {
                    title = parser.getText() ?: ""
                }
            }
            XmlPullParser.END_TAG -> {
                if (parser.getName() == "book") {
                    currentBook?.let { books.add(it) }
                }
            }
        }
        eventType = parser.next()
    }
    return books
}

Приклади XML у додатках

Приклади використання XML показують його роль у реальних проектах. Крім Android-розробки, XML використовується для конфігурації збірки, опису даних та документообігу. Розуміння синтаксису XML необхідне для роботи з Maven, SOAP-сервісами та багатьма іншими корпоративними інструментами.

Конфігурація Maven (POM)

Файл pom.xml описує проект Maven: залежності, плагіни, версії та профілі збірки. Кожна залежність задається тегами groupId, artifactId та version. Maven автоматично завантажує вказані бібліотеки з репозиторіїв.

xml
<?xml version="1.0" encoding="UTF-8"?>
<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>my-app</artifactId>
    <version>1.0.0</version>
    <dependencies>
        <dependency>
            <groupId>com.squareup.retrofit2</groupId>
            <artifactId>retrofit</artifactId>
            <version>2.9.0</version>
        </dependency>
    </dependencies>
</project>

XML vs JSON: коли що вибирати

Вибір між XML та JSON залежить від конкретних вимог проекту. JSON підходить для REST API, мобільних додатків та конфігурацій, де важливі компактність та швидкість. XML незамінний у корпоративних системах, документообізі та Android-розробці, де потрібні сувора валідація, простори імен та трансформація даних.

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

JSON, у свою чергу, став стандартом для веб-API та мобільних додатків. Простота інтеграції з JavaScript, менший розмір та висока швидкість парсингу роблять JSON бажаним вибором для REST API, WebSocket-повідомлень та конфігураційних файлів. Для більшості нових проектів рекомендується починати з JSON і переходити на XML лише при виникненні специфічних вимог.

Часті запитання

Чим XML відрізняється від HTML?

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

Що таке XSD і навіщо вона потрібна?

XSD (XML Schema Definition) — це мова опису структури XML-документа. XSD визначає, які елементи та атрибути допустимі, їх типи даних, обов’язковість та обмеження. Схема дозволяє автоматично валідувати XML-документ до його обробки, запобігаючи помилкам та гарантуючи цілісність даних.

Як парсити XML на Android?

На Android для парсингу XML використовуйте XmlPullParser — вбудований потоковий парсер. Він працює подійно: обробляє START_TAG, TEXT та END_TAG у циклі, ефективно керуючи пам’яттю. Для невеликих документів підійде DOM-парсер через DocumentBuilderFactory, який завантажує весь документ у пам’ять як дерево вузлів.

У чому різниця між DTD та XSD?

DTD (Document Type Definition) — старий механізм валідації з обмеженими можливостями: не підтримує типи даних (усе — рядки) та простори імен. XSD — сучасна заміна з підтримкою типів даних (числа, дати, переліки), просторів імен та розширюваності. XSD сама є XML-документом, DTD використовує власний синтаксис.

Навіщо потрібні простори імен у XML?

Простори імен запобігають конфліктам імен, коли XML-документ об’єднує елементи з різних джерел. Наприклад, у макеті Android тег View може бути як з android.view, так і з бібліотеки. Атрибут xmlns з URI однозначно ідентифікує джерело кожного елемента та атрибута.

Підсумки

  • XML — розширювана мова розмітки з користувацькими тегами для структурованих даних
  • Суворий синтаксис — обов’язкові закриваючі теги, кореневий елемент, чутливість до регістру
  • Простори імен та схеми XSD забезпечують валідацію та запобігають конфліктам імен
  • Android використовує XML для інтерфейсів, ресурсів та конфігурації додатка
  • Парсинг виконується через XmlPullParser (потоковий) або DOM (у пам’ять)
  • XSLT дозволяє трансформувати XML в HTML, PDF та інші формати
  • Менша популярність у REST API поступається JSON, але XML незамінний у Enterprise та Android

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також