XSL Transformations
XSLT (ang. XSL Transformations, Extensible Stylesheet Language Transformations, w wolnym tłumaczeniu Przekształcenia Rozszerzalnego Języka Arkuszy Stylów) – oparty na XML-u 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-a (np. na stronę WWW XHTML, wzór matematyczny MathML lub dokument biurowy ODF), jak również na zwykły HTML i czysty tekst.[1]
Dzięki dużej sile wyrazu[2], łatwości implementacji i powszechnemu stosowaniu XML-a 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. pattern matching) jak awk. Jego bezpośrednim poprzednikiem jest DSSSL, odpowiednik XSLT dla SGML-a.
Najnowszą wersją rekomendacji XSLT jest 2.0, ale ze względu na jej powolne rozpowszechnienie (vide brak obsługi w Xalanie, czy "fabrycznie" na platformie .NET) rekomendacja 1.0 jest nadal powszechnie wykorzystywana.
Spis treści |
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-a. 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-a 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.
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:includeixsl: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 atrybutupriority, 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 atrybutemselectlub - jeśli go brak - wszystkich dzieci aktualnego elementu. Jeśli w szablonie brak jest instrukcjixsl: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ą instrukcjixsl:apply-templates) z innego szablonu.
Przykład
Powiedzmy, że procesor XSLT transformuje poniższy fragment dokumentu XML:
... <cokolwiek> <dzieckoCokolwiek skąd="skądkolwiek">bum</dzieckoCokolwiek> po bum </cokolwiek> ...
mając do dyspozycji następujące reguły:
<xsl:template match="cokolwiek/dzieckoCokolwiek[@skąd='skądkolwiek']" priority="-1"> <i>(szablon 1)</i> </xsl:template> <xsl:template match="cokolwiek/dzieckoCokolwiek"> <i>(szablon 2)</i> </xsl:template> <xsl:template match="dzieckoCokolwiek"> <i>(szablon 3)</i> </xsl:template>
Produktem transformacji będzie
<i>(szablon 2)</i> po bum
- Brak reguły dla
cokolwiek, użyta więc będzie standardowa każąca przetwarzać wszystkie dzieci po kolei. - Do
dzieckaCokolwiekpasują 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, tekstbumzostaje więc pominięty. - Następnie przetwarzane jest drugie dziecko
cokolwiekczyli tekstpo 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:
<?xml version="1.0" encoding="UTF-8"?> <książka> <id> <tytuł>Pobawmy się w webmasterów</tytuł> <isbn>123456789</isbn> <autor>Jeszcze nieznany</autor> </id> <spisTreści> <r>Rozdział 1</r> <r>Rozdział 2</r> <r>Rozdział 3</r> </spisTreści> </książka>
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:
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> <xsl:output method="xml" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/> <xsl:template match="książka"> <html> <head> <title>Książka ,,<xsl:value-of select="./id/tytuł"/>''</title> </head> <body> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="id"> <h3>Dane identyfikacyjne książki</h3> Tytuł: <xsl:value-of select="tytuł"/><br /> ISBN: <xsl:value-of select="isbn"/><br /> Autor: <xsl:value-of select="autor"/><br /> </xsl:template> <xsl:template match="spisTreści"> <h3>Spis treści</h3> <table> <xsl:apply-templates /> </table> </xsl:template> <xsl:template match="r"> <tr><td><xsl:value-of select="."/></td></tr> </xsl:template> </xsl:stylesheet>
Aby transformacja zadziałała, zakładając że szablon znajduje się w pliku książka.xsl, w dokumencie XML dodajemy linijkę
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="książka.xsl"?> <książka> ... </książka>
Przypisy
- ↑ Patrz: rozdział specyfikacji dotyczący możliwych formatów wyjściowych (en).
- ↑ XSLT jest kompletny w sensie Turinga. Dowód w języku angielskim znajduje się na przykład tutaj: A Simple Proof for the Turing-Completeness of XSLT and XQuery.
Zobacz też
Linki zewnętrzne
- Rekomendacja XSLT 1.0
- Rekomendacja XSLT 2.0
- XSLT w Mozilla Developer Center
- XSLT - Kursokonferencja
- XSLT w przeglądarkach internetowych
- XSLT w Mozilli
- MSXML Parser - XML-owy silnik IE
- procesory XSLT
- Saxon (Java oraz .NET), saxon.sourceforge.net/)
- AltovaXML 2010, darmowy silnik XSLT 1.0/2.0 (linia komend, COM, Java, .NET, www.altova.com)
- XslCompiledTransform (.NET Framework, msdn.microsoft.com)
- TransforMiiX (C++, www.mozilla.org/projects/xslt/)
- Xalan-Java (Java, xml.apache.org/xalan-j/)
- Xalan-C++ (C++, xml.apache.org/xalan-c/)
- libxslt/xsltproc (C, xmlsoft.org/XSLT/)
- XT (Java, http://www.blnz.com/xt/index.html, autor James Clark)
- Sablotron (C++, www.gingerall.com/charlie/ga/xml/p_sab.xml)
- msxsl.exe (C++, msdn.microsoft.com)
- PHP 5 funkcje XSLT (PHP 5, http://www.php.net/xslt)
|
|||||||||||||||||||
| odżywki na przyrost masy odżywki, przyrost masy www.dso.pl | kosmetyki www.apteka.gda.pl | sklep z odżywkami sklep z odżywkami, sklep z odżywka… www.sklep.musclezon… | Arteria reklama Arteria pozycjonowanie www.arteria.org.pl | Wideofilmowanie HD blu-ray Videofilmowanie wesel w HD! www.twojslub24.com |
Być może zainteresują Cię strony:
Ocieplanie kolczyki swarovski wełna mineralna mieszkania zdrowie Fender urlop nad morzem Volkswagen Golf 3
Nauka na Focus.pl
Dieta na sto lat
Kiełki brokułu, kawior i jeżyny popite zieloną herbatą – takie menu proponują nam naukowcy. Na szczęście superzdrowa dieta przyszłości nie musi być monotonna
Thu, 29 Jul 2010 09:00:00 +0200
Twoja przyszłość w DNA
Jeszcze 40 lat temu testy genetyczne były zaliczane do fikcji literackiej. Dziś na rynku jest ich ponad 900, ale prawdziwa rewolucja dopiero przed nami
Tue, 27 Jul 2010 09:00:00 +0200
Szukamy piątego elementu
Czy na nasze organizmy działa jakaś nieznana jeszcze nauce siła, odpowiedzialna np. za zjawiska paranormalne? Zdaniem badaczy jest to możliwe
Mon, 26 Jul 2010 09:00:00 +0200
Łowcy spadających gwiazd
Czy może być coś bardziej romantycznego niż poszukiwanie skarbów? Szukanie meteorytów! Blask garnka pełnego złotych monet blednie przy kosmicznych kamieniach
Wed, 21 Jul 2010 09:00:00 +0200
Wzór na rzeczywistość
Fraktale można dostrzec wszędzie – w kształtach chmur, budowie kalafiora, rozgałęzieniach naczyń krwionośnych. Czy to przypadek? Zdaniem uczonych te miłe dla oka wzorki mogą pomóc nam zrozumieć zjawiska tak fundamentalne, jak zmiany klimatyczne czy struktura wszechświata
Sun, 18 Jul 2010 09:00:00 +0200
Historia na Focus.pl
Agentka w synagodze
Karin Mylius została pierwszym rabinem w dziejach Niemiec. Nie była jednak Żydówką, lecz utalentowaną agentką Stasi
Fri, 30 Jul 2010 16:00:00 +0200
Wycieczka Focusa - okolice Ostrowca
Nieczynny kamieniołom w Zachełmiu w Górach Świętokrzyskich stał się na początku 2010 roku źródłem sensacji na skalę światową.
Fri, 30 Jul 2010 09:00:00 +0200
Koniec baśni o samozwańcu
Jan Faustyn Łuba śnił o moskiewskim tronie, a przeżył koszmar. Rzeczpospolita marzyła o straszaku przeciw Moskwie, lecz spotkało ją upokorzenie. Król Władysław IV widział się w roli krzyżowca, ale zaskoczyła go śmierć
Thu, 29 Jul 2010 16:00:00 +0200
Zmora Kremla
Nie musimy się wstydzić tego, jak 400 lat temu walczyliśmy o tron carów. A czy powinniśmy żałować, że nam się nie udało? Nasze imperium i tak nie przetrwałoby do dziś
Wed, 28 Jul 2010 16:00:00 +0200
Wycieczka Focusa - okolice Szczecinka
Niedaleko od miejscowości Brzeźnica-Kolonia znajduje się obszar, którego przeznaczenie nie jest do końca znane. Istniejące tam budynki postawiono w latach 1972–1978 i kiedyś stacjonowały tu wojska radzieckie, a mówiąc ściślej 300 żołnierzy i oficerów z rodzinami.
Wed, 28 Jul 2010 09:00:00 +0200
Cywilizacja na Focus.pl
Z notatnika negocjatora
Centrum Warszawy, wieżowiec przy rondzie ONZ. Około godziny 17 w banku zjawia się 50-letni mężczyzna. Nerwowo lustruje główne pomieszczenie, następnie wraca do holu i wchodzi do pomieszczenia administracyjnego
Wed, 28 Jul 2010 17:43:00 +0200
Koniec niewinności
Nastolatki nigdy nie były święte, ale teraz idą na całość. Po raz pierwszy w historii dorównują chłopcom zachowaniem, a niektórzy twierdzą, że są od nich gorsze. Dlaczego się wykoleiły?
Sat, 24 Jul 2010 09:00:00 +0200
Wyjazd z gabloty
Nowoczesne muzea zamieniają się w multipleksy. Stawiają na rozrywkę i zarabiają krocie. Można w nich spędzać całe dnie i, ucząc się, dobrze się bawić
Fri, 23 Jul 2010 09:00:00 +0200
Jasnowidze z CIA
Jest w tym więcej prawdy, niż może się wydawać – uprzedzają twórcy filmu o absurdalnym tytule i nie mniej absurdalnej fabule. „Człowiek, który gapił się na kozy” to opowieść o tajemnicach amerykańskiej armii, które ujawnił członek oddziału żołnierzy ze zdolnościami parapsychologicznymi
Thu, 22 Jul 2010 09:00:00 +0200
Bloki dla ludzi
Blokowiska nie muszą straszyć. Mogą być wspaniałym miejscem do życia. Po latach niełaski bloki znowu zaczynają się podobać: architektom i zwykłym mieszkańcom
Tue, 20 Jul 2010 09:00:00 +0200
Nauka na Onet.pl
Duża asteroida może grozić Ziemi zderzeniem
Asteroida o średnicy 560 metrw może w przyszłości zderzyć się z Ziemią. Groźba takiej katastrofy w najbliższych dziesięcioleciach jest niewielka, jednakże wzrośnie znacząco, kiedy to ciało niebieskie zbliży się do naszej planety w 2182 roku.
Fri, 30 Jul 2010 15:10:00 GMT
Życie w kosmosie? Dowd sprzed 4 miliardw lat
Naukowcy zajmujący się badaniami powierzchni Marsa odkryli, że w niektrych ze znajdujących się tam skał mogą znajdować się ślady życia ukryte w minerałach - informuje serwis BBC News.
Fri, 30 Jul 2010 10:11:00 GMT
Rodzaj znieczulenia wpływa na ryzyko infekcji po operacji
Ryzyko miejscowej infekcji u pacjentw po operacji wymiany stawu biodrowego lub kolanowego, jest większe jeśli zastosowano znieczulenie oglne, a nie rdzeniowe lub zewnątrzoponowe - wynika z pracy, ktra ukaże się w sierpniowym wydaniu pisma "Anesthesiology".
Fri, 30 Jul 2010 09:22:00 GMT
Nowy akcelerator w CERN
Działający od niedawna, pod Genewą, słynny akcelerator LHC (Wielki Zderzacz Hadronw) ma kształt zamkniętej pętli. Tymczasem fizycy myślą już o budowie nowego przyspieszacza cząsteczek. Tym razem w kształcie linii prostej - informuje serwis "Physorg".
Thu, 29 Jul 2010 22:54:00 GMT
Wodowanie specjalistycznego statku
W Stoczni Gdańsk S.A. w piątek zostanie zwodowany specjalistyczny statek o nazwie "Fugro Symphony". Jednostka wyposażona m.in. w trzy dźwigi i lądowisko dla helikopterw służyć będzie obsłudze grnictwa morskiego.
Thu, 29 Jul 2010 22:50:00 GMT
Ciekawostki na Onet.pl
Inwazja papug na Brukselę
Zabytkowy rynek, Atomium, instytucje UE i pomnik siusiającego chłopca Manneken-Pis to szeroko znane atrakcje Brukseli. Mało kto jednak wie, że w stolicy Belgii żyje od lat na wolności jedna z największych w Europie, w dodatku stale rosnąca, populacja... papug.
Fri, 30 Jul 2010 09:18:00 GMT
Skanery ciała nie dość, że rozbierają, to jeszcze promieniują
Nowe skanery ciała, ktre wprowadzono niedawno na amerykańskich i niektrych brytyjskich lotniskach, mogą emitować znacznie większe dawki promieniowania, niż dotychczas sądzono.
Thu, 29 Jul 2010 22:15:00 GMT
Nowe, lecznicze właściwości pieprzu
Najnowsze badania dowodzą, że pieprz pomaga obniżyć ryzyko choroby serca. Naukowcy kanadyjscy rozpoczęli badania na grupie 200 osb, ktre przez miesiąc będą zażywać kapsułki zawierające 2,8 grama pieprzu dziennie.
Thu, 29 Jul 2010 22:14:00 GMT
Prehistoryczne stwory rozwijały skomplikowane cechy
Prehistoryczne stworzenia rozwijały bardzo skomplikowane cechy, aby przyciągać osobniki płci przeciwnej.
Thu, 29 Jul 2010 22:13:00 GMT
Wisiorek za 5 dolarw okazał się wart 10 tys. dolarw
Pewna mieszkanka Cleveland kupiła na garażowej wyprzedaży wisiorek z miniaturką koszulki koszykarza LeBrona Jamesa i dopiero po 5 latach odkryła jego prawdziwą wartość.
Thu, 29 Jul 2010 22:12:00 GMT

