Въведение в XML

XML (eXtensible Markup Language) е текстов формат за структурирано описание на данни. Той използва тагове, чрез които информацията се организира в ясно дефинирана йерархия. XML не е език за програмиране, а език за описание, който позволява данните да бъдат четими както от хора, така и от компютърни системи.

XML документите се използват широко за конфигурационни файлове, обмен на данни и описание на структури, като един от най-често срещаните примери в Java проекти е файлът pom.xml.

Структура на XML документ

Всеки XML документ започва с декларация, която указва версията на XML стандарта и използваното кодиране:

<?xml version="1.0" encoding="UTF-8"?>

Тази декларация информира системата, че файлът е XML документ, създаден по версия 1.0 на стандарта и използва UTF-8 кодиране.

След декларацията следва кореновият елемент, който обхваща цялото съдържание на документа. В pom.xml това е елементът :

<project xmlns="http://maven.apache.org/POM/4.0.0">
    ...
</project>

Кореновият елемент е задължителен за всеки XML документ и съдържа всички останали елементи.

XML тагове

XML използва тагове, които се състоят от:

  • отварящ таг;
  • съдържание;
  • затварящ таг.

Пример от pom.xml:

<groupId>bg.tu_varna.sit.ps</groupId>

Тук:

  • е отварящ таг;
  • bg.tu_varna.sit.ps е стойността на елемента;
  • </groupId> е затварящ таг.

Всеки отварящ таг трябва да има съответен затварящ таг, а имената им трябва да съвпадат точно.

Йерархична структура

XML документите имат дървовидна (йерархична) структура, при която елементите могат да съдържат други елементи. Това позволява логическо групиране на свързана информация.

Пример от pom.xml:

<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>21.0.6</version>
    </dependency>
</dependencies>

В този пример:

  • <dependencies> е родителски елемент;
  • <dependency> е вложен елемент;
  • <groupId>, <artifactId> и <version> са подчинени на <dependency>.

Тази структура показва, че дадена зависимост се описва чрез няколко свързани свойства.

XML атрибути

Освен съдържание между таговете, XML елементите могат да имат и атрибути, които се задават в отварящия таг.

Пример от кореновия елемент:

<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

Тук:

  • xmlns и xmlns:xsi са атрибути, които дефинират използваните XML пространства от имена;
  • xsi:schemaLocation указва къде се намира XML схемата, спрямо която се валидира документът;

Атрибутите предоставят допълнителна информация за елементите, без да създават нови вложени тагове.

Повтoряемост и логическо групиране

XML позволява повтаряне на едни и същи структури, което е особено полезно при конфигурации. В pom.xml това се вижда например при дефинирането на плъгини:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.13.0</version>
    </plugin>
</plugins>

Един родителски елемент (<plugins>) може да съдържа в себе си много вложени като всеки елемент (в случая <plugin>) следва една и съща структура, което улеснява четенето, обработката и поддръжката на конфигурацията.


This site uses Just the Docs, a documentation theme for Jekyll.