Historia
W latach 60-tych po raz pierwszy pojawił się problem tworzenia dokumentów w taki sposób, aby bez względu na rodzaj używanego systemu, komputera wyglądały one jednoznacznie. Efektem prowadzonych prac było wdrożenie w 1969 roku w zakładach IBM nowego języka, a właściwie metajęzyka zwanego GML (Generalized Markup Language). Pierwsza wersja zawierała wiele błędów oraz nie była dostatecznie dostosowana do potrzeb. Problemów było oczywiście więcej i dlatego w 1986 roku pod patronatem ISO opracowano kolejną poprawioną wersję - SGML (Standard Generalized Markup Language). Pomimo wielu możliwości SGML okazał się zbyt wielkim narzędziem do zastosowania w Internecie. Skomplikowany sposób tworzenia dokumentu, dużo możliwości i funkcji okazał się nieprzyjaznym dla statystycznego internałty i dlatego obecnie ma zastosowanie tylko w specjalistycznych przedsięwzięciach. Próbą rozwiązania tego problemu miał się okazać HTML którego pierwszą wersję opracowano w 1991 roku. Język ten okazał się "strzałem w dziesiątkę". Prosty, przejrzysty, spójny jest idealnym narzędziem do tworzenia stron WWW. Jednak nowe, indywidualne rozwiązania proponowane przez dostawców przeglądarek powodowały, że dokumenty tworzone w kolejnych wersjach są w różny sposób interpretowane przez przeglądarki, a tym samym, nie są zgodne z główną ideologią HTML'a - jednoznaczności sformatowania i wyglądu dokumentów. W miarę jak powstawały kolejne wersje HTML-a, coraz bardziej odbiegały one od siebie, wynikało to z walki dwóch monopolistów: Microsoftu oraz Netscape'a. Proponowanie coraz to nowych rozwiązań, oraz nie udostępnienie ich w przeglądarce konkurenta spowodowało próbę stworzenia języka, który umożliwiałby większe możliwości niż HTML, był jednoznacznie interpretowany przez przeglądarki, a równocześnie był językiem prostym i przyjaznym dla użytkownika.
W tym celu, w lutym 1998 roku, siłami powołanego zespołu w skład którego wchodzili:
Tim Bray (Netscape)
Jean Paoli (Microsoft)
C. M. Sperberg-McQueen (University of Illinois at Chicago)
Opracowano pod patronatem W3C (World Wide Web Consortium) metajęzyk XML (Extensible Markup Language). W opracowanej specyfikacji określono sposób budowy dokumentu, w którym oddzielono strukturę od jego treści. Zastosowanie takiego rozwiązania spowodowało przejrzystość kodu takiego dokumentu, a tym samym umożliwiło w sposób szybki i prosty jego modyfikowanie.
SGML
Kilka słów o przodku XML-a.
Ogólnie rzecz ujmując SGML to zestandaryzowany, nadrzędny język znaczników służący do ujednolicania struktury i formatu wszelkich informacji dających się zapisać w formie dokumentu tekstowego tak, aby dało się je łatwo przenosić i wyświetlać lub drukować w różnych systemach elektronicznego przekazu danych. SGML pozwala na oddzielenie formatu dokumentów od ich treści/struktury w celu zapewnienia ich przenośności oraz elastyczności w manipulowaniu ich zawartością. SGML jest językiem opisanym w międzynarodowym standardzie (ISO 8879:1986) służącym do projektowania opisu dokumentów według określonego zapotrzebowania informacyjnego z użyciem dowolnie dobranego zestawu znaczników i ich składni.
Języka tego używa się praktycznie do dwóch celów:
precyzyjnego definiowania zbiorów znaczników dedykowanych do konkretnych zastosowań - np. HTML-a,
ujednolicania zasad pisania i przekazywania dokumentów tekstowych w obrębie dużych firm lub instytucji.
W obu przypadkach dokument w SGML składa się z dwóch części:
definicji typu dokumentu - czyli definicji wszystkich znaczników i reguł ich stosowania,
właściwego dokumentu - czyli tekstu wraz ze znacznikami.
XML
Idea
Rozszerzalny Język Znaczników, czyli XML, opisuje klasę obiektów danych zwaną dokumentem XML oraz zachowanie programu komputerowego, który przetwarza ją.
XML można także definiować następująco:
XML to sposób zapisywania danych wraz z ich strukturą w dokumentach tekstowych.
XML to standard, opisany w rekomendacji W3C, oparty o standard SGML.
XML to model dokumentu jako drzewa z węzłami - elementami i liśćmi - polami tekstowymi.
XML to język, czyli zbiór dopuszczalnych ciągów znaków. Literami są tu znaki Unicode. Rekomendacja zawiera m.in. gramatykę, która, wraz z pewnymi własnościami opisanymi słownie, definiuje język XML.
XML to metajęzyk, czyli klasa języków zwanych zastosowaniami XML. Są nimi np. XML Schema, XSLT, WML, XHTML, SVG.
XML jest językiem do obróbki i przechowywania dokumentów elektronicznych zawierających takie elementy jak: tekst, zdjęcia, animacje, odnośniki, itp. Zadaniem tego języka jest łatwiejsze składowanie informacji, tworzenie funkcjonalnych rozszerzeń sieci WWW w nowych obszarach, do których inne języki nie nadają się. Język ten także ma pokonać barierę niekompatybilności różnych systemów komputerowych umożliwiając użytkownikom szybsze i łatwiejsze wyszukiwanie oraz wymianę danych naukowych, produktów komercyjnych i wielojęzycznych dokumentów.
Projektanci sformułowali następujące cele dla XML:
Użycie XML powinno być proste w Internecie. Użytkownicy muszą mieć możliwość przeglądania dokumentów XML tak szybko i łatwo jak dokumentów HTML-owych.
XML powinien być korzystny dla szerokiego wyboru różnorodnych zastosowań: tworzenia, przeglądania, analizy składników itp.
Dokumenty XML powinny być czytelne i jasne. Jeśli ktoś nie posiada przeglądarki XML i dostał dokument XML powinien mieć możliwość obejrzenia go w dowolny edytorze tekstowym i rozpracować co oznaczają poszczególne składniki
Projektowanie XML powinno być formalne i zwięzłe
Dokumenty XML powinny być łatwe do tworzenia
XML powinien być kompatybilny z SGML
Definiowanie struktury dokumentu
Często stosowanym rozwiązaniem jest tworzenie dokumentów XML bez dodatkowej definicji struktury. Dokumenty takie same "definiują" swoją strukturę.
XML jednakże udostępnia mechanizm deklaracji typu dokumentu, który definiuje reguły obowiązujące logiczną strukturę . Deklaracja typu dokumentu zawiera lub wskazuje na deklarację znaczników tworzących gramatykę dla dokumentu. Gramatyka taka jest nazwana Definicją Typu Dokumentu (DTD). W deklaracji znaczników można określić zestaw dopuszczalnych typów elementów (nazwy elementów nie wymienione w DTD nie mogą występować w dokumencie), nazwę elementu głównego, dla każdego typu elementu pozwala w pewnym stopniu określić jego dopuszczalną zawartość (treść), dla każdego typu elementu określa jego atrybuty, ich wartości domyślne, obowiązkowość występowania, w pewnym stopniu ich dopuszczalne wartości. Dzięki definicji DTD parser (program który dokonuje analizy danych wejściowych) lub przeglądarka XML potrafi określić, czy dany dokument jest poprawny.
Inną metodą definiowania struktury jest XML Schema. Pełni ona podobne funkcje jak DTD, lecz pozwala na uzyskanie większej kontroli nad regułami poprawności (gramatyki). Innymi mogą być np. Schematron czy RELAX NG.
Przykładem dokumentu, o niezdefiniowanej formalnie strukturze, może być dokument zawierający następujące dane. Przyjrzyjmy się strukturze dokumentu:
Składa się on z deklaracji XML oraz elementu głównego. Deklaracja XML wskazuje na wersję XML (obowiązkowe), sposób kodowania znaków oraz czy dany dokument jest samodzielny, tzn. czy nie zawiera odwołań do źródeł zewnętrznych (opcjonalnie). W każdym dokumencie może być tylko jeden element główny, który zawiera z kolei inne elementy. Większość elementów identyfikuje naturę treści którą otacza. Niektóre elementy mogą być puste. Jeśli element nie jest pusty zaczyna się znacznikiem początkowym, i kończy się znacznikiem końcowym. Atrybuty są wykorzystywane do przypisania par nazwa-wartość do odpowiednich elementów. Atrybuty mogą wystąpić tylko wewnątrz tagów początkowych lub końcowych. Atrybut jest identyfikowany przez nazwę, jego wartością jest tekst jako wartość atrybutu. Pomiędzy tagami początkowym i końcowym znajduje się tekst, który nazwany jest zawartością elementu.
Dokument XML charakteryzuje drzewiasta struktura elementów. Przykład drzewa dla naszych danych.
Takie same informacje można umieścić w dokumencie XML stosując jedną z metod definiowania struktury dokumentu. Weźmy dla przykładu metodę DTD.
DTD pozwala zdefiniować takie własności dokumentu:
zestaw dopuszczalnych typów elementów (nazwy elementów nie wymienione w DTD nie mogą występować w dokumencie),
nazwę elementu głównego,
dla każdego typu elementu pozwala w pewnym stopniu określić jego dopuszczalną zawartość,
dla każdego typu elementu określa jego atrybuty, ich wartości domyślne, obowiązkowość występowania, w pewnym stopniu ich dopuszczalne wartości.
Deklaracja DTD w dokumencie występuje za deklaracją XML a przed elementem głównym. Może w całości być zawarta w dokumencie, może być zawarta w encji zewnętrznej, lub częściowo być w encji zewnętrznej, a częściowo w dokumencie.
Przykładowa deklaracja dla naszego przypadku może wyglądać następująco.
Definiowanie zaczyna się od słowa kluczowego DOCTYPE. Po słowie kluczowym występuje nazwa elementu głównego. Następnie deklarowane są kolejne typy elementów wraz z ich modelami zawartości. Model zawartości elementu to grupa nazw elementów zaopatrzona w notację odzwierciedlającą strukturę (układ) w jakiej mogą występować. Elementy w modelu zawartości mogą być opisane trzema łącznikami (connectors):
przecinek (,) oznacza sekwencję,
ampersand (&) dowolną kolejność,
pionowa kreska (|) alternatywę występowania.
Atrybuty wymagają osobnej deklaracji dla każdego elementu. Deklaracje atrybutów mogą wystąpić w dowolnym miejscu DTD. Po słowie kluczowym ATTLIST (attribute list) następuje nazwa elementu, któremu są przypisywane, następnie lista złożona z trzech części:
nazwa atrybutu,
wyliczenie jego wartości (w nawiasach) lub słowo kluczowe definiujące typ wartości,
wartość domyślna lub słowo kluczowe dotyczące tej wartość
omówienie:
+ jeden lub więcej #PCDATA - zawartość tekstowa
* zero lub więcej ID - nazwa unikalna
, sekwencja
| alternatywa
? opcjonalny
Oprócz elementów i atrybutów można deklarować także notacje i różnego rodzaju encje.
Każdy dokument XML musi być poprawny składniowo (well-formed) - być zgodny z gramatyką i spełniać założenia zawarte w specyfikacji.
Oznacza to między innymi:
dokument ma dokładnie jeden element główny,
elementy muszą mieć znacznik otwierający i zamykający,
nie ma zachodzących na siebie elementów,
encje, do których są odwołania, są zadeklarowane,
każdy element może mieć co najwyżej jeden atrybut o danej nazwie,
wartości atrybutów są zamknięte w apostrofach lub cudzysłowach.
Dodatkowo dokument XML może być poprawny strukturalnie (valid) - być zgodny z definicją struktury (jeśli nie jest powiedziane inaczej, chodzi o DTD).
3. Wizualizacja dokumentu
Zakodowanie dokumentu to dopiero połowa sukcesu, należy jeszcze w jakiś sposób umożliwić jego wizualizację.
Jeżeli chcemy obejrzeć zawartość dokumentu np. w przeglądarce musimy przekształcić dokument XML-owy w dokument HTML-owy. Istnieją gotowe programy, zwane procesorami XML-a, które umieją przekształcić (ang. transform) dokument XML-owy na inny dokument tekstowy. Procesor XML służy do odczytania zawartości dokumentu XML i zapewnienia dostępu do jego zawartości i struktury. Przykładowym dokumentem wyjściowym może być np. inny dokument XML-owy, HTML-owy, WAP-owy lub "zwykły" plik tekstowy bez znaczników. Do tego aby procesor XML-a mógł wykonać swoje zadanie wystarczy "podać" mu zestaw reguł, według których ma przekształcić zadany dokument XML-owy na inny. Wymieniony wyżej zestaw reguł definiowany jest w tzw. XML-owym arkuszu stylów - XSL (ang. XML Language Stylesheet).
XSL (Extensible Stylesheet Language ) jest językiem pozwalającym na opis transformacji dokumentów XML'owych jaki i ich sposobu formatowania.
Wyróżnia się dwie części języka XSL: XSLT (XSL Transformations) zawierający zestaw instrukcji umożliwiających przekształcenie dokumentu XML'owego w nowy, zawierający interesujące nas informacje oraz XSLF (XSL Formatting) zawierający zestaw znaczników pozwalających określić sposób prezentacji dokumentu.
Proces transformacji dokumentu składa się z następujących faz:
parsowanie oryginalnego dokumentu XML'owego
parsowanie dokumentu XSLT (który również jest poprawnym dokumentem XML'a) zawierającego opis transformacji jakie należy wykonać na oryginalnym dokumencie XMLa
utworzenie wynikowego dokumentu XML
interpretacja znaczników opisujących sposób formatowania i prezentacji dokumentów oraz wysłanie wyniku do właściwego medium
Cała rzecz opiera się na automatycznym poumieszczaniu danych pobranych z dokumentu XML, w wynikowym pliku. XSLT przekształca drzewo XML w oparciu o dopasowywanie wzorców (pattern matching). Kolejno dopasowywane do wzorców elementy drzewa tworzą nowe drzewo - drzewo dokumentu wynikowego. Po utworzeniu dokumentu wynikowego następuje inetrpretacja znaczników opisujących sposób formatowania i prezentacji dokumentu oraz wysłanie wyniku do właściwego medium.
Podstawowy element każdego arkusza XSL to „xsl:stylesheet”. Jego pierwszym, wymaganym w zależności od parsera atrybutem jest „version”. Ma on także atrybut xmlns:xsl, który odpowiada za lokalizację dokumentu z przestrzenią nazw dla XSLT.
Wewnątrz głównego elementu arkusza mogą znajdować się podelementy, czyli sekcje „xsl:template”. Wybierają one określone przez atrybut „match” węzły przetwarzanego dokumentu źródłowego. Wartością parametru „match” w pierwszej sekcji jest „/”, co oznacza korzeń dokumentu. Można sobie wyobrazić, że sekcja ta ustawia proces przekształcania na sam początek drzewiastej struktury dokumentu. Sekcja ta zawiera tylko dyrektywę xsl:apply-templates. Spowoduje ona, że parser zatrzyma obsługę bieżącej sekcji i zacznie szukać nowej, odpowiadającej węzłom-dzieciom bieżącego taga. Kiedy wszystkie węzły-dzieci zostaną przetworzone, parser wróci do pierwotnej sekcji. Oczywiście węzły-dzieci mogą zawierać własne węzły-dzieci, które również mają własne sekcje.
Deklaracja w pierwszej sekcji powoduje przejście do sekcji elementu „grupa” (elementu głównego dokumentu źródłowego) i przetworzenie jej zawartości. W sekcji tego elementu widzimy zawarte znaczniki HTML-owskie, które decydować będą o wyglądzie dokumentu źródłowego w przeglądarce. Sekcję tą rozpoczynają tagi html i body, które będą interpretowane jako otwarcie dokumentu HTML oraz zdefiniowanie ciała dokumentu. Następne instrukcje zamieszczają w nim odpowiednio sformatowaną tabele a w niej kolejno wiersz i pola. Kolejnym znacznikiem jest tag zamknięcia wiersza, a po nim deklaracja przerwania przetwarzania. Parser w tym miejscu przechodzi do przetwarzania kolejnej sekcji, która opisuje element o nazwie „student”. Sekcja rozpoczyna się od HTML-owskiego tagu tworzącego nowy wiersz a w nim pola. Pojawia się także nowa instrukcja xsl:value-of o parametrze select. Określa on, co ma zostać pobrane. W naszym przypadku pobierane będą wartości, które charakteryzujące elementy nazwisko, imie i mail. Parser po przetworzeniu tych danych napotyka po raz pierwszy instrukcje zakończenia sekcji. Następuje powrót do sekcji pierwotnej i dalsze jej przetwarzanie. Oznacza to zamknięcie tabeli, dokumentu html i powrót do sekcji wyższej. Sekcja ta zawiera już tylko instrukcję zakończenia. W tym momencie parser odczytując ostatni rozkaz kończy przetwarzanie dokumentu. Korzystając z parsera np. przeglądarki Netscape ujrzymy wynik przetwarzania.
Rodzina XML
Rodzinę języków, metajęzyków związanych z XML można podzielić na trzy główne grupy.
W grupie języków określających strukturę dokumentu można wyróżnić:
DTD - Document Type Definition
XML - Schema
RELAX NG
Językami służącymi do linkowania dokumentu XML z innymi są mi. in.
Xlink (XML Linking Language)
Xpath (XML Path Language)
Określają one standardowy sposób do reprezentacji powiązań pomiędzy zasobami. XLink opisuje jak skojarzyć dwa lub więcej zasobów. Xpath rozwiązuje problem jednoznacznego adresowania fragmentów struktury dokumentu XML.
Inną grupą języków związanych z XML jest grupa umożliwiająca wizualizację oraz interpretację dokumentów XML. Można wyróżnić:
XSL - Extensible Stylesheet Language
XSLT - Extensible Stylesheet Language Transforming
SAX - Simple API for XML
DOM - Document Object Model
Wymienione powyżej grupy nie wyczerpują wszystkich dostępnych obecnie języków, z uwagi na rosnącą popularność tego języka pojawiają się coraz to nowe.
4. Zalety stosowania standardu XML
Łatwość składowania, weryfikacji i aktualizowania przechowywanych informacji
Ze względu na dużą prostotę tego standardu w porównaniu z dotychczasowymi rozwiązaniami (opartymi głównie na modelu hurtowni danych) oraz powszechną dostępność narzędzi autorskich opracowanie kompletnego systemu do zarządzania informacją w przedsiębiorstwie może być tańsze niż dotychczas. Wszystkie niezbędne komponenty (parser XML, edytory, rozszerzenia serwera WWW) oferowane są bezpłatnie w Internecie, podobnie jak wyczerpujące dokumentacje dotyczące samego języka.
Elastyczność i skalowalność tworzonych rozwiązań
Ponieważ XML jest otwartym standardem i nie opiera się na konkretnej implementacji programowej, opracowany system może być łatwo (i relatywnie tanio) rozbudowywany w miarę potrzeb i dostępnych środków. Środowisko oparte na technologii XML może łączyć oprogramowanie różnych producentów działające na różnych platformach systemowych i sprzętowych.
Łatwość wymiany informacji z innymi ośrodkami
Możliwość dokładnego, a przy tym elastycznego definiowania struktury informacyjnej dokumentów XML przeznacza temu formatowi funkcję nośnika informacji biznesowej między firmami i organizacjami. Standard ten daje szansę budowy szybkich i niezawodnych kanałów informacyjnych w środowiskach rozproszonych, takich jak Internet i sieci intranetowe.
Szerokie możliwości publikowania informacji
Dzięki oddzieleniu treści (zapisanej w formacie XML) od formy dokumentu (zapisanej w arkuszach XSL) oraz bardzo dużym możliwościom przekształcania treści możliwe jest zbudowanie elastycznego serwisu informacyjnego adresowanego do szerokiego grona odbiorców, posługujących się różnymi językami i mających różne typu przeglądarek internetowych - od komputera stacjonarnego do telefonu komórkowego)
Skuteczne przeszukiwanie istniejących zasobów informacyjnych
XML daje duże możliwości przeszukiwania, sortowania i przekształcania danych tekstowych. Biorąc pod uwagę obecne trendy w rozwoju technologii internetowych (m.in. wprowadzenie języka XHTML jako następcy HTML 4.0) należy przypuszczać, że niedługo pojawią się wyszukiwarki internetowe znacznie przewyższające dokładnością obecne - właśnie za sprawą narzędzi XML-owych.
5. Przykłady zastosowania
Powodem dużego zainteresowania XML-em są jego możliwości przechowywania i przetwarzania danych biznesowych. Przemawia za nim uniwersalność i elastyczność, pozwalająca na wykorzystanie go w dowolnym niemal zastosowaniu. W praktyce jednak dominują dwa trendy rozwoju tej technologii; pierwszy to systemy wymiany informacji typu Bussines -To - Bussines. Za pomocą XML-u możliwa jest wymiana informacji między różnymi ośrodkami informatycznymi (firmami), bez ustalania wspólnego formatu danych. Ich automatyczną konwersją zajmują się arkusze XSL.
Drugim dużym obszarem wykorzystania platformy XML są serwisy internetowe adresowane do szerokiego kręgu odbiorców. Wszystkie publikowane w witrynie informacje przechowywane są w dokumentach XML, następnie automatycznie konwertowane (przy użyciu arkuszy XSL) na odpowiedni format docelowy - może nim być plik HTML lub np. WML (opisujący strony dla urządzeń przenośnych takich jak telefony komórkowe). Cały proces odbywa się po stronie serwera, dzięki czemu publikowane informacje stają się dostępne dla szerokiego grona użytkowników - bez względu na wykorzystywane przez nich ur ądzenia (może to być przeglądarka internetowa, zestaw WebTV czy telefon komórkowy).
Inne zastosowania:
wymiana dokumentów elektronicznych,
przekazywanie informacji sterujących,
utrzymywanie danych konfiguracyjnych oprogramowania,
formatowanie dokumentów.
XML w konkretnych zastosowaniach.
Narzędzia
Do edycji
Infox Free 1.0 — http://pb.wckp.lodz.pl/
XML Spy — http://www.xmlspy.com/
Stylus Studio
Allaire HomeSite 4.5
HoTMetaL 6.0
Parsery
XP — http://www.jclark.com/xml/xp/index.html
MSXML
Przeglądarki
Internet Explorer 5.0
Netscape Navigator
Linki
http://www.mierzejewski.net
http://www.pckurier.pl/webmaster/1999/grudzien/dmoch/xmlxsl.html
http://www.pcworld.pl/artykuly/6762.html
http://www.pcworld.pl/artykuly/20365_1.html
http://pb.wckp.lodz.pl/xml/xsl/index.html
http://pl.wikipedia.org/
http://www.esupplychain.pl/polish/xml.html
http://2du.pl/
http://www.e-c.zie.pg.gda.pl
http://webmaster.pckurier.pl
http://www.xhtml.b7.pl
http://glenik.webpark.pl
http://www.qdnet.pl
http://www.wszpwn.com.pl
http://webmaster.helion.pl