260 likes | 399 Views
Łódź, 22 października 2012 roku. Technologie. mgr inż. Tomasz Węgliński email: tweglinski@kis.p.lodz.pl www: http://www.tweglinski.pl. WYKŁAD 5. Transformacje XSL. 2/26. Co to znaczy transformacja?. Transformacją nazywamy przekształcenie dokumentu XML w inny
E N D
Łódź, 22 października 2012 roku Technologie mgr inż. Tomasz Węglińskiemail: tweglinski@kis.p.lodz.plwww: http://www.tweglinski.pl
WYKŁAD 5 Transformacje XSL 2/26
Co to znaczy transformacja? • Transformacją nazywamy przekształcenie dokumentu XML w inny • dokument XML lub też inny dokument rozpoznawany przez przeglądarki, • taki jak HTML lub XHTML. • Językiem opisującym sposób prezentacji (przekształceń) dokumentu XML • jest język XSL (ang. Extensible Stylesheet Language – • – w wolnym tłumaczeniu Rozszerzalny Język Arkuszy Stylów) • W większości przypadków transformacje XSL (skr. XSLT) dokonuje się • w celu oddzielenia warstwy informacji od warstwy prezentacji. • Działanie procesora XSLT powoduje powstawanie dokumentu wynikowego, którym może być: • zmieniony wejściowy dokument XML (przekształcenie drzewa) • nowy arkusz XSLT • dokument (np. HTML) przeznaczony do wyświetlenia w przeglądarce (przedstawiający dane zgromadzone w dokumencie XML) 3/26 Wykład 4: Transformacje XSL
Procesor XSLT Procesor XSLT przetwarza zawarte w standardzie instrukcje. Działanie procesora XSLT przedstawia schemat: Procesor pobiera plik XML oraz arkusz stylów XSLT, a następnie przekształcago w wynikowy dokumentprzeznaczony do wyświetlenia w przeglądarce 4/26 Wykład 4: Transformacje XSL
Procesor XSLT • XSLT w przeglądarkach internetowych: • XSLT w Mozilli • MSXML Parser - XML-owy silnik IE • Powszechnie wykorzystywane procesory XSLT: • Saxon (Java oraz .NET), http://saxon.sourceforge.net/) • AltovaXML 2010, darmowy silnik XSLT 1.0/2.0 (linia komend, COM, Java, .NET, www.altova.com) • 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/) • libxslt/xsltproc (C, http://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 (http://www.php.net/manual/en/book.xsl.php) 5/26 Wykład 4: Transformacje XSL
MożliwościXSLT • Standard XSLT umożliwia dokonywanie takich operacji jak: • dodawanie sufiksów oraz prefiksów do przetwarzanego tekstu; • usuwanie, tworzenie, sortowanie oraz przestawianie elementów (węzłów, gałęzi drzewa dokumentu); • ponowne wykorzystywanie elementów w innym miejscu danego dokumentu; • automatyczne numerowanie; • operacje matematyczne, np. sumowanie, mnożenie, dzielenie etc.; • przetwarzanie łańcuchów znaków; • wyszukiwanie określonych struktur, węzłów w drzewie. 6/26 Wykład 4: Transformacje XSL
XSLT & XPath • XSLT wykorzystuje język XPath • XSLT wykorzystuje język XPath do wyszukiwania żądanej informacji w dokumencie XML. • Dzięki XPath możliwa jest nawigacja po elementach i atrybutach w drzewie XML. W procesie transformacji, XSLT wykorzystuje język XPath w celu zdefiniowania elementów źródłowego dokumentu XML, które pasują do jednego lub więcej predefiniowanych szablonów. Kiedy takie dopasowanie zostaje znalezione, XSLT przetworzy pasujące elementy dokumentu źródłowego w dokument wynikowy. 7/26 Wykład 4: Transformacje XSL
PrzeglądarkiXSLT Wszystkie popularne przeglądarki internetowe wspierają standard XSLT • Mozilla Firefox • Firefox supports XML, XSLT, and XPath from version 3. • Internet Explorer • Internet Explorer supports XML, XSLT, and XPath from version 6. • Internet Explorer 5 is NOT compatible with the official W3C XSL Recommendation. • Google Chrome • Chrome supports XML, XSLT, and XPath from version 1. • Opera • Opera supports XML, XSLT, and XPath from version 9. Opera 8 supports only XML + CSS. • Apple Safari • Safari supports XML and XSLT from version 3. 8/26 Wykład 4: Transformacje XSL
Podstawy XSLT • Deklaracja arkusza stylów XSLT: W praktyce ten sposób deklaracjistosujemy częściej lub: deklaracja przestrzeni nazw dla arkusza stylów XSLT Uwaga: Jeżeli używamy przestrzeni nazw XSLT, musimy również podać parametr version z wartością 1.0. 9/26 Wykład 4: Transformacje XSL
Podstawy XSLT Transformacja XSLT – Krok 1:Dokument XML Jak zaprezentować dane XML w bardziej przyjazny sposób? 10/26 Wykład 4: Transformacje XSL
Podstawy XSLT Transformacja XSLT – Krok 2:Arkusz stylów XSL To wygląda jak zwykłydokument HTML! 11/26 Wykład 4: Transformacje XSL
Podstawy XSLT Transformacja XSLT – Krok 3:Dołączenie arkusza stylów XSL do XML powiązanie arkusza stylówXSL z dokumentem XML Zobaczmy rezultat: http://www.w3schools.com/xsl/cdcatalog_with_xsl.xml 12/26 Wykład 4: Transformacje XSL
Wzorce Tworzenie szablonów stylów to budowanie wzorców do których porównywany jest przetwarzany dokument wejściowy. • Element definiującym pojedynczy wzorzec jest <xsl:template> Zawiera on atrybuty: • match – oznacza zakres stosowania wzorca; • mode – oznacza tryb stosowania wzorca; • name – oznacza nazwę wzorca. • Najczęściej wykorzystywany jest atrybut match, który składa się z szeregu wskazań (location path) rozdzielonych od siebie symbolem |. • Poszczególne wskazanie spełnia reguły języka XPath. 13/26 Wykład 4: Transformacje XSL
Wzorce • W atrybucie match dozwolone jest umieszczanie odwołań: • do korzenia drzewa (za pomocą symbolu „/”) • do elementów (poprzez ich nazwę) • do atrybutów (za pomocą nazwy atrybutu poprzedzonej „@”) • do konkretnych wystąpień węzła (poprzez nazwę węzła z numerem wystąpienia umieszczonym wewnątrz nawiasów kwadratowych „[]” • do zawartości tekstowej (za pomocą funkcji text()) • do węzła (za pomocą funkcji node()) • do komentarza (za pomocą funkcji comment()) 14/26 Wykład 4: Transformacje XSL
Wzorce • Przykłady wzorców: -- określa szablon przetwarzający zawartość elementu autorzy; -- określa szablon przetwarzający zawartość elementów autor, tytuł orazwartosc; -- określa szablon przetwarzający zawartość elementów nr_okresuoraz wartosc znajdujących się w elemencie pozycja; -- określa szablon przetwarzający zawartość elementu imie, znajdującegosię w drugim wystąpieniu elementu autor; -- określa szablon przetwarzający zawartość elementu pozycja, w którym atrybut okres ma wartość miesiac; 15/26 Wykład 4: Transformacje XSL
Wzorce • Wywoływanie szablonów (wzorców) • -- standard XSLT umożliwia wywoływanie utworzonych szablonów za pomocą elementów: • xsl:apply-templates • xsl:call-template szablon główny przetwarzający korzeń dokumentu dołączenie wszystkichdostępnych szablonów dołączenie szablonutitle 16/26 Wykład 4: Transformacje XSL
Wzorce • Wywoływanie szablonów (wzorców) • -- standard XSLT umożliwia wywoływanie utworzonych szablonów za pomocą elementów: • xsl:apply-templates • xsl:call-template szablon główny przetwarzający korzeń dokumentu dołączenie wszystkichdostępnych szablonów dołączenie szablonutitle 17/26 Wykład 4: Transformacje XSL
Wzorce • Wywoływanie szablonów (wzorców) • -- standard XSLT umożliwia wywoływanie utworzonych szablonów za pomocą elementów: • xsl:apply-templates • xsl:call-template wywołanie szablonuo podanej nazwie Element xsl:call-template odwołuje się do szablonu dopasowującnazwę podaną w parametrze name elementu xsl:template Element xsl:apply-templates w parametrze select zawiera wyrażenie XPath, które jest porównywane do wartości atrybutu match(dopasowanie węzłów, nie nazw (!)) 18/26 Wykład 4: Transformacje XSL
Podstawoweelementy • Standard XSLT zawiera ok. 35 podstawowych elementów kontrolujących proces transformacji dokumentów XML. • Najczęściej stosowanymi elementami są: • apply-templates • call-template • choose / when / otherwise • copy | copy of • for-each • if • sort • stylesheet | transform • template • text • value-of • variable Pełną listę podstawowych elementów standardu XSLT można znaleźć pod adresem: http://www.w3schools.com/xsl/xsl_w3celementref.asp 19/26 Wykład 4: Transformacje XSL
Podstawoweelementy pętla po wszystkich podelementach cd, elementu catalog sortowanie po elemencie artist pobranie wartości elementu 20/26 Wykład 4: Transformacje XSL
Podstawoweelementy • Wynik: 21/26 Wykład 4: Transformacje XSL
Podstawoweelementy • Element <if>: • Element <choose> / <when> / <otherwise>: 22/26 Wykład 4: Transformacje XSL
Podstawoweelementy • Wynik: 23/26 Wykład 4: Transformacje XSL
Podstawoweelementy • Element <text> wstawia określony tekst we wskazane miejsce Element <text> posiada atrybut disable-output-escaping, dzięki któremu możemy wstawiać znaki specjalnebez konieczności stosowania encji (!) 24/26 Wykład 4: Transformacje XSL
Podstawoweelementy • Element <copy> | <copy-of> • -- standard XSLT umożliwia również kopiowanie całych elementów • (węzłów) • xsl:copy – oznacza kopiowanie aktualnego węzła (bez atrybutów!!) skopiowanie aktualnego elementuwraz z zawartością 25/26 Wykład 4: Transformacje XSL
Podstawoweelementy • Element <copy> | <copy-of> • xsl:copy-of – oznacza kopiowanie określonego węzła Użycie xsl:copy-of powoduje skopiowanieatrybutów elementu (!) skopiowanie wybranego elementuwraz z zawartością 26/26 Wykład 4: Transformacje XSL