XML (eXtensible Markup Language) je textový formát pro ukládání a přenos strukturovaných dat pomocí uživatelských značek. Je široce používán v konfiguračních souborech, webových službách a vývoji pro Android. Podle konsorcia W3C zůstává specifikace XML stabilním standardem od roku 2008. XML poskytuje přísnou strukturu dat s možností validace pomocí schémat.
Hlavní body
XML je značkovací jazyk, který definuje sadu pravidel pro kódování dokumentů ve formátu čitelném pro člověka i stroj. Na rozdíl od HTML nemá XML pevnou sadu značek — vývojář vytváří vlastní značky odpovídající struktuře dat.
XML bylo vyvinuto konsorciem W3C v roce 1996 jako zjednodušená podmnožina SGML (Standard Generalized Markup Language). Hlavním cílem XML je oddělení obsahu od prezentace dat. Na rozdíl od HTML, které popisuje vzhled, XML popisuje strukturu a význam dat.
Klíčovou vlastností XML je rozšiřitelnost. Pokud se v projektu objeví nové typy dat, vývojář jednoduše přidá nové značky bez změny existující struktury. To činí XML vhodným pro dlouhodobé ukládání dat a výměnu mezi různými systémy.
Syntaxe XML je přísnější než HTML. Každá otevírací značka musí mít odpovídající uzavírací značku, atributy jsou v uvozovkách, názvy značek rozlišují velká a malá písmena. Dokument musí mít přesně jeden kořenový prvek obsahující všechny ostatní.
XML dokument může začínat deklarací udávající verzi XML a kódování. Poté následuje kořenový prvek, uvnitř kterého mohou být vnořené prvky, atributy, textový obsah a komentáře. Prázdné prvky se zapisují jako
<?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>
Well-formed XML musí dodržovat základní pravidla: uzavírací značky jsou povinné pro každou otevírací, vnořování je přísné (křížení značek je zakázáno), hodnoty atributů jsou vždy v uvozovkách. Porušení jakéhokoli pravidla činí dokument neplatným a nelze jej parsovat.
Jmenné prostory XML (XML Namespaces) řeší problém konfliktů názvů, když jsou v jednom dokumentu použity prvky z různých slovníků. Jmenný prostor je určen atributem xmlns s URI, které jednoznačně identifikuje slovník.
XML Schema (XSD) je jazyk pro popis struktury XML dokumentu. XSD určuje, které prvky a atributy jsou povoleny, jejich datové typy, povinnost a omezení. Schémata umožňují automatickou validaci dokumentu před zpracováním, což je kritické pro integrační řešení.
| Technologie | Účel | Příklad |
|---|---|---|
| DTD | Základní validace struktury | Staré, méně možností |
| XSD | Přísná typizace a validace | Průmyslový standard |
| RELAX NG | Kompaktní alternativa k XSD | Jednodušší a čitelnější než XSD |
| XSLT | Transformace XML do jiných formátů | XML do HTML, PDF, CSV |
| XPath | Navigace a výběr uzlů | Dotazy do XML stromu |
XML hraje klíčovou roli ve vývoji pro Android. Operační systém Android používá XML pro popis uživatelského rozhraní (soubory rozvržení), konfiguraci aplikace (AndroidManifest.xml), zdroje (řetězce, barvy, motivy) a vektorovou grafiku (VectorDrawable). Na iOS se XML používá méně, hlavně pro Storyboard a konfigurační soubory plist.
V Androidu je každá obrazovka aplikace popsána XML souborem s hierarchií View komponent: ConstraintLayout, LinearLayout, TextView, Button. Tento přístup odděluje logiku aplikace od prezentace, což zjednodušuje údržbu a přizpůsobení různým obrazovkám. Zdrojové XML soubory umožňují lokalizaci aplikace bez změny kódu.
Typický soubor rozvržení obsahuje kořenový ConstraintLayout s vnořenými prvky, z nichž každý má atributy umístění, velikosti a stylu. Android kompiluje XML do binárního formátu AXML pro optimalizaci výkonu při spouštění.
<?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>
Parsování XML na mobilních platformách se provádí dvěma hlavními přístupy: DOM (Document Object Model) načte celý dokument do paměti jako strom, SAX (Simple API for XML) čte dokument streamově a volá obsluhy událostí. DOM je vhodný pro malé dokumenty, SAX — pro velké soubory s omezením paměti.
Na Androidu jsou k dispozici vestavěné parsery: XmlPullParser pro streamovou analýzu a DocumentBuilder pro DOM přístup. Na iOS se používá Foundation XMLParser s delegátským protokolem. Pro serializaci objektů do XML se často používají knihovny jako SimpleXML v PHP nebo Jackson XML v Javě.
V Androidu se doporučuje používat XmlPullParser pro efektivní parsování XML. Parser pracuje v událostním režimu: volá next() pro přechod k dalšímu prvku a vrací typ události (START_TAG, TEXT, END_TAG). To umožňuje zpracování dokumentů libovolné velikosti s minimální spotřebou paměti.
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
}
Příklady použití XML ukazují jeho roli v reálných projektech. Kromě vývoje pro Android se XML používá pro konfiguraci sestavení, popis dat a tok dokumentů. Znalost syntaxe XML je nezbytná pro práci s Maven, SOAP službami a mnoha enterprise nástroji.
Soubor pom.xml popisuje projekt Maven: závislosti, pluginy, verze a profily sestavení. Každá závislost je určena značkami groupId, artifactId a version. Maven automaticky načítá uvedené knihovny z repozitářů.
<?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>
Volba mezi XML a JSON závisí na konkrétních požadavcích projektu. JSON je vhodný pro REST API, mobilní aplikace a konfigurace, kde jsou důležité kompaktnost a rychlost. XML je nenahraditelný v enterprise systémech, toku dokumentů a vývoji pro Android, kde je potřeba přísná validace, jmenné prostory a transformace dat.
XML vítězí ve scénářích s dlouhodobým ukládáním dokumentů. Díky XSD schématům lze XML dokumenty automaticky validovat, což je kritické pro lékařské, finanční a právní systémy. XSLT transformace umožňují generovat HTML, PDF a další formáty z jednoho XML zdroje, což zjednodušuje tok dokumentů.
JSON se stal standardem pro web API a mobilní aplikace. Jednoduchost integrace s JavaScriptem, menší velikost a vysoká rychlost parsování činí JSON preferovanou volbou pro REST API, WebSocket zprávy a konfigurační soubory. U většiny nových projektů se doporučuje začít s JSON a přejít na XML pouze při vzniku specifických požadavků.
Často kladené otázky
XML popisuje strukturu a obsah dat, HTML — vzhled a prezentaci. XML umožňuje vytvářet libovolné značky, HTML má pevnou sadu. XML je přísnější v syntaxi: všechny značky musí být uzavřeny, HTML povoluje neuzavřené značky. XML — pro data, HTML — pro zobrazení.
XSD (XML Schema Definition) je jazyk pro popis struktury XML dokumentu. XSD určuje, které prvky a atributy jsou povoleny, jejich datové typy, povinnost a omezení. Schéma umožňuje automatickou validaci XML dokumentu před zpracováním, čímž předchází chybám a zaručuje integritu dat.
Na Androidu pro parsování XML použijte XmlPullParser — vestavěný streamový parser. Pracuje v událostním režimu: zpracovává START_TAG, TEXT a END_TAG ve smyčce a efektivně spravuje paměť. Pro malé dokumenty je vhodný DOM parser přes DocumentBuilderFactory, který načte celý dokument do paměti jako strom uzlů.
DTD (Document Type Definition) je starý validační mechanismus s omezenými možnostmi: nepodporuje datové typy (vše jsou řetězce) ani jmenné prostory. XSD je moderní náhrada s podporou datových typů (čísla, data, výčty), jmenných prostorů a rozšiřitelnosti. XSD samo je XML dokument, DTD používá vlastní syntaxi.
Jmenné prostory zabraňují konfliktům názvů, když XML dokument kombinuje prvky z různých zdrojů. Například v rozvržení Android může značka View pocházet jak z android.view, tak z knihovny. Atribut xmlns s URI jednoznačně identifikuje zdroj každého prvku a atributu.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také