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.