XML

XML (skrót od eXtensible Markup Language – rozszerzalny język znaczników) to otwarty standard opracowany przez W3C. No właśnie, dlaczego rozszerzalny? Otóż XML nie jest kolejnym językiem do przechowywania konkretnych danych, jak np. język HTML opisujący wygląd stron sieciowych. XML to język opisujący dane, czyli metajęzyk. W uproszczeniu można powiedzieć, że XML służy do tworzenia innych języków (aplikacji XML) służących do przechowywania informacji. Jeśli masz potrzebę zapisywania określonych danych o określonej strukturze, XML okaże się najlepszym narzędziem, bez względu jakie by te dane nie były. W przeciwieństwie do np. HTML, XML nie ma ograniczonej liczby znaczników, bo pozwala przechowywać dowolne dane i to w jak najbardziej wygodny dla nas sposób, bo sami go określamy. Sami określamy strukturę danych, która może być tabelaryczna, ale może także tworzyć drzewo. W ten sposób nie jesteś, jako twórca zbiorów XML w żaden sposób ograniczony. Na tym przede wszystkim polega wyższość XML nad innymi formatami zapisu danych.

XML a SGML

Koncepcja XML-a polega na znacznym uproszczeniu zawiłego SGML-a, co pozwoliło na budowę prostszych parserów (procesorów XML). XML jest podzbiorem standardu SGML eliminującym jego zbyt skomplikowany charakter tam, gdzie się tylko dało. Większość dokumentów XML jest także zgodna z SGML-em, ale nie na odwrót. Istnieją dokumenty XML, które nie są poprawnymi dokumentami SGML (lub też przetwarzane zgodnie z regułami SGML mogą zostać zinterpretowane wbrew intencji autora) – za sprawą sposobu zamykania pustych znaczników (jak np. <p/>, które w XML-u jest równoważne <p></p>), kolidującego ze skróconą notacją znaczników SGML znaną jako Null End Tag (np. <p/abc/, co w dokumentach SGML może być równoważne <p>abc</p> lub być niepoprawne, jeśli definicja dokumentu zabrania stosowania NET).

Pochodzenie XML, czyli SGML

Przodkiem języka XML był SGML. Jest to język o dużych możliwościach, ale przez swoje rozmiary i poziom skomplikowania niezbyt łatwy do stosowania. Znane jest już chyba stwierdzenie, że XML oferuje 80% możliwości SGML, przy dziesięciokrotnie łatwiejszym ich wykorzystaniu. SGML – w przeciwieństwie do XML – nie jest językiem, który sam się opisuje. Nie jest również tak łatwy do przetwarzania.

Kiedy stosować xml:lang

Treść, która jest bezpośrdnio powiązana z dokumentem XML (zawarta w dokumencie lub uważana za część dokumentu po przetworzeniu) powinna używać atrybutu xml:lang określającego język. Atrybut ten powinnien być zarezerwowany do określenia języka treści dostarczanej przez autora.

Atrybut xml:lang jest zdefiniowany przez XML 1.0 jako atrybut używany do określania języka treści elementu HTML, włącznie z tekstem i innym typem treści (np: obrazy i pliki dźwiękowe), który znajduje się w elemencie. Wartość xml:lang odnosi się do podelementów, jak również do atrybutów powiązanych z elementem i podelementami (chociaż stosowanie języka naturalnego w atrybutach nie jest najlepszą praktyką). Wartością atrybutu xml:lang jest znacznik języka zdefiniowany przez RFC 3066 lub wersje późniejsze.

Np.: xml:lang w elemencie t:

<t xml:lang="pl"> 
   Ten tekst jest zawarty w elemencie 't'.Zastosowanie  atrybutu
   xml:lang wskazuje język, po to, żeby np.: zastosować odpowiednią 
   czcionkę lub słownik podczas przeglądania dokumentu. Gdyby nie 
   było atrybutu xml:lang, można mieć problemy z osadzonom treścią 
   taką jak np.: fraza <span xml:lang="fr">C'est la vie</span>, 
   która jest napisana w innym języku. 
</t>

Poniższy przykład pokazuje jak xml:lang jest zastosowany w innym przypadku:

<para>Il faut utiliser <abbr title="Simple Object Access Protocol" 
xml:lang="en">SOAP</abbr></para>

Kiedy stosować własny element lub atrybut

