XSLT - PowerPoint PPT Presentation

About This Presentation
Title:

XSLT

Description:

Title: XML i nowoczesne technologie zarz dzania tre ci Author: Szymon Ziolo Last modified by: Szymon Zio o Created Date: 9/27/2004 2:02:47 PM – PowerPoint PPT presentation

Number of Views:104
Avg rating:3.0/5.0
Slides: 25
Provided by: Szymon6
Category:
Tags: xslt | prefix | test

less

Transcript and Presenter's Notes

Title: XSLT


1
XSLT czesc 2
2
Rodzaje przetwarzania XSLT (1)
  • Przetwarzanie sterowane struktura dokumentu
    zródlowego (ang. push)
  • przechodzimy po strukturze dokumentu zródlowego,
  • generujemy fragmenty struktury dokumentu
    wyjsciowego.
  • ltxsltemplate match"..."gt ...
    ltxslapply-templates/gt ...lt/xsltemplategt

3
Rodzaje przetwarzania XSLT (2)
  • Przetwarzanie sterowane struktura dokumentu
    wyjsciowego (ang. pull)
  • jedna duza regula dla wezla root,
  • generujemy strukture dokumentu docelowego,
  • wyciagamy odpowiednie wartosci z dokumentu
    zródlowego.
  • ltxslstylesheet version"1.0"
    xmlnsxsl"http//www.w3.org/1999/XSL/Transform"
    xmlns"http//www.w3.org/TR/xhtml1/strict"gtltx
    sltemplate match"/"gt lthtmlgtltheadgtlttitlegtExpens
    e Report Summarylt/titlegtlt/headgt ltbodygt
    lth1gtCompany ltxslvalue-of select"company/name"/gt
    lt/h1gt ltpgtTotal Amount ltxslvalue-of
    select"expense-report/total"/gtlt/pgt lt/bodygt
    lt/htmlgtlt/xsltemplategtlt/xslstylesheetgt

4
Uproszczone przeksztalcenia
  • Tylko jeden wzorzec dla wezla root.
  • Pomijamy element stylesheet.
  • lthtml xmlnsxsl"http//www.w3.org/1999/XSL/Trans
    form" xmlns"http//www.w3.org/TR/xhtml1/str
    ict" xslversion"1.0"gt
    ltheadgtlttitlegtExpense Report Summarylt/titlegtlt/headgt
    ltbodygt lth1gtCompany ltxslvalue-of
    select"company/name"/gtlt/h1gt ltpgtTotal
    Amount ltxslvalue-of select"expense-report/t
    otal"/gtlt/pgt lt/bodygtlt/htmlgt

5
Zaawansowane mozliwosci XSLT
  • Sortowanie wezlów.
  • Tryby przetwarzania (modes)
  • przelaczanie miedzy trybami,
  • niezaleznie definiowane wzorce dla kazdego trybu.
  • Zmienne.
  • Wzorce nazwane
  • wywolywane jak podprogramy (procedury),
  • przekazywanie parametrów,
  • rekursja.

6
Sortowanie
  • Mozna stosowac w
  • apply-templates,
  • for-each.
  • ltxsltemplate match"miasta"gt lth1gtMiasta wg
    liczby mieszkancówlt/h1gt ltxslapply-templates
    select"miasto"gt ltxslsort
    select"liczba-mieszk"
    order"descending"/gt lt/xslapply-templatesgtlt/xs
    ltemplategt

7
Tryby przetwarzania (modes)
  • ltxsltemplate match"/"gt lth1gtltxslvalue-of
    select"book/title"/gtlt/h1gt lth2gtSpis
    trescilt/h2gt ltxslapply-templates mode"toc"/gt
    ltxslapply-templates/gtlt/xsltemplategtltxsltemp
    late match"chapter" mode"toc"gt ltpgtlta
    href"generate-id()"gt ltxslvalue-of
    select"title"/gtlt/agtlt/pgtlt/xsltemplategtltxsltem
    plate match"chapter"gt lth2gtlta
    name"generate-id()"gt ltxslvalue-of
    select"title"/gtlt/agtlt/h2gt ltxslapply-templates/gt
    lt/xsltemplategt

8
Zmienne
  • Jak w funkcyjnych jezykach programowania
  • brak instrukcji przypisania,
  • brak efektów ubocznych.
  • Deklaracja
  • ltxslvariable name"..."/gt
  • wartosc
  • atrybut select ? wyrazenie odpowiedniego typu,
  • zawartosc elementu ? fragment drzewa wynikowego,
  • Uzycie
  • w wyrazeniach name,
  • ltxslcopy-of select"expression"/gt

9
Wykorzystanie rekursji w XSLT (1)
  • Sposób na brak prawdziwych zmiennych i petli
    iteracyjnych.
  • Przyklad suma wartosci ksiazek
  • ltbooksgt ltbookgt lttitlegtPan Tadeuszlt/titlegt
    ltqtygt12lt/qtygtltpricegt10.99lt/pricegt lt/bookgt
    ltbookgt lttitlegtMistrz i Malgorzatalt/titlegt
    ltqtygt1lt/qtygtltpricegt15.99lt/pricegt lt/bookgt
    ltbookgt lttitlegtImie Rózylt/titlegt
    ltqtygt2lt/qtygtltpricegt6.99lt/pricegt lt/bookgtlt/booksgt

