encyklopedia.space

XML 1.1

XML 1.1 jest drugą wersją standardu XML (Extensible Markup Language), opublikowaną przez W3C w 2004 roku. Wersja ta wprowadza szereg zmian i poprawek w stosunku do pierwotnej specyfikacji XML 1.0, z głównym celem zwiększenia zgodności z nowoczesnymi systemami kodowania znaków oraz usunięcia niektórych ograniczeń technicznych.

Historia

Rozwój XML rozpoczął się w latach 90., a pierwsza wersja, XML 1.0, została przyjęta w 1998 roku. Już wkrótce po wdrożeniu pojawiły się doniesienia o problemach z obsługą niektórych znaków Unicode oraz trudnościami w przetwarzaniu dokumentów w językach używających rzadkich kodowań. W odpowiedzi na te wyzwania W3C opracowało XML 1.1, które zostało opublikowane jako Recommendation w kwietniu 2004 roku.

Kluczowe zmiany względem XML 1.0

  • Rozszerzony zestaw znakówUnicode 4.0 wprowadzono możliwość użycia znaków spoza zakresu 0x100–0x10FFFF, w tym niektórych znaków sterujących, które w XML 1.0 były zabronione.
  • Nowe zasady nazewnictwa znaków – wprowadzono możliwość użycia znaków kontrolnych #x1–#x1F oraz #x7F–#x9F w nawiasie atrybutów i treści, pod warunkiem, że nie są one znakami niedozwolonymi.
  • Ulepszone reguły nazewnictwa nazw – dopuszczono znaki #x100–#x10FFFF w nazwach elementów i atrybutów, co umożliwiło tworzenie dokumentów w językach z bardziej skomplikowanymi alfabetami.
  • Zmiany w deklaracji wersji – dokument może deklarować wersję 1.1 w nagłówku <?xml version="1.1"?>, co informuje parser o stosowaniu reguł tej wersji.
  • Dodatkowe informacje o kompatybilności – wprowadzono mechanizm xml:version i xml:encoding umożliwiający parsowanie dokumentów mieszanych pod względem wersji.

Struktura dokumentu XML 1.1

Podstawowa składnia dokumentu XML 1.1 jest identyczna z XML 1.0 i składa się z:

  1. Opcjonalnego prologu z deklaracją wersji i kodowania.
  2. Elementu korzenia (<root>…</root>).
  3. Wewnętrznych elementów, atrybutów i treści tekstowej.

Przykład minimalnego dokumentu XML 1.1:

<?xml version="1.1" encoding="UTF-8"?>
<note>
  <to>Jan</to>
  <from>Anna</from>
  <message>Witaj świecie!
</message>
</note>

Kodowanie znaków i Unicode

W XML 1.1 zalecane jest używanie kodowania UTF-8 lub UTF-16, które w pełni obsługują zakres Unicode 0–10FFFF. Dzięki temu dokumenty mogą zawierać znaki pochodzące z praktycznie każdego języka świata, w tym znaki rzadkie, emoji oraz symbole techniczne.

Kompatybilność i wsparcie

Większość współczesnych parserów XML (np. Xerces, libxml2) oferuje obsługę zarówno XML 1.0, jak i XML 1.1. Jednak nie wszystkie aplikacje domyślnie włączają tryb 1.1, dlatego zaleca się wyraźne określenie wersji w prologu dokumentu.

W praktyce XML 1.1 jest rzadziej stosowane niż XML 1.0, głównie z powodu szerokiej kompatybilności pierwszej wersji i braku konieczności korzystania z rozszerzonych możliwości znakowych w typowych zastosowaniach biznesowych.

Zastosowania

Standard XML 1.1 znajduje zastosowanie w:

  • Systemach publikacji wielojęzykowych, które muszą obsługiwać znaki spoza BMP.
  • Projektach naukowych, w których wymagana jest dokładna reprezentacja znaków technicznych i matematycznych.
  • Archiwizacji danych historycznych, gdzie niektóre stare kodowania wymagają konwersji do pełnego zakresu Unicode.

Kontrowersje i krytyka

Choć XML 1.1 przyniosło istotne usprawnienia, spotkało się również z krytyką:

  • Niektórzy twierdzili, że wprowadzenie nowych znaków kontrolnych może zwiększyć ryzyko ataków typu XML Injection.
  • Utrzymanie podwójnej wersji specyfikacji (1.0 i 1.1) zwiększyło złożoność implementacji parserów.
  • W większości przypadków korzyści płynące z XML 1.1 nie były wystarczające, aby uzasadnić migrację istniejących systemów.

Podsumowanie

XML 1.1 jest ważnym krokiem w rozwoju języka znaczników, umożliwiającym pełniejsze wykorzystanie Unicode i eliminującym niektóre techniczne ograniczenia pierwowzoru. Mimo że nie zyskał tak szerokiej popularności jak XML 1.0, pozostaje istotnym elementem węzłem w ekosystemie standardów otwartych i jest wykorzystywany w specjalistycznych aplikacjach wymagających maksymalnej elastyczności znakowej.

Artykuł opracowany na podstawie oficjalnej specyfikacji W3C oraz literatury fachowej.