XML

Rozszerzalny język znaczników do zapisu danych w strukturze drzewa. Czytelny zarówno dla ludzi, jak i maszyn, stosowany m.in. w konfiguracji i wymianie danych.

XML (Extensible Markup Language) to rozszerzalny język znaczników, w którym dane zapisujesz w postaci drzewa zagnieżdżonych elementów otoczonych tagami, np. .... „Rozszerzalny” znaczy, że nie masz z góry narzuconego zestawu tagów jak w HTML — sam wymyślasz nazwy elementów pasujące do Twoich danych. Efekt jest czytelny zarówno dla człowieka, jak i dla maszyny, dlatego XML od lat siedzi w konfiguracji aplikacji i w wymianie danych między systemami.

Jak to działa i do czego służy

Dokument XML ma jeden korzeń (root), a w nim dowolnie głęboko zagnieżdżone elementy. Każdy element może mieć atrybuty () oraz tekstową lub elementową zawartość. Dochodzi do tego deklaracja na początku i kilka twardych reguł: każdy otwarty tag musi być domknięty, wielkość liter ma znaczenie, a znaki specjalne (&, <) trzeba escapować. Dokument spełniający te reguły jest well-formed.

Strukturę można dodatkowo opisać schematem — XSD (XML Schema) albo starszym DTD — który mówi, jakie elementy są dozwolone i jakiego typu. Wtedy parser potrafi sprawdzić, czy dokument jest valid, a nie tylko poprawny składniowo. Dane wyciągasz zapytaniami XPath, a przekształcasz między formatami przez XSLT.

Przykład z praktyki

Najbardziej znasz XML, nawet jeśli o tym nie wiesz: każdy projekt w Mavenie to plik pom.xml opisujący zależności. RSS i mapy stron (sitemap.xml) też są XML-em, podobnie jak SVG czy dokumenty Office (.docx to spakowany zbiór XML-i). Jeśli chcesz szybko sprawdzić, czy plik jest poprawny i ładnie go sformatować, użyjesz w terminalu narzędzia xmllint:

  • xmllint --noout plik.xml — sprawdza, czy dokument jest well-formed (cisza = OK).
  • xmllint --xpath "//ksiazka/tytul" plik.xml — wyciąga konkretne elementy.

Częste błędy i mity

Pierwsza pułapka to mieszanie kodowań — deklarujesz UTF-8, a zapisujesz w Windows-1250 i polskie znaki się sypią. Druga: zapomniany escaping & w tekście, przez co parser krzyczy o błędzie. Trzecia: traktowanie XML jak formatu na wszystko. Do API i konfiguracji dziś częściej sięgasz po JSON albo YAML, bo są zwięźlejsze i lżejsze. XML wciąż wygrywa tam, gdzie potrzebujesz walidacji schematem, przestrzeni nazw (namespaces) i dojrzałych narzędzi — czyli w korporacyjnej integracji, dokumentach i standardach typu SOAP.

Pojęcia powiązane

JSON, YAML, HTML, XSD, DTD, XPath, XSLT, SOAP, parser, namespace.