10
Wykorzystanie rekursji w XSLT (2)
  • Przyklad XSLT
  • ltxsltemplate name"total-val"gt ltxslparam
    name"list"/gt ltxslchoosegt ltxslwhen
    test"list"gt ltxslvariable name"first"
    select"list1 "/gt ltxslvariable
    name"rest"gt ltxslcall-template
    name"total-val"gt ltxslwith-param
    name"list" select"listposition()!
    1 "/gt lt/xslcall-templategt
    lt/xslvariablegt ltxslvalue-of
    select"first/qty first/price
    rest"/gt lt/xslwhengt
    ltxslotherwisegt0lt/xslotherwisegt
    lt/xslchoosegtlt/xsltemplategt

11
Wykorzystanie rekursji w XSLT (3)
  • Przyklad XSLT, c.d.
  • ltxsltemplate match"/"gt ltxslvariable
    name"total"gt ltxslcall-template
    name"total-val"gt ltxslwith-param
    name"list" select"//book"/gt
    lt/xslcall-templategt lt/xslvariablegt
    ltpgtTotal sales ltxslvalue-of select"total"/gt
    lt/pgtlt/xsltemplategt

12
Ograniczona uzytecznosc zmiennych
  • Specjalny typ danych fragment drzewa wynikowego
    (result tree fragment)
  • wartosc mozna jedynie
  • skopiowac do drzewa wynikowego lub innej
    zmiennej,
  • przeksztalcic do napisu
  • nie mozna (w czystym XSLT) przeksztalcic na node
    set,
  • praktycznie niemozliwe obliczenia na zmiennych w
    kilku przebiegach.
  • Zmienna typu node setltxslvariable name"b"
    select"/books"/gtltxslfor-each
    select"b/book"gt...lt/xslfor-eachgt
  • Zmienna typu result tree fragmentltxslvariable
    name"subtotals"gt ltxslfor-each
    select"/books/book"gt ltsubtlgtltxslvalue-of
    select"qty price"/gtlt/subtlgt
    lt/xslfor-eachgtlt/xslvariablegt

13
Funkcja node-set()
  • Przeksztalca fragment drzewa wynikowego (result
    tree fragment) w zbiór wezlów (node set).
  • Niedostepna w czystym XSLT
  • Dostepna jako rozszerzenie m. in. w
  • procesorach XT, Saxon, MSXML,
  • bibliotece rozszerzen EXSLT.
  • ltxslvariable name"subtotals"gt ltxslfor-each
    select"/books/book"gt ltsubtlgtltxslvalue-of
    select"qty price"/gtlt/subtlgt
    lt/xslfor-eachgtlt/xslvariablegtltxslvalue-of
    select"sum(exslnode-set(subtotals)/subtl)"/gt

14
Generowanie przeksztalcen XSL (1)
  • Problem
  • zródlo przeksztalcenia nie zawiera metainformacji
    o strukturze dokumentu,
  • metainformacje pojawiaja sie na wyjsciu.

ltwniosek-urlopowygt ltwniosekgt ltpracownikgtSzymon
Ziololt/pracownikgt ltrodzajgtwypoczynkowylt/rodzajgt
ltodgt2003-06-20lt/odgt ltdogt2003-06-27lt/dogt
ltdni-roboczychgt6lt/dni-roboczychgt lt/wniosekgt
ltdecyzjagt ltzgodagt1lt/zgodagt ltzastepcagtJan
Kowalskilt/zastepcagt lt/decyzjagtlt/wniosek-urlopowy
gt
Zródlo Ziolo, Sz., XSLT do kwadratu, Software
2.0, nr 6/2003
15
Generowanie przeksztalcen XSL (2)
  • Rozwiazanie
  • zapisanie metainformacji w szablonie,
  • generowanie przeksztalcenia z szablonu.
  • ltdokument nazwa"wniosek-urlopowy"
    etykieta"Wniosek urlopowy"gt ltsekcja
    nazwa"wniosek" etykieta"Wniosek"gt ltpole
    nazwa"pracownik" etykieta"Pracownik"/gt
    ltpole nazwa"rodzaj" etykieta"Rodzaj urlopu"/gt
    ltpole nazwa"od" etykieta"Od dnia"/gt
    ltpole nazwa"do" etykieta"Do dnia"/gt ltpole
    nazwa"dni-roboczych" etykieta"Ilosc
    dni roboczych"/gt lt/sekcjagt ltsekcja
    nazwa"decyzja" etykieta"Decyzja przelozonego"gt
    ltpole nazwa"zgoda" etykieta"Zgoda
    przelozonego" typ"boolean"/gt
    ltpole nazwa"zastepca" etykieta"Zastepca"/gt
    lt/sekcjagtlt/dokumentgt