Kiedy wartość języka jest atrybutem lub metadaną treści, która jest z poza dokumentu, nie należy stosować xml:lang. W takich przypadkach informacje na temat języka mogą być zachowane w dokumencie, ale informacje te nie odnoszą się do treści samego dokumentu XML (w tym obrazów, które są przetwarzane jako część dokumentu). W takim przypadku należy zdefiniować element lub atrybut inną nazwą, nie stosując atrybutu xml:lang. Wartość elementu lub atrybutu powinna stosować BCP 47 (lub wersje późniejsze) tak jak w przypadku xml:lang.

Oto kilka przykładów:

  • element w dokumencie XML opisujący kolekcje DVD i dostępne wersje językowe
  • element w bazie danych odnośnie preferencji języka klienta
  • atrybut odnośnika (tak jak w XHTML) wskazujący wersję dokumentu w inym języku

Powodem, dla którego należy stworzyć własny element (lub atrybut) jest przekazanie języka jako wartości (jako części struktury danych lub metadanych na temat dokumentu zewnętrznego) a nie do określenia języka konkretnego kawałka tekstu. Unikanie użycia xml:lang do opisu wartości dotyczących języka dokumentów zewnętrznych pozwala autorom na uniknięcie problemów związanych z etykietowaniem przetwarzanych treści.

Na przykład: dokument XML może wyglądać następująco:

<item type="DVD"> 
  <title xml:lang="fr">Cyrano de Bergerac</title>    
  <!-- wskazuje na język tytułu filmu -->
  <runningTime value="137" />                        
  <!-- język nie ma znaczenia w tym przypadku -->
  <dialogue>en</dialogue>                            
  <!-- wskazuje na język dialogów -->
  <subtitles track="1" language="zh-Hant" />         
  <!-- pokazuje napisy w chińskim -->
  <subtitles track="2" language="zh-Hans" /> 
</item>

W powyższym przykładzie atrybut the xml:lang przekazuje informacje na temat języka tekstu, który pojawia się w dokumencie. Element dialogue i atrybut language są zdefiniowane w schemacie dokumentów XML i pokazują język odpowiedni dla danych pozycji. Na przykład: ‚language’ przekazuje informacje, że napisy w Track #1 są napisane w języku chińskim („zh-Hant”).

Czym jest XML?

XML zainteresuje zapewne tylko kilka procent webmasterów. Może 10, a może 2, nieważne. Chodzi o podkreślenie faktu, że XML nie jest i zapewne nie będzie masowo używanym językiem tworzenia stron internetowych. Wszyscy ci, którzy budują swoje domowe witryny, prezentując w nich siebie i swoją rodzinę, przyjaciół, wycieczki, domowe zwierzaki, pamiętniki i co tam jeszcze dusza zapragnie, będą mogli z pewnością robić to dalej i nie obawiać się, że przyjdzie grupa jakichś nawiedzonych speców i wywróci wszystko do góry nogami.

Jeśli można zabawić się w proroka, HTML pozostanie podstawowym narzędziem na bardzo długie lata, a może i na zawsze, nawet gdy w Sieci pojawią się języki, o jakich nawet nam się jeszcze nie śni. HTML, z całą swoją rozwichrzoną konstrukcją, przyprawiającą sieciowych magików o palpitacje serca, jest językiem prostym i łatwym, doskonale zaspokajającym potrzeby znacznej większości internetowego społeczeństwa. Twórcy przeglądarek włożyli mnóstwo starań, aby ich produkty były łaskawe dla rozlicznych webmasterskich błędów i tolerowały najdziksze swawole.

XML, czyli eXtensible Markup Language (rozszerzalny język znaczników, zaprojektowany przez World Wide Web Consortium) ma inne zadanie. Przede wszystkim nie jest to język do tworzenia dokumentów, lecz język do tworzenia innych języków. Dopiero te języki służą do budowania dokumentów w Internecie. Języki takie nazywamy aplikacjami XML – zapewne wszystkim znana jest choćby nazwa MathML, czyli aplikacji XML służącej do tworzenia dokumentów zawierających formuły matematyczne. Inną znaną aplikacją jest WAP do wyświetlania internetowej informacji w telefonach komórkowych. Są takie narzędzia, jak GedML (obsługa danych genealogicznych), MusicML (notacja muzyczna), VoiceML (dane głosowe), ThML (teksty teologiczne), VML i SVG (grafika wektorowa), XMLNews (wymiana aktualnych wiadomości), RSS (kanały informacyjne) i inne. Aplikacji takich powstało mnóstwo i są to języki służące biznesowi, naukowcom, wyspecjalizowanym mediom itd.

Oczywiście, najbardziej znaną aplikacją XML jest język XHTML, czyli następca HTML.

Od razu jednak podkreślmy, że KAŻDY może być poważnym twórcą aplikacji XML, jeśli tylko starczy mu wiedzy, czasu i cierpliwości – buławę marszałkowską każdy nosi w swoim tornistrze. Jeśli będzie miał dobry pomysł, jego język może stać się standardem w jakiejś wybranej dziedzinie.

Zapyta teraz ktoś, jakim cudem można tworzyć własny język, skoro to specjaliści zbudowali nam HTML, a wielkie firmy programistyczne zaprojektowały przeglądarki, które ten język interpretują i wyświetlają informacje w żądany sposób. Jakim sposobem można tworzyć coś samemu, w domowym zaciszu, nie oglądając się na to, co powie Microsoft, Netscape, Opera, społeczność Mozilli…?

W zwykłym dokumencie HTML piszemy <h1>Tytuł rozdziału</h1> i wiemy, że przeglądarka wyświetli nam coś takiego:

Tytuł rozdziału

Ale jeśli napiszemy <tytuł>Tytuł rozdziału</tytuł>, to przeglądarka zignoruje ten nasz znacznik, bo go po prostu nie rozpozna:

Oczywiście, tak się stanie w dokumencie HTML. Ale nie w dokumencie XML!

W HTML mamy ograniczony zestaw znaczników, a przeglądarka rozpoznaje je na podstawie wbudowanych w nią definicji typów dokumentów, czyli DTD (np. DTD dla HTML 4.01). Jeśli znacznika nie ma w definicji, po prostu go ignoruje (kto nie z nami, ten przeciw nam…).

W XML to projektant tworzy własny zestaw znaczników, a przeglądarka posłusznie wyświetla je w żądany sposób – dba o to procesor XML. Jeśli koniecznym jest, aby projektowana aplikacja miała znaczniki <tytuł></tytuł>, <imię_psa></imię_psa>, <kolor_włosów></kolor_włosów>, przeglądarka musi to uwzględnić.

Oto dlaczego mówimy „rozszerzalny język znaczników”. Nie ma już ograniczenia do nic nie mówiących <p>, <h1>, <ul> – możemy wymyślić nazwy znaczników, które coś mówią czy coś wskazują.

Oto przykład dokumentu XML (rozszerzenie .xml), który zawiera wyłącznie hierarchiczną strukturę danych i żadnego formatowania. Dane są wyświetlane w postaci drzewa. W takim dokumencie struktura danych jest całkowicie oderwana od formatowania, w przeciwieństwie do HTML, gdzie formatowanie jest wbudowane w polecenia. Zauważ, że drzewo możesz zwijać i rozwijać. Do oglądania dokumentów polecamy jak najnowsze wersje przeglądarek, przede wszystkim Firefoksa, ewentualnie Opery i Internet Explorera (w tych ostatnich możliwe są błędy w wyświetlaniu – w Operze nie wyświetlają się kody źródłowe, a w IE są kłopoty z akceptacją polskich znaków w nazwach elementów).

Przykład XML bez arkusza stylów | Przykład XML z arkuszem stylów

Zawartość zewnętrznego arkusza CSS, który formatuje dokument XML:

zwierzaki {
	 font-family: Verdana, Arial
	}
pies {
	display: block;
	font-size: 14pt;
	font-weight: bold;
	padding: 10px;
	background-color: #FFCC00;
	}
kot {
	display: block;
	font-size: 14pt;
	font-weight: bold;
	padding: 10px;
	background-color: #66FF00;
	}
królik {
	display: block;
	font-size: 14pt;
	font-weight: bold;
	padding: 10px;
	background-color: #CCFFFF;
	}

Oczywiście XML to daleko więcej niż możliwość budowania własnych znaczników. Jak twierdzą specjaliści, XML jest przede wszystkim narzędziem do wymiany informacji między maszynami, co w dobie globalizującego się świata ma szczególną wagę. Nic dziwnego, że XML jak burza wdziera się do oprogramowania i jest uważany za jedną z najważniejszych technologii świata komputerów, o ogromnej przyszłości.

Więcej informacji o XML

Top