Transcript XSLT - tweglinski.pl
Łódź, 22 października 2012 roku
Technologie
mgr inż. Tomasz Węgliński email: [email protected]
www: 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) Wykład 4: Transformacje XSL 3/26
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łca go w wynikowy dokument przeznaczony do wyświetlenia w przeglądarce
Wykład 4: Transformacje XSL 4/26
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, TransforMiiX (C++, Xalan-Java (Java, Xalan-C++ (C++, http://msdn.microsoft.com
www.mozilla.org/projects/xslt/ http://xml.apache.org/xalan-j/ http://xml.apache.org/xalan-c/ ) ) ) ) libxslt/xsltproc (C, XT (Java, Sablotron (C++, http://xmlsoft.org/XSLT/ ) http://www.blnz.com/xt/index.html
, autor James Clark) 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
) Wykład 4: Transformacje XSL 5/26
Możliwości XSLT 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.
Wykład 4: Transformacje XSL 6/26
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
.
Wykład 4: Transformacje XSL 7/26
Przeglądarki XSLT 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
.
Wykład 4: Transformacje XSL 8/26
Podstawy XSLT Deklaracja arkusza stylów XSLT:
W praktyce ten sposób deklaracji stosujemy 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.
Wykład 4: Transformacje XSL 9/26
Podstawy XSLT Transformacja XSLT –
Krok 1:
Dokument XML Jak zaprezentować dane XML w bardziej przyjazny sposób?
Wykład 4: Transformacje XSL 10/26
Podstawy XSLT Transformacja XSLT –
Krok 2:
Arkusz stylów XSL To wygląda jak zwykły dokument HTML!
Wykład 4: Transformacje XSL 11/26
Podstawy XSLT Transformacja XSLT –
Krok 3:
Dołączenie arkusza stylów XSL do XML
powiązanie arkusza stylów XSL z dokumentem XML
Zobaczmy rezultat: http://www.w3schools.com/xsl/cdcatalog_with_xsl.xml
Wykład 4: Transformacje XSL 12/26
Wzorce Tworzenie szablonów stylów to budowanie
wzorców
porównywany jest przetwarzany dokument wejściowy.
do których Element definiującym pojedynczy wzorzec jest
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
.
Wykład 4: Transformacje XSL 13/26
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() ) Wykład 4: Transformacje XSL 14/26
Wzorce Przykłady wzorców: - określa szablon przetwarzający zawartość elementu autorzy ; - określa szablon przetwarzający zawartość elementów autor , tytuł
oraz
wartosc ; - określa szablon przetwarzający zawartość elementów nr_okresu oraz wartosc
znajdujących się
w elemencie pozycja ; - określa szablon przetwarzający zawartość elementu imie , znajdującego się w
drugim wystąpieniu
elementu autor ; - określa szablon przetwarzający zawartość elementu pozycja , w którym atrybut okres ma wartość miesiac ; Wykład 4: Transformacje XSL 15/26
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 wszystkich dostępnych szablonów dołączenie szablonu title
Wykład 4: Transformacje XSL 16/26
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 wszystkich dostępnych szablonów dołączenie szablonu title
Wykład 4: Transformacje XSL 17/26
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 szablonu o podanej nazwie Element xsl:call-template
nazwę
odwołuje się do szablonu podaną w parametrze name elementu
dopasowując
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
(!)) Wykład 4: Transformacje XSL 18/26
Podstawowe elementy 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
Wykład 4: Transformacje XSL 19/26
Podstawowe elementy
pętla po wszystkich podelementach
cd
, elementu
catalog
sortowanie po elemencie
artist
pobranie wartości elementu
Wykład 4: Transformacje XSL 20/26
Podstawowe elementy Wynik: Wykład 4: Transformacje XSL 21/26
Podstawowe elementy Element
Podstawowe elementy Wynik: Wykład 4: Transformacje XSL 23/26
Podstawowe elementy Element
wstawia określony tekst we wskazane miejsce
Element
!
) Wykład 4: Transformacje XSL 24/26
Podstawowe elementy Element
całych elementów (węzłów)
xsl:copy – oznacza kopiowanie
aktualnego
węzła (bez atrybutów!!) Wykład 4: Transformacje XSL
skopiowanie aktualnego elementu wraz z zawartością
25/26
Podstawowe elementy Element
określonego
węzła Wykład 4: Transformacje XSL Użycie xsl:copy-of powoduje skopiowanie atrybutów elementu (!)
skopiowanie
wybranego
elementu wraz z zawartością
26/26