Kierunki Rozwoju XML

Codziennie pojawia się kilka nowości z dziedziny XML: nowe produkty, propozycje mniej i bardziej "otwartychÓ standardów, inicjatywy głównych firm programistycznych i ich konsorcjów. Dzieje się tak, ponieważ XML staje się uniwersalnym narzędziem do wymiany danych między systemami informatycznymi.

Codziennie pojawia się kilka nowości z dziedziny XML: nowe produkty, propozycje mniej i bardziej "otwartychÓ standardów, inicjatywy głównych firm programistycznych i ich konsorcjów. Dzieje się tak, ponieważ XML staje się uniwersalnym narzędziem do wymiany danych między systemami informatycznymi.

Dzięki temu, że w XML można opisać niemal dowolny typ informacji (byleby tylko można było określić pewną strukturę dokumentu), język ten zastępuje stopniowo inne standardy służące do wymiany danych. XML jest językiem opartym na znacznikach. To oznacza, że w dokumencie tekstowym są zdefiniowane specjalne ciągi znaków wyróżniające określone fragmenty.

Powtórka ze znaczników

Historia języków opartych na znacznikach sięga początków lat 60., kiedy to w amerykańskich sądach coraz częściej pojawia- ły się problemy związane z wy- szukiwaniem precedensowych wyroków. Prawnicy nie dysponowali żadnym systemem indeksowania akt - informacji poszukiwano ręcznie. Nie istniał system katalogowania, który pozwoliłby grupować podobne sprawy sądowe. W 1969 r. IBM rozpoczął projekt, którego efektem było powstanie specyfikacji GML i SGML (Standard Gene-ralized Markup Language) - języków dostosowanych do tworzenia opisów dowolnych doku- mentów.

SGML wprawdzie ułatwił opis dokumentów prawniczych, ale nigdy nie wykorzystano go w szerokim zakresie. Nie zrobił kariery takiej, jak powstały w 1989 r. HTML, definiujący ciąg znaczników określających formatowanie strony. Chyba nikt wtedy nie przypuszczał, że w dziedzinie języków opartych na znacznikach pojawi się inny rewolucyjny pomysł. Tak się jednak stało: w 1998 r. konsorcjum W3C ogłosiło pierwszą propozycję języka XML (eXtensible Markup Language).

HTML definiuje ustalony zbiór znaczników. Można zmieniać pewne parametry, ale nie jest możliwe dodanie nowego znacznika czy zdefiniowanie połączenia między atrybutami. SGML pozwala na samodzielną definicję znaczników czy określanie ich roli w dokumencie. Jego twórcy opracowali jednak język zbyt uniwersalny, który wprawdzie ma olbrzymie możliwości i doskonale nadaje się do opisu, ale nie do wymiany informacji. XML jest złotym środkiem. Jego twórcy pogodzili prostotę HTML z zaawansowanymi możliwościami SGML. XML dostosowano do wymagań stawianych przez nowoczesną sieć WWW.

Alternatywy dla DTD

Poprawny dokument XML (well-formed) składa się z dwóch elementów: definicji DTD (Document Type Definition) i właściwych danych zapisanych zgodnie ze specyfikacją określoną w DTD. Należy podkreślić, że zdefiniowano także tzw. prawidłowy dokument, który nie zawiera DTD, a przy tym jest poprawny składniowo i można dla niego utworzyć definicję DTD.

DTD określa gramatykę bezkontekstową (CFG), stosowaną w dokumencie XML. Grama- tyka może być rekurencyjna. Istnieje możliwość np. zdefiniowania dokumentu XML, reprezentującego drzewo binarne dowolnej głębokości. DTD, oprócz roli znaczników i połączeń między nimi, określa ciąg atrybutów. Można definiować atrybuty z zaznaczeniem, że niektóre z nich muszą być wypełnione, można też tworzyć typy złożone. Niestety, jedynym typem prostym jest #PCDATA, czyli w uproszczeniu ciąg znaków. Nie ma możliwości nałożenia wymogu, by konkretny element dokumentu był wartością liczbową.

Trwają prace nad stworzeniem alternatywnego dla DTD sposobu definicji struktury dokumentu. Jedną z propozycji jest XML Schema, inną DCD. Twórcy obu rozwiązań próbują zdefiniować specjalny język programowania, w którym mogłyby być wyrażone więzy pomiędzy polami dokumentu XML. Z pewnością te rozwiązania w przyszłości zastąpią DTD.

Na uwagę zasługuje to, że tylko część najnowszych propozycji dotyczących XML wynika z ustaleń dokonanych w ramach W3C - organizacji określającej standardy World Wide Web. Znaczna część rozszerzeń powstaje w wyniku działania grup ludzi czy firm, które wykorzystują XML w swoich pracach. W ten sposób powstał inny sposób określania gramatyki - Document Structure Description, propozycja AT&T i BRICS's.

DSD przypomina trochę XML Schema, ale jest znacznie prostszy. Parser DSD - dostępny na zasadach open source - stanowi tylko dodatkowy etap przetwarzania przed właściwym parsowaniem XML. DSD "przegląda" dokument i zgodnie z definicją struktury sprawdza, czy określone związki są zachowane. W przypadku braku pewnych wartości, o ile przewiduje je schemat, przypisuje wartości domyślne. W efekcie powstaje poprawny dokument XML.

Wyświetlanie dokumentów

Do najczęściej podkreślanych zalet dokumentu XML należy całkowite oddzielenie treści od sposobu prezentacji. Dokument XML, aby był prawidłowo wyświetlony, musi być odpowiednio przekształcony. Zwykle w tym celu jest wykorzystywany język XSL.

XSL jest specjalnym językiem, w którym określone są transformacje odpowiednich elementów XML. Do wyboru grupy elementów służy język XPath. Jest to pewnego rodzaju wyrażenie regularne, które jest porów- nywane z dokumentem XML. W przypadku gdy dany fragment dokumentu XML pasuje do wyrażenia XPath, może być wykonana odpowiednia transformacja przy użyciu języka XSLT.

XSLT może przekształcać dane z dokumentu XML, sortować je czy filtrować, wyświetlając tylko niektóre informacje. Gdy parser XML jest dostępny po stronie klienta, to wówczas siecią przesyłane są tylko "surowe" dane i pewne zasady dotyczące formatowania. Właściwe przetwarzanie danych do postaci wyjściowej odbywa się w przeglądarce. Jeżeli zaś parser XML działa po stronie serwera, to można obsłużyć różne urządzenia wyświetlające dane - od urządzeń zgodnych z WAP, po komputery PalmPilot. Można też dostarczać klientowi przeformatowaną tabelkę HTML. Należy podkreślić, że konsekwencją takiej organizacji technologii XML jest fakt, że dane początkowe (plik XML) powstają tylko raz.

MSXML 3.0 to nowy parser Microsoftu, który jest w pełni zgodny z zaleceniami W3C, XSLT 1.0 i XPath 1.0. Innym parserem zgodnym z zaleceniami W3C jest Xalan, napisany w Javie (początkowo przez IBM, obecnie oferowany jako projekt open source). Jest także dostępna wersja alfa tego parsera, napisana w C++.

Odsyłacze do wielu dokumentów

W plikach XML można tworzyć odsyłacze. Służą do tego dwa mechanizmy: XPointer i XLink.

XPointer definiuje składnię, pozwalającą odwoływać się do konkretnego zasobu (URI). Może to być zarówno fragment pliku XML, jak i plik GIF, znajdujący się na innym serwerze, czy dowolny obiekt, do którego określono prawidłowe odwołanie (np. namespace). XPointer może być zarówno odwołaniem "bezwzględnym", jak i względnym, tzn. odnoszącym się do miejsca, w którym XPointer się znajduje.

XLink odpowiada natomiast pojęciu odsyłacza z HTML, z tym że ma znacznie większe możliwości. Odsyłacz XLink może wskazywać wiele miejsc docelowych. Istnieje możliwość tworzenia połączeń "dwukierunkowych", co oznacza, że z miejsca "docelowego" odwołujemy się do zasobu "źródłowego". Co więcej, połączenie nie musi wskazywać bezpośrednio na poszukiwany dokument. Specyfikacja XLink przewiduje, że dana informacja może być poszukiwana w kolejnych połączonych dokumentach.

XLink zawiera mechanizm pozwalający określać "stan" dokumentów. Można np. automatycznie tworzyć systemy adnotacji czy komentarzy, nawet gdy opisywany dokument jest dostępny w trybie "tylko do odczytu". XLink pozwala także określać działania związane z kolejnymi odsyłaczami, np. reguła, że dokument ma być aktywowany w tym samym miejscu lub że wymaga specjalnego sposobu wyświetlania. Ponadto w XLink można definiować tzw. zasoby lokalne, które są zawsze dostępne.

Przetwarzanie na trzy sposoby

Wydawać by się mogło, że XML jest doskonałym narzędziem do przetwarzania wszelkiego rodzaju danych. Jednak w przypadku relacyjnych baz danych wykorzystanie XML nie jest powszechne, mimo że większość baz może tworzyć wyniki zapytań w postaci XML. MS SQL 2000 nawet traktuje poprawnie sformatowane pliki XML, takie jak tabele i pozwala, by tego typu dane były używane w kwerendzie.

W3C pracuje nad specyfikacją języka kwerend XQL, która pozwoliłaby zadawać zapytanie w stylu SQL, w wyniku którego użytkownik otrzymywałby dokument zawierający np. iloczyn kartezjański dwóch różnych zestawów danych. Na razie nie ma implementacji XQL, a i standard nie jest w pełni zdefiniowany. Obecnie istnieją trzy główne propozycje rozwiązań: XML-QL, YATL i Lorel. Wszystkie mają zbliżone możliwości, jednak wielu analityków za najbardziej funkcjonalną uważa XML-QL.

Jeżeli zachodzi potrzeba zadania zapytania SQL do dokumentów XML, to najpierw dane wczytywane są do bazy danych, a następnie generowany jest nowy dokument XML za pomocą mechanizmów konkretnego motoru. Warto wspomnieć, że tak naprawdę pewnym językiem zapytań jest Xpath, który pozwala np. wyszukiwać fragmenty informacji pasujące do zadanego wyrażenia. Tyle, że to wyrażenie przypomina raczej wzorce znane z Perla niż kwerendy SQL.

Interfejsy programistyczne

Oprócz formatu XML (DTD, XPath itp.) w specyfikacjach proponowanych przez W3C zdefiniowano także API dla programistów. Do przetwarzania XML dostępne są dwa, zupełnie różne rozwiązania.

XML DOM to obiektowy interfejs, pozwalający odwoływać się do poszczególnych elementów dokumentu XML. Progra- mista, posługując się DOM, może "przejść" po strukturze drzewiastej XML, zadać zapytanie XPath, które zwróci mu wybrany fragment dokumentu, czy dodawać własne atrybuty. Jednak wszystkie te operacje wymagają wczytania do pamięci całego dokumentu XML.

Określone są trzy główne poziomy zgodności z DOM. Poziom 1, gdzie jest zdefiniowane API do poruszania się i manipulowania zawartością dokumentu XML. Poziom 2, który określa m.in. model zdarzeń, wsparcie dla namespace i style. Planowany poziom 3 ma przede wszystkim określać zasady zapisu i wczytywania XML i DTD. Większość parserów XML jest zgodna z poziomem 2. Z tym że niemal każdy parser wprowadza do modelu DOM własne rozszerzenia.

Drugim sposobem przetwarzania dokumentu jest SAX (Simple API for XML). Zamiast wczytywać cały dokument i budować drzewo DOM, SAX pozwala określić procedury obsługi zdarzeń wyzwalanych w momencie, gdy parser XML napotka określony znacznik

W ten sposób SAX ma znacznie mniejsze wymagania. Bu- dowa struktury DOM może wy-magać dużej ilości pamięci. Obecnie dostępna jest specyfikacja SAX 2.0 (implementowana m.in. przez parser MSXML 3.0 i Xerces (open source). Jeżeli zachodzi konieczność modyfikowania dokumentu, to aplikacja nie może korzystać z SAX. Wersja 2.0 standardu określa tylko mechanizmy, pozwalające odczytywać informacje.

Nieco innym API dostępnym dla programistów jest SOAP. Jest to zaproponowany przez Microsoft sposób przesyłania żądań wywołania funkcji, a także otrzymywania wyników przy użyciu sieci internetowej. SOAP przesyła informacje w postaci tekstowej, stosując ten sam protokół HTTP, co przeglądarki. Komunikat jest kodowany przy użyciu XML. SOAP jest więc swego rodzaju protokołem, który może konkurować z rozwiązaniami typu IIOP czy DCOM. Idealny jest w sytuacji, gdy firma chce udostępnić usługi swoim partnerom biznesowym. Natomiast w obecnym standardzie SOAP nie ma możliwości utworzenia "nierozerwalnego" połączenia pomiędzy serwerem a klientem.

Inne standardy

Wedłud XML jest tworzony nowy standard HTML, tzw. XHTML. W rzeczywistości XHTML to specjalny dokument DTD, opisujący składnię HTML. Planowane są trzy wersje XHTML: XHTML Transitional (odpowiadający HTML 4.0), XHTML Strict (gdzie w pełni rozdzielony zostałby wygląd dokumentu od właściwych danych) i XHTML Frameset.

Należy podkreślić również kwestię związaną z bezpieczeństwem rozwiązań opartych na XML. Pliki XML są plikami tekstowymi i mogą być przesyłane tak jak pliki HTML za pomocą protokołu HTTP/HTTPS. Dzisiaj jest to ogromna zaleta. Wydaje się jednak, że w miarę wzrostu popularności XML, nie tylko jako medium wymiany informacji, ale także jako narzędzia do tworzenia aplikacji rozproszonych, zmieni się sposób zabezpieczania serwerów internetowych - nie wystarczy proste filtrowanie informacji wg numerów portu.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200