praca dyplomowa inżynierska
Język XSL (Extensible Stylesheet Language) stanowi uzupełnienie XML. W założeniu ma on służyć do formatowania dokumentów w XML (podobnie jak CSS dla HTML). Może być on również używany do przekształcania dokumentów XML na dokumenty HTML. XSL nie tylko umożliwia definiowanie wyglądu, ale także selekcj ę, dokonywanie operacji oraz sortowanie danych. XSL definiuje szablon końcowy oraz określa w jaki sposób elementy źródłowe mają być przekształcone i w jaki sposób umieszczone w dokumencie HTML. Aktualnie ogólnodostępne przeglądarki nie potrafią interpretować opisu formatowania wyrażonego w XSL. Za to doskonale radzą sobie z prezentacją dokumentów HTML. Zatem dokumenty XSL przetwarzane zostają do postaci HTML.
Wg najnowszego podziału, wyróżnia się cztery części języka:
- XSLT (XSL Transformations) – zawiera zestaw instrukcji umożliwiających przekształcenie dokumentu XML’owego w nowy dokument,
- XPATH – zawiera język do adresowania części dokumentu XML.
- XSL (Extensible Stylesheet Language) – dawny XSL-FO, słownik opisujący formatowanie,
- XQuery (XML Query Language) – język zapytań.
„Prezentacja dokumentu z użyciem XSL polega na transformacji drzewa hierarchii znaczników dokumentu wejściowego na drzewo tzw. formatting objects, którym przypisano określone sposoby prezentacji. Przeglądarka służąca do prezentacji powinna zrozumieć język owych obiektów formatujących.”[18]
Proces transformacji dokumentu:
- parsowanie oryginalnego dokumentu XML’owego,
- parsowanie dokumentu XSLT – poprawny dokument XML’a, zawiera opis transformacji jaką należy wykonać na oryginalnym dokumencie XML’a,
- utworzenie wynikowego dokumentu XML, który zawiera znaczniki z XMLF,
- interpretacja znaczników opisujących sposób formatowania i prezentacji dokumentów.
Dla XSLT istnieje wiele implementacji kompilatorów, które pozwalają na praktyczne skorzystanie z możliwości jakie oferuje XML+XSLT. Transformacje opisywane przez XSLT są zapisywane jako poprawny dokument XML, który może zawierać zarówno elementy należące do specyfikacji języka XSL, jak i elementy użytkownika. Transformacja wyrażona w XSLT zawiera zbiór reguł opisujących przekształcenie jednego drzewa XML w nowe. Reguły te wyrażane są przy pomocy wzorców, które składają się z części pozwalającej na sprawdzenie czy dana reguła powinna zostać zastosowana do bieżącego elementu drzewa XML i z zawartości wzorca czyli tego co ma się pojawić w wynikowym drzewie po napotkaniu pasującego elementu drzewa. Elementy dokumentu XML są kolejno dopasowywane do wzorców i w ten sposób, poruszając się w głąb źródłowego drzewa, tworzone jest drzewo dokumentu wynikowego.
XSLFO jest skomplikowanym językiem o dużych możliwościach, zawierającym ponad 50 różnych „obiektów formatujących”. Obiekty te można formatować wykorzystując ponad 200 różnych właściwości, takich jak: kroje, odmiany i wielkości pisma, odstępy, kolory itp.
W dokumencie XSLFO elementy i atrybuty nie opisują struktury dokumentu, a wyłącznie jego postać graficzną. Różni go to od arkuszy stylów CSS, w których polecenia formatujące są (zwykle) oddzielone od dokumentu, którego dotyczą. XSLFO pod tym względem przypomina raczej tradycyjne systemy przetwarzania tekstu takie jak TeX. Dokument XSLFO winien być generowany automatycznie na podstawie danych zapisanych w innym formacie (np. „strukturalnego” dokumentu XML lub informacji z relacyjnej bazy danych), a po wykorzystaniu usunięty. Format XSLFO nie jest przeznaczony ani do przechowywania informacji, ani do jej wymiany.
W typowym scenariuszu dokument XSLFO jest tworzony za pomocą odpowiedniego arkusza stylu XSLT. W poniższym przykładowym fragmencie arkusza XSLT element para wyjściowego dokumentu jest transformowany do elementu fo:block:
Rysunek 11. Typowy scenariusz przetwarzania dokumentu XSLFO
Cały dokument XSLFO zawarty jest wewnątrz elementufo:root, który składa się z:
- jeden elementfo:layout-master-set zawierający szablony określające wygląd poszczególnych stron oraz sekwencji stron,
- zero lub więcej elementów fo:declarations,
- jeden lub więcej elementówfo:page-sequance zawierających treść formatowanego dokumentu wraz z opisem jego sformatowania i podziału na strony.
Treść formatowanego dokumentu znajduje się wyłącznie wewnątrz elementów fo:page-sequence, podczas gdy elementfo:layout-master-set zawiera definicje szablonów.
[18] „JęzykXSL”, Tomasz Traczyk, IAilS, Politechnika Warszawska, ia.pw.edu.pl/~ttraczyk/pdf/ploug2000_art.pdf