16
Generator przyklad (1)
  • ltxslstylesheet version"1.0"
    xmlnsxsl"http//www.w3.org/1999/XSL/Transform"
  • xmlnsres"http//www.w3.org/1999/XSL/Transfor
    mAlias"gt
  • ltxslnamespace-alias stylesheet-prefix"res"
    result-prefix"xsl"/gt
  •  
  • ltxsltemplate match"/"gt
  • ltresstylesheet version"1.0"gt
  • ltresoutput method"html"/gt
  • ltxslapply-templates/gt
  • lt/resstylesheetgt
  • lt/xsltemplategt
  • ltxsltemplate match"sekcja"gt
  • ltrestemplate match"_at_nazwa"gt
  • ltpgtltbgtltxslvalue-of select"_at_etykieta"/gtlt/bgt
    lt/pgt
  • lttablegtltresapply-templates/gtlt/tablegt
  • lt/restemplategt
  • ltxslapply-templates/gt
  • lt/xsltemplategt

17
Generator przyklad (2)
  • ltxsltemplate match"pole"gt
  • ltrestemplate match"_at_nazwa"gt
  • lttrgtlttdgtltxslvalue-of select"_at_etykieta"/gtlt/
    tdgt
  • lttdgtltbgt
  • ltxslchoosegt
  • ltxslwhen test"_at_typ'boolean'"gt
  • ltreschoosegt
  • ltreswhen test"text()'1'"gttaklt/res
    whengt
  • ltresotherwisegtnielt/resotherwisegt
  • lt/reschoosegt
  • lt/xslwhengt
  • ltxslotherwisegt
  • ltresvalue-of select"text()"/gt
  • lt/xslotherwisegt
  • lt/xslchoosegt
  • lt/bgtlt/tdgtlt/trgt
  • lt/restemplategt
  • ltxslapply-templates/gt
  • lt/xsltemplategt

18
Zastosowanie w projekcie KEDU ZUS
wyciecie dokumentu
wyciecie formularza
Arkusz stylów
Generator arkuszy stylów
Szablon
WizualizacjaHTML
19
KEDU ZUS przyklad wizualizacji
20
Formatting Objects przyklad drzewa wynikowego
  • lt?xml version"1.0" encoding"utf-8"?gtltforoot
    xmlnsfo"http//www.w3.org/1999/XSL/Format"gt...
    ltfopage-sequencegt ltfoflowgt
    ltfoblock font-size"18pt" font-weight"bold"
    text-align"centered"gtPrefacelt/foblockgt
    ltfoblock font-size"12pt" space-before"1pc"
    text-align"justified"gt This is a simple
    test document. It shows a ltfoinline
    font-style"italic"gtpartiallt/foinlinegt
    fo-result tree (page layout missing).lt/foblockgt
    lt/foflowgt lt/fopage-sequencegt...lt/forootgt

21
Formatting Objects przyklady regul
  • ltxsltemplate match"chapter"gt
    ltfoflowgtltxslapply-templates/gtlt/foflowgtlt/xslte
    mplategtltxsltemplate match"chapter/title"gt
    ltfoblock font-size"18pt" font-weight"bold"
    text-align"centered"gt
    ltxslapply-templates/gt lt/foblockgtlt/xsltemplat
    egt ltxsltemplate match"para"gt ltfoblock
    font-size"12pt" space-before"1pc"
    text-align"justified"gt ltxslapply-templates/gt
    lt/foblockgtlt/xsltemplategtltxsltemplate
    match"emphasis"gt ltfoinline font-style"italic"
    gtltxslapply-templates/gt lt/foinlinegtlt/xsltempl
    ategt

22
Narzedzia
  • Procesory XSLT
  • XT, James Clark (Java),
  • Oracle XML Parser for Java / C / PL-SQL,
  • Xalan, Apache (Java, C),
  • SAXON, Michael H. Kay (Java implementuje XSLT
    2.0 i XQuery),
  • Sablotron (C, open source),
  • Microsoft XML Core Services (MSXML 4.0),
  • XSLTC (XSLT compiler, Java), Apache.
  • Procesor XSLFO
  • FOP, Apache (Java generuje dokumenty w formacie
    PDF).
  • Edytory XSLT
  • XMLSPY, Altova
  • Xselerator XSL Editor/Debugger, MarrowSoft,
  • xslide Emacs Major Mode for XSL Stylesheets.

23
Najwazniejsze ograniczenia XSLT 1.0
  • Brak konwersji fragmentów drzewa wynikowego na
    pelnoprawne zbiory wezlów.
  • Brak mozliwosci generowania wielu dokumentów
    wyjsciowych.
  • Brak wsparcia dla grupowania wezlów.
  • Brak mozliwosci definiowania wlasnych funkcji.

24
Gdzie szukac dalej
  • EXSLT
  • www.exslt.org/
  • Kosek, J., Understanding the node-set() Function
  • www.xml.com/pub/a/2003/07/16/nodeset.html
  • Tyszko, S., Rekurencyjne szablony w XSLT
  • Software 2.0, nr 6/2002, Wydawnictwo Software
  • Ziolo, Sz., XSLT do kwadratu
  • Software 2.0, nr 6/2003, Wydawnictwo Software
Write a Comment
User Comments (0)
About PowerShow.com