XML potrafi wywoływać zupełnie skrajne reakcje u osób, które się z nim stykają. Od zachwytu i ogromnego entuzjazmu przez lęki i rozczarowania po całkowitą obojętność. Dla większości osób pozostaje on jedynie tajemniczą technologią, której nie znają a którą a poznać by chcieli. W praktyce okazuje się, że XML jest znacznie prostsze niż może się to z początku wydawać.
o autorach
Michał Paluchowski CEO, właściciel i redaktor vortalu NetHut.pl. Jego ulubionym tygodnikiem jest Wprost, a na co dzień z przyjemnością czyta Gazetę Wyborczą. Jest zakochany w muzyce i komputerach, czasem nieco ekscentryczny. Zawsze otwarty na nowe znajomości.
Łącznie napisał dla nas 45 artykułów.tych samych autorów
- IMAP w stylu PHP [MP]
- Własne RSS [MP]
- Rodzina XSL [MP]
- Rozszerzenia XSSI [MP]
- Dynamiczne generowanie grafiki w PHP [MP]
zobacz również
Spróbujmy więc odpowiedzieć na pytanie czym jest XML. Pełna nazwa tej technologii praktycznie niczego nie tłumaczy, dla porządku jednak warto ją podać: eXtensible Markup Language. Zauważyliście podobieństwo z czymś znanym? Może HyperText Markup Language? Do tego wrócimy za chwilę. XML to po prostu standard przekazywania informacji wraz z ich opisem, wykorzystującym proste znaczniki.
Plik XML jest zwykłym plikiem tekstowym, który edytować można nawet w programie takim jak Notatnik z Windows czy Pico spod Linuxa. Aby jednak niepotrzebnie nie utrudniać sobie pracy warto rozglądnąć się za wyspecjalizowanym edytorem. O tym powiem na końcu.
Wróćmy teraz do HTML i zobaczmy, czym się charakteryzuje. Plik napisany w języku HTML zawiera tekst dokumentu uzupełniony znacznikami, które określają miejsce lub zakres występowania pewnych określonych struktur. Od znacznika <p> do znacznika </p> mamy akapit tekstu. W miejscu znacznika <img> mamy obrazek. HTML bardzo ogólnie opisywał takie struktury na tym kończyła się jego 'inteligencja'. Nie wiedział, czy obrazek zawiera psa czy kota, czy dany odnośnik wiedzie do strony o gotowaniu czy praniu.
XML natomiast idzie o krok dalej. Pozwala zupełnie dowolnie opisać zbiór danych, dokładnie według potrzeb jego twórcy. Oto krótki przykład kodu XML:
<?xml version="1.0"?>
<news numer="1">
<tytul>XML jest swietny!</tytul>
<data>20 Stycznia 2004</data>
<autor>Michał Paluchowski</autor>
<tresc>Nowe rozwiązania oparte na technologii
<nazwa>XML</nazwa> wprowadziły takie firmy jak
<firma>IBM</firma>, <firma>HP</firma> i
<firma>Microsoft</firma>.
</tresc>
</news>
Wygląda interesująco? Przede wszystkim schludnie - każdy znacznik jest czytelny i jasno określa swoją zawartość. XML nie jest kodem samym w sobie. Sam XML jest jedynie podstawą dla licznych technologii, które z niego korzystają. Żeby taki tekst, odpowiednio sformatowany wyświetlić na stronie WWW trzeba przepuścić go przez parser XSLT. Osoby chcące wykorzystać XML w programach komputerowych będą bardziej zainteresowane technologiami takimi jak SOAP czy XML Schema.
W tej chwili łatwo zauważyć podstawową zaletę XML - jest prosty i niezwykle bliski ludzkiemu myśleniu. Daje ponadto dużą dowolność w pisaniu kodu. Jest on określany jako metamarkup language, co oznacza, że nie ma określonego zestawu znaczników. Ten definiowany jest przez twórcę zbioru danych.
Podstawowe zasady
Każdy język ma swoje zasady, podobnie jest z XML, w ramach wprowadzenia należy więc je dobrze poznać.
Deklaracja XML, znajdująca się na początku przykładowego dokumentu nie jest wymaganym elementem, ale zwyczajowo jest umieszczana. Jej pełna zawartość wygląda następująco:
<?xml version="1.0" encoding="ISO-8859-2" standalone="yes"?>
Oprócz zdefiniowania wersji języka XML zawiera ona informację o kodowaniu znaków w dokumencie. Atrybut standalone natomiast określa, czy dokument może występować samodzielnie czy też będzie on potrzebował odwołania do zewnętrznego DTD (Document Type Definition). Takie dokumenty zawierają listę dozwolonych znaczników i określają sposoby ich użycia.
Znaczniki jak łatwo zauważyć konstruuje się identycznie jak w HTML. Znacznik otwierający ma postać <znacznik> a zamykający </znacznik>. Jednak w odróżnieniu od HTML, w języku XML każdy znacznik musi być zamknięty. Co zrobić w przypadku, gdy korzystamy z pojedynczych znaczników, które nie mają zamknięcia, np. <br>? Otóż prawda jest taka, że mają - zapisuje się je jako <br></br>, ale w praktyce stosuje się skróty: <br />.
Bardzo ważną kwestią jest rozróżnianie wielkości liter. <news> nie jest tym samym znacznikiem co <NEWS> czy <News>, nie można go również zamknąć wstawiając </NEWS>. XML nie wymaga stosowania jednej, konkretnej wielkości liter, konieczna jest jednak konsystencja w wykorzystaniu jednego systemu.
Hierarchia elementów
Jest ona jedną z podstawowych cech XML. Dowolny dokument XML można zapisać w formie drzewa hierarchicznego. Zobaczmy jak wyglądałoby ono dla podanego wyżej przykładu newsa:
news
|
|--- tytul - XML jest swietny!
|--- data -- 20 Stycznia 2004
|--- autor - Michał Paluchowski
|--- tresc
|
|--- nazwa - XML
|--- firma - IBM
...
Element <news> jest tutaj elementem nadrzędnym - rodzicem elementów <tytul>, <data>, <autor> i <tresc>. Dlaczego jest to takie istotne? Ponieważ dla poprawienia spójności kodu w specyfikacji XML przyjęto zasadę, że każdy znacznik musi zostać zamknięty zanim zostanie zamknięty każdy z jego rodziców. Co to oznacza w praktyce? Otóż nie możemy napisać:
<news><tytul>Dowolny tytuł</news></tytul>
ale musimy:
<news><tytul>Dowolny tytuł</tytul></news>
Atrybuty
Podobnie jak to jest w HTML, atrybuty określa się w znaczniku otwierającym dany element. Ich wartości muszą być zawsze zamknięte w cudzysłów, chociaż nie ma już znaczenia czy będzie on pojedynczy czy podwójny. Podobnie jest ze spacjami wokół znaku równości. Zatem:
<data dzien="13" miesiąc="kwiecień" rok="2004" />
jest tym samym co:
<data dzien = '13' miesiąc = 'kwiecień' rok = '2004' />
Nazwy w XML
Zasady dotyczące nazewnictwa w XML są wspólne zarówno dla nazw elementów, jak i atrybutów oraz pewnych rzadziej używanych konstrukcji. Cały ten zbiór jest określany jako XML Names.
Nazwy w XML mogą oczywiście zawierać dowolne znaki alfanumeryczne, a więc cały zakres alfabetu łacińskiego i wszelkie cyfry. Nazwy te mogą zawierać również znaki narodowe, np. polskie ogonki, niemieckie umlauty, cyrylicę czy chińskie ideogramy. Dozwolone są także trzy znaki przestankowe: podkreślenie '_'; myślnik '-' oraz kropkę '.' Niedozwolone są inne znaki specjalne, jak apostrofy, znaki zapytania, wykrzykniki, procenty itp.
Nazwy muszą również w całości znajdować się w jednej linii bez żadnych spacji.
Wewnątrz elementów natomiast niedozwolone jest umieszczanie dwóch znaków specjalnych: & który musi być zastępowany przez & oraz < który należy zastępować przez <
Sekcje CDATA
W języku XML występują specjalne bloki typu CDATA, gdzie umieszcza się zawartość, którą parser powinien potraktować jako czysty tekst i przepuścić bez jakiegokolwiek przetwarzania. Wszelkie elementy XML czy inne znaczące formy, jakie się wewnątrz nich znajdą zostaną przez parser zignorowane. Bloki CDATA definiuje się następująco:
<znacznik>
<![CDATA[
Każdy <znacznik /> tutaj zostanie zignorowany.
]]>
</znacznik>
Komentarze
Komentarze w kodzie XML są wprowadzane identycznie jak w języku HTML:
<!-- Krótki komentarz do kodu. -->
Należy jedynie uważać, aby treść komentarza nie zawierała nigdzie podwójnego myślnika -- (poza początkiem i końcem). Istotne może być również, że do parsera należy decyzja, czy pozostawi komentarze w ostatecznym kodzie czy też je usunie. Lepiej więc nie umieszczać w nich żadnych danych istotnych dla działania końcowego produktu.
Przetwarzanie instrukcji
Ten fragment reguł może wydawać się dziwnie znajomy osobom, które miały styczność z PHP. Otóż instrukcje, które mają zostać przetworzone przez zewnętrzny program umieszcza się wewnątrz znaczników <? i ?>. Jeśli więc chcemy umieścić kawałek kodu PHP w dokumencie XML, należy to zrobić tak:
<tytul><? echo $tytul; ?></tytul>
Akceptowane jest również wpisanie:
<tytul><?php echo $tytul; ?></tytul>
To wyjaśnia dlaczego twórcy PHP wybrali akurat <? i ?> do zaznaczenia początku i końca kodu.
Narzędzia do tworzenia dokumentów
Jak już wspomniałem, dokumenty XML można tworzyć w dowolnym edytorze tekstu. Jednakże szczególnie na początku, kiedy masz z tym mało doświadczenia, przydatne mogą okazać się wyspecjalizowane narzędzia. Wiele z nich jest rozprowadzanych na zasadzie OpenSource. Na początek możesz przyjrzeć się programowi XML Cooktop (www.xmlcooktop.com).
Mam nadzieję, że to krótkie wprowadzenie stanowi zachęcającą podstawę do dalszej pracy z językiem XML. Jak zawsze bardziej szczegółowe informacje można znaleźć na stronie www.w3c.org. Bogactwo technologii, jakie działają w oparciu o standard XML to już temat na zupełnie inny artykuł.