Reklama
Dzisiaj jest 10 stycznia 2025 r.
Chcę dodać własny artykuł
Reklama
Reklama
Reklama

XSL Transformations


XSLT (, ) – oparty na XML język przekształceń dokumentów XML. Pozwala na przetłumaczenie dokumentów z jednego formatu XML na dowolny inny format zgodny ze składnią XML (np. na stronę WWW XHTML, wzór matematyczny MathML lub dokument biurowy ODF), jak również na zwykły HTML i czysty tekst . XSLT jest kompletny w sensie Turinga.
Dzięki dużej sile wyrazu, łatwości implementacji i powszechnemu stosowaniu XML jako standardu dla zapisu informacji, XSLT jest uniwersalnym narzędziem znajdującym zastosowanie w wielu rodzajach oprogramowania. Najbardziej popularne to generowanie stron WWW w serwisach internetowych oraz konwersja pomiędzy alternatywnymi formatami np. w pakietach biurowych.
XSLT jest rozwijany przez W3C jako część rodziny języków XSL (obok XPath i XSL-FO). Powstał pod wpływem języków funkcyjnych oraz języków opartych na dopasowywaniu wzorców (ang. ) jak awk. Jego bezpośrednim poprzednikiem jest DSSSL, odpowiednik XSLT dla SGML.
Najnowszą wersją rekomendacji XSLT jest 2.0, ale ze względu na jej powolne rozpowszechnienie ( brak obsługi w Xalanie, czy „fabrycznie” na platformie .NET) rekomendacja 1.0 jest nadal powszechnie wykorzystywana.

Reklama

Omówienie

XSLT przypomina języki funkcyjne – arkusze XSLT zbudowane są z reguł opisujących, w jaki sposób zamienić poszczególne elementy wejściowego XML. Warsztat programisty XSLT obejmuje m.in. instrukcje sterujące, możliwość definicji własnych funkcji (tzw. szablonów nazwanych), funkcje wbudowane realizujące na przykład sortowanie. Do znajdowania i wskazywania elementów źródłowego XML używany jest XPath.

Składnia i semantyka

Arkusze XSLT są poprawnymi dokumentami XML. Elementem głównym jest xsl:stylesheet. Prefiks xsl: w używanych w tym dokumencie nazwach elementów oznacza jedynie, że należą one do przestrzeni nazw XSLT – tak więc xsl:stylesheet należy czytać jako element stylesheet z przestrzeni nazw XSLT.

Reklama

Algorytm transformacji

Każdy procesor XSLT posługuje się przedstawionym poniżej w skrócie algorytmem.
1. Przygotowanie do transformacji:
* Parsowany jest arkusz XSLT oraz wejściowy XML oraz budowane są ich drzewa. Uwzględniony jest fakt, że arkusz XSLT może się składać z wielu plików (instrukcje xsl:include i xsl:import).
* Z dokumentów usuwane są nadmiarowe białe znaki.
* Do drzewa XSLT dołączane są standardowe reguły.
2. Transformacja:
* Tworzony jest główny element drzewa wyjściowego (root node).
* Główna część: przetwarzane są elementy drzewa wejściowego, począwszy od elementu głównego.
* Zwracane jest drzewo wyjściowe, w formacie określonym przez xsl:output.
Każdy element drzewa wejściowego przetwarzany jest następująco:
* Znajdowany jest najlepiej pasujący szablon. Ze wszystkich szablonów pasujących do przetwarzanego elementu (każdy szablon nienazwany ma wzorzec – atrybut match) wybierany jest ten o najwyższym priorytecie (obliczonym na podstawie atrybutu priority, postaci wzorca oraz pozycji w dokumencie – elementy zaimportowane mają zawsze najniższy priorytet).
* Znaleziony szablon jest aplikowany. Elementy szablonu znajdujące się w przestrzeni nazw XSLT (zazwyczaj te z prefiksem xsl:) traktowane są jak instrukcje i odpowiednio interpretowane. Reszta jest zwyczajnie kopiowana do drzewa wynikowego.
* Jeśli w szablonie umieszczona jest instrukcja xsl:apply-templates, procesor przechodzi w tym miejscu do rekurencyjnego przetwarzania listy elementów wskazanych atrybutem select lub – jeśli go brak – wszystkich dzieci aktualnego elementu. Jeśli w szablonie brak jest instrukcji xsl:apply-templates, żadne z elementów aktualnego poddrzewa (dzieci i ich następniki) nie są w tym miejscu dopasowywane (przetwarzane). Należy jednak pamiętać, że mogą zostać przeznaczone do dopasowania (za pomocą instrukcji xsl:apply-templates) z innego szablonu.

Przykład

Powiedzmy, że procesor XSLT transformuje poniższy fragment dokumentu XML:



bum
po bum



mając do dyspozycji następujące reguły:


(szablon 1)


(szablon 2)


(szablon 3)


Produktem transformacji będzie

(szablon 2) po bum

* Brak reguły dla cokolwiek, użyta więc będzie standardowa każąca przetwarzać wszystkie dzieci po kolei.
* Do DzieckoCokolwiek pasują wszystkie 3 reguły, jednak pierwsza posiada nadany niski priorytet -1, trzecia zaś postać wzorca otrzyma priorytet -0,5 natomiast druga 0. Wybrana więc zostanie druga.
* Wewnątrz niej brak instrukcji xsl:apply-templates, tekst bum zostaje więc pominięty.
* Następnie przetwarzane jest drugie dziecko cokolwiek czyli tekst po bum. Brak dla niego reguły, stosowana więc jest standardowa.

Zastosowanie w tworzeniu stron WWW

XSLT jest szeroko stosowany przy tworzeniu stron WWW. Pozwala na oddzielenie warstwy informacji od warstwy prezentacji, które w HTML-u są mocno pomieszane. Procesory XSLT wbudowane są w nowoczesne przeglądarki WWW.

Przykład

Załóżmy, że mamy do przedstawienia jakąś książkę. Możemy informacje o niej zapisać w formacie XML:




Pobawmy się w webmasterów
123456789
Jeszcze nieznany


Rozdział 1
Rozdział 2
Rozdział 3



Powyżej zawarte są wszystkie informacje, jakie posiadamy o tej książce. Jednak aby wyświetlić ją w przeglądarce, potrzebne są jeszcze instrukcje, jak to zrobić. Do tego służy dokument XSLT:






Książka „<xsl:value-of select="./id/Tytuł"/>”





Dane identyfikacyjne książki

Tytuł:
ISBN:
Autor:

Spis treści






Aby transformacja zadziałała, zakładając, że szablon znajduje się w pliku książka.xsl, w dokumencie XML dodajemy linijkę





Przypisy

Linki zewnętrzne

* [http://www.w3.org/TR/xslt Rekomendacja XSLT 1.0]
* [http://www.w3.org/TR/xslt20/ Rekomendacja XSLT 2.0]
Kategoria:XML
Kategoria:Aplikacje XML
Kategoria:Języki znaczników

Reklama
Reklama