XSL Extensible Stylesheet Language 6 listopada 2003
XPath – XML Path Language Problem: jednoznaczne adresowanie fragmentów struktury dokumentu XML. Rozwiązanie: drzewiasty model struktury dokumentu, normalizacja zawartości dokumentu (ten sam byt, choć różnie zakodowany, jest tak samo reprezentowany w modelu), język ścieżek w drzewie struktury. Status: Rekomendacja W3C z 16 listopada 1999 r. Zastosowania: XSL, XPointer,...
XPath data model Modelowanie dokumentu przy pomocy drzewa: węzeł root, węzły elementów, węzły atrybutów, węzły tekstowe, węzły instrukcji przetwarzania, węzły komentarzy, węzły przestrzeni nazw. Własności węzłów: string-value, normalizacja odwołań do encji i sekcji CDATA, expanded-name.
Wyrażenia XPath Typy wyrażeń: node-set, boolean, number, string. Węzeł bieżący (context node). Poruszanie się w hierarchii elementów: / /book/section section/para
Location paths Ścieżka XPath złożona z kroków. Opis kroku: oś, test węzła, predykaty. Przykłady: /child::book/child::section child::para[attribute::type="warning"]
Osie (axes) "Kierunki" poruszania się po modelu dokumentu: child descendant parent ancestor following-sibling preceding-sibling following preceding attribute namespace self descendand-or-self ancestor-or-self
Testy węzłów Podstawowy typ węzła: dla osi attribute : atrybut, dla osi namespace : przestrzeń nazw, dla pozostałych osi: element. Testy: nazwa węzła, * - wszystkie węzły podstawowego typu node() text() comment() processing-instruction() processing-instruction(target-name)
Zapis skrócony Skróty: child:: można ///descendant-or-self::node()/.self::node()..parent::node() Zapis pełny vs. skrócony – przykład:.//para self::node()/descendant-or-self::node()/child::para
Predykaty Dowolne wyrażenie. Interpretacja: number – prawda, gdy równy pozycji węzła w kontekście, string – prawda, gdy niepusty, node-set – prawda gdy niepusty.
Przykłady para /doc/chapter[5]/section[2] chapter//para chapter[title] chapter[title="Introduction"]
Ważniejsze funkcje Operatory: + - * / > >= < <= and or... last() position() count( node-set ) name( node-set? ) string( object? ) concat( string, string, string* ) contains( string, string ) not( boolean )
Języki formatowania dokumentów strukturalnych SGML: FOSI (Formatting Output Specification Instance): specyfikacja MIL-PRF-28001, zbyt małe możliwości dla ogólnych zastosowań. DSSSL (Document Style Semantics and Specification Language): ISO/IEC 10179:1996 oparty na podzbiorze języka Scheme bez efektów ubocznych. XML: CSS (Cascading Style Sheets), stosowane m. in. w HTML-u, XSL (Extensible Stylesheet Language): język wysokopoziomowy, deklaratywny, bez efektów ubocznych.
XSL – części składowe XSLT (XSL Transformations): język opisu przekształceń dokumentów XML, składnia XML, oparty na dopasowywaniu wzorców, przestrzeń nazw: rekomendacja W3C z 16 listopada 1999 r. XPath (XML Path Language). XSL:FO (XSL Formatting Objects): słownik XML-owy pozwalający definiować formatowanie, przestrzeń nazw: opisany w rekomendacji XSL 1.0 z 15 października 2001 r.
XSL a XSLT Źródło: Extensible Stylesheet Language (XSL) Version 1.0, W3C Recommendation 15 October 2001 (
Arkusze stylów a przekształcenia XSLT zamówienie faktura Omnimark ustawa (RTF) ustawa (XML) XSLT faktura HTML XSL faktura PDF CSS FOSI DSSSL arkusze stylów przekształcenia
Zasada działania przekształcenia XSLT Reguła XSLT: ścieżka XPath określająca węzły, dla których reguła obowiązuje, treść "wykonywana" w przypadku uruchomienia reguły: tekst i elementy wypisywane na wyjście, instrukcje XSLT. Sposób przetwarzania: wykonaj regułę dla węzła /, reguła może rekurencyjnie wywołać reguły dla innych węzłów.
Arkusz stylów/przekształcenie XSLT Element główny: Output methods: xml, html, text. Określanie arkusza stylów dla dokumentu:
Podstawy składni – przykład
Przekształcenie – przykład aaa bbb ccc ddd *** aaa bbb ccc ddd
Wbudowane reguły
Generowanie dokumentu wyjściowego Elementy i tekst literalnie podane w przekształceniu. Instrukcje generujące:
Przetwarzanie warunkowe: if yellow
Przetwarzanie warunkowe: choose.
Pętle Index
Rodzaje przetwarzania XSLT (1) Przetwarzanie sterowane strukturą dokumentu źródłowego: przechodzimy po strukturze dokumentu źródłowego, generujemy fragmenty struktury dokumentu wyjściowego
Rodzaje przetwarzania XSLT (2) Przetwarzanie sterowane strukturą dokumentu wyjściowego: jedna duża reguła dla węzła root, generujemy strukturę dokumentu docelowego, wyciągamy odpowiednie wartości z dokumentu źródłowego. Expense Report Summary Company: Total Amount:
Zmienne Jak w funkcyjnych językach programowania: brak instrukcji przypisania, brak efektów ubocznych. Deklaracja: wartość: atrybut select wyrażenie odpowiedniego typu, zawartość elementu fragment drzewa wynikowego, Użycie: w wyrażeniach: $ name,
Zaawansowane możliwości XSLT Sortowanie węzłów. Wzorce nazwane: wywoływane jak podprogramy (procedury), przekazywanie parametrów, rekursja. Tryby przetwarzania (modes): przełączanie między trybami, niezależnie definiowane wzorce dla każdego trybu.
Wykorzystanie rekursji w XSLT (1) Sposób na brak "prawdziwych" zmiennych i pętli iteracyjnych. Przykład:
Wykorzystanie rekursji w XSLT (2) Przykład – c.d.:
Generowanie przekształceń XSL (1) Problem: źródło przekształcenia nie zawiera metainformacji o strukturze dokumentu, metainformacje pojawiają się na wyjściu. Szymon Zioło wypoczynkowy Jan Kowalski
Generowanie przekształceń XSL (2) Rozwiązanie: zapisanie metainformacji w szablonie, generowanie przekształcenia z szablonu.
Generator – przykład (1) <xsl:stylesheet version="1.0" xmlns:xsl=" xmlns:res="
Generator – przykład (2) tak nie
Zastosowanie w projekcie: KEDU ZUS KEDU RCB DRSB ZEUB RSB RCB Blok powtarzalny wycięcie dokumentuwycięcie instancji RCB Arkusz stylów Generator arkuszy stylów Szablon Wizualizacja HTML
KEDU ZUS – przykład wizualizacji
Zastosowanie w projekcie: Era DCO Szablon dokumentu: struktura (nazwy pól, typy, kontrolki edycyjne), pola automatycznie obliczane, reguły walidacji, role i uprawnienia, proces obiegu dokumentu. Generatory: schematu XML Schema, pustej instancji dokumentu, arkuszy stylów, ewaluatorów pól automatycznie obliczanych, walidatorów. Document Collection Office: system obiegu dokumentów strukturalnych, edycja przy pomocy formularzy HTML, zastosowanie: obieg protokołów z przeglądów stacji bazowych.
Era DCO – schemat przetwarzania Szablon dokumentu XML template2style.xsl Instancja dokumentu XML arkusz stylów XSL wizualizacja HTML template2instance.xsl
Formatting Objects – przykład drzewa wynikowego... Preface This is a simple test document. It shows a partial fo-result tree (page layout missing)....
Formatting Objects – przykłady reguł
Narzędzia Procesory XSLT: XT, James Clark (Java), Oracle XML Parser for Java / C / PL-SQL, Xalan (Java, C++), SAXON, Michael H. Kay (Java), Sablotron (C++, open source), Microsoft XML Core Services (MSXML 4.0). Procesor XSL:FO: FOP (open source; generuje dokumenty w formacie PDF). Edytory XSLT: xmlspy 2004, Xselerator XSL Editor/Debugger, xslide – Emacs Major Mode for XSL Stylesheets.
Rozwój XSL-a XSLT 2.0 Working Draft: wsparcie dla XML Schema, grupowanie węzłów ( for-each-group ), definiowanie i wywoływanie własnych funkcji, generowanie wielu dokumentów wyjściowych,... XPath 2.0 Working Draft wyrażenia warunkowe ( if i inne), kwantyfikatory, typ "sekwencja", pętle,...
Gdzie szukać dalej The Extensible Stylesheet Language Family: XSLT Tutorial: TopXML: Sławomir Tyszko, Rekurencyjne szablony w XSLT Software 2.0, nr 6/2002, Wydawnictwo Software Szymon Zioło, XSLT do kwadratu Software 2.0, nr 6/2003, Wydawnictwo Software