190 likes | 281 Views
Łódź, 15 października 2012 roku. Technologie. mgr inż. Tomasz Węgliński email: tweglinski@kis.p.lodz.pl www: http://www.tweglinski.pl. WYKŁAD 6. Transformacje XSL (c.d.). 2/19. Rodzaje transformacji XSL. Transformacje XSL możemy przeprowadzać na trzy sposoby:
E N D
Łódź, 15 października 2012 roku Technologie mgr inż. Tomasz Węglińskiemail: tweglinski@kis.p.lodz.plwww: http://www.tweglinski.pl
WYKŁAD 6 Transformacje XSL(c.d.) 2/19
RodzajetransformacjiXSL • Transformacje XSL możemy przeprowadzać na trzy sposoby: • dołączając arkusz styli XSL bezpośrednio do dokumentu XML • przeprowadzając transformację po stronie klienta • przeprowadzając transformację po stronie serwera • XSLT po stronie klienta (ang. Client-side XSLT) wymaga od użytkownika korzystania z przeglądarki z wbudowanym procesorem XSLT. • XSLT po stronie serwera (ang. Server-side XSLT) może zostać przeprowadzona przy użyciu: • silnika przeglądarki internetowej zainstalowanej na serwerze • biblioteki systemu operacyjnego • frameworka (języka programowania) 3/19 Wykład 5: Transformacje XSL
RodzajetransformacjiXSL • XSLT po stronie serwera obsługuje m.in.: • Biblioteka MSXML dla platformy Windows • Biblioteka libxslt dla środowiska Unix/Linux • Procesory XSLT w różnych językach programowania: • Saxon (Java oraz .NET), http://saxon.sourceforge.net/) • XslCompiledTransform (.NET Framework, http://msdn.microsoft.com) • TransforMiiX (C++, www.mozilla.org/projects/xslt/) • Xalan-Java (Java, http://xml.apache.org/xalan-j/) • Xalan-C++ (C++, http://xml.apache.org/xalan-c/) • XT (Java, http://www.blnz.com/xt/index.html, autor James Clark) • Sablotron (C++, www.gingerall.com/charlie/ga/xml/p_sab.xml) • PHP 5 funkcje XSLT (http://www.php.net/manual/en/book.xsl.php) 4/19 Wykład 5: Transformacje XSL
XSL po stronie klienta W procesie transformacji XSL po stronie klienta rolę procesora XSLT pełni przeglądarka internetowa. Przeglądarka internetowa np. Mozilla Firefox lub Internet Explorer 5/19 Wykład 5: Transformacje XSL
XSL po stronie klienta • Transformacje XSL po stronie klienta przeprowadzane są najczęściej • z użyciem języka JavaScript. • Dzięki przeprowadzeniu transformacji XSL w JavaScript możemy: • skorzystać z kilku dostępnych bibliotek XSLT (np. jsxml); • wyświetlić wynik transformacji w każdej przeglądarce internetowej; • przeprowadzić walidację poprawności arkusza styli XSL; • opracować i wykorzystać różne arkusze XSL w zależności od wymagań klienta. Przykład ze strony: http://www.w3schools.com/xsl/tryit.asp?filename=cdcatalog 6/19 Wykład 5: Transformacje XSL
XSL po stronie klienta • Wyjściowy dokument XML: 7/19 Wykład 5: Transformacje XSL
XSL po stronie klienta • Przykładowy arkusz styli XSL: 8/19 Wykład 5: Transformacje XSL
XSL po stronie klienta • Kod JavaScript realizujący transformację - loadXMLDoc(): XMLHttpRequest (XHR) – obiekt języków skryptowych (np. JavaScript, JScript lub VBScript) przeglądarek internetowych umożliwiający wykonywanie żądań do serwera WWW za pomocą protokołu HTTP. 9/19 Wykład 5: Transformacje XSL
XSL po stronie klienta • Kod JavaScript realizujący transformację - loadXMLDoc(): tworzenie nowego obiektuXMLHttpRequest() XMLHttpRequest (XHR) – obiekt języków skryptowych (np. JavaScript, JScript lub VBScript) przeglądarek internetowych umożliwiający wykonywanie żądań do serwera WWW za pomocą protokołu HTTP. 10/19 Wykład 5: Transformacje XSL
XSL po stronie klienta • Kod JavaScript realizujący transformację - loadXMLDoc(): wysyła żądanie do serwerawraz z opcjonalną zawartością • Specyfikacja metody open(): "GET", "POST", "HEAD", "PUT", "DELETE" bezwzględnylub względny adres URL „true” – skryptdalej przetwarzanypo wywołaniu send() „false” – skrypt przetwarzany dopieropo uzyskaniu odpowiedzi 11/19 Wykład 5: Transformacje XSL
XSL po stronie klienta • Kod JavaScript realizujący transformację - loadXMLDoc(): • Własności obiektu XMLHttpRequest: • onreadystatechange • readyState • responseText • responseXML • status • statusText Zawiera odpowiedź jako XML. Ta własność zwraca obiekt dokumentu XML, który może być parsowany używając klas i interfejsów W3C DOM. Źródło: http://pl.wikipedia.org/wiki/XMLHttpRequest 12/19 Wykład 5: Transformacje XSL
XSL po stronie klienta • Kod JavaScript realizujący transformację - displayResult(): pobranie dokumentu XML pobranie arkusza XSL Przeglądarka Internet Explorer wykorzystuje obiekt ActiveX uruchamiający procesor XSLT w bibliotece MSXML, natomiast pozostałe przeglądarki korzystają z wbudowanego w silnik procesora XSLT. 13/19 Wykład 5: Transformacje XSL
XSL po stronie klienta • Kod JavaScript realizujący transformację - displayResult(): • Kod dla przeglądarki Internet Explorer: • funkcja transformNode()aplikuje arkusz stylów XSL do dokumentu XML oraz dokonuje transformacji • - wynikiem działania funkcji jest wyjściowe drzewo HTML „wstrzyknięcie” do zawartościelementu wyjściowego drzewaHTML pobranie referencji do elementu drzewa HTML posługując się powiązanym z tym elementem atrybutem id = ”example” 14/19 Wykład 5: Transformacje XSL
XSL po stronie klienta • Kod JavaScript realizujący transformację - displayResult(): • Kod dla przeglądarki Mozilla Firefox, Opera, Chrome etc.: • tworzenie obiektu klasy XSLTProcessor() • - zaimportowanie arkusza stylów XSL • funkcja transformToFragment()aplikuje arkusz stylów XSL do dokumentu XML oraz dokonuje transformacji • - wynikiem działania funkcji jest wyjściowe drzewo HTML dodanie do zawartości elementu wyjściowego drzewa HTML 15/19 Wykład 5: Transformacje XSL
W procesie transformacji XSL po stronie serwera za przeprowadzenie transformacji XSL odpowiada serwer internetowy (najczęściej odpowiednia biblioteka danego języka programowania). XSL po stronie serwera 16/19 Wykład 5: Transformacje XSL
Niekiedy pośrednikiem pomiędzy serwerem WWW a użytkownikiem jest tzw. serwer aplikacji. XSL po stronie serwera Serwer aplikacji (program działający na zdalnej maszynie) 17/19 Wykład 5: Transformacje XSL
XSL po stronie serwera • Kod PHP realizujący transformację XSLT: Zobaczmy jak to działa! Uwaga: Przed użyciem metod klasy XsltProcessor konieczne jest włączenie rozszerzenia XSL w posiadanej instancji PHP! 18/19 Wykład 5: Transformacje XSL
XSL po stronie serwera • Metody klasy XsltProcessor: Opis wszystkich metod wraz z przykładami można znaleźć pod adresem: http://www.php.net/manual/en/class.xsltprocessor.php 19/19 Wykład 5: Transformacje XSL