XPath, XSLT, (and XSL:FO) - PowerPoint PPT Presentation

About This Presentation
Title:

XPath, XSLT, (and XSL:FO)

Description:

Title: XPath, XSLT, (and XSL:FO) Last modified by: Dawid Weiss Document presentation format: Niestandardowy Other titles: Times New Roman Arial StarSymbol Arial Black ... – PowerPoint PPT presentation

Number of Views:123
Avg rating:3.0/5.0
Slides: 32
Provided by: csPutPoz
Category:
Tags: xsl | xslt | xpath | xslt

less

Transcript and Presenter's Notes

Title: XPath, XSLT, (and XSL:FO)


1
XPath, XSLT, (and XSLFO)
Zaawansowane Aplikacje Internetowe
  • Dawid Weiss

2
Wyklad
  • XPath adresy do elementów XML
  • Czemu sluzy XPath?
  • Sciezki (ang. access paths)
  • Osie (ang. axes)
  • Warunki (ang. node tests)
  • Predykaty (ang. predicates)
  • Wyrazenia (ang. expressions)
  • XSLT transformacje plików XML
  • XSLFO prawdziwy raj dla smakoszy

3
Czemu sluzy XPath?
  • Gdy XML zyskal popularnosc, powstaly technologie
    pochodne, potrzebny byl jednoznaczny opis adresu
    elementu w pliku XML
  • XPath przypomina sciezki w systemie plików, z
    paroma dodatkowymi elementami
  • Moze adresowac wiecej niz jeden element
  • Posiada warunki
  • Posiada wyrazenia

4
Xpath XML jako drzewo
  • XPath traktuje XML jako drzewo elementów
  • Kazdy z lisci moze byc
  • tagiem, atrybutem, instrukcja sterujaca,
    komentarzem, tekstem, elementem namespace
  • Liscie sa ze soba powiazane galeziami, które
    nazywamy osiami

5
Przyklad reprezentacji w postaci drzewa
lt?xml version"1.0" ?gt lttopicsgt ltpoliticsgt
ltleadersgt ltperson id"shussein"
country"iraq"gt
ltnamegtSaddamlt/namegtlt/persongt ltperson
id"gbush" country"us"gt
ltnamegtGeorgelt/namegtlt/persongt lt/leadersgt
lt/politicsgt ltmoviesgt ltdirectorsgt
ltperson id"pgreeneway"gt
ltnamegtPeterlt/namegtlt/persongt ltperson
id"slee"gt ltnamegtSpikelt/namegtlt/persongt
lt/directorsgt ltmovie
director"pgreeneway"
rank"great"gtProspero's bookslt/moviegt
ltmoviegtGhost Doglt/moviegt lt/moviesgt lt/topicsgt
6
Proste sciezki dostepu
lt?xml version"1.0" ?gt lttopicsgt ltpoliticsgt
ltleadersgt ltperson id"shussein"
country"iraq"gt ltnamegtSaddamlt/namegtlt/p
ersongt ltperson id"gbush"
country"us"gt ltnamegtGeorgelt/namegtlt/persongt
lt/leadersgt lt/politicsgt ltmoviesgt
ltdirectorsgt ltperson
id"pgreeneway"gt ltnamegtPeterlt/namegtlt/persongt
ltperson id"slee"gt ltnamegtSpikelt/nam
egtlt/persongt lt/directorsgt ltmovie
director"pgreeneway" rank"great"gtProspero's
bookslt/moviegt ltmoviegtGhost Doglt/moviegt
lt/moviesgt lt/topicsgt
/topics/politics/leaders/person
/topics/movies/directors
/topics/movies/movie/_at_director
/topics/movies/movie/text()
7
Nazwy sciezek dostepu (osi)
  • Parent
  • Child
  • Ancestor
  • Ancestor-or-self
  • Descendant
  • Descendant-or-self
  • Preceding
  • Preceding-sibling
  • Following
  • Following-sibling
  • Self
  • Attribute
  • Namespace

8
Sciezki dostepu, c.d.
lt?xml version"1.0" ?gt lttopicsgt ltpoliticsgt
ltleadersgt ltperson id"shussein"
country"iraq"gt ltnamegtSaddamlt/namegtlt/p
ersongt ltperson id"gbush"
country"us"gt ltnamegtGeorgelt/namegtlt/persongt
lt/leadersgt lt/politicsgt ltmoviesgt
ltdirectorsgt ltperson
id"pgreeneway"gt ltnamegtPeterlt/namegtlt/persongt
ltperson id"slee"gt ltnamegtSpikelt/nam
egtlt/persongt lt/directorsgt ltmovie
director"pgreeneway" rank"great"gtProspero's
bookslt/moviegt ltmoviegtGhost Doglt/moviegt
lt/moviesgt lt/topicsgt
//person/ancestorleaders/person
//leaders/person
9
Predykaty
  • Predykaty umozliwiaja funkcjonalne wyeliminowanie
    niektórych wezlów
  • /pathpredicate
  • Predykaty moga zawierac funkcje i operatory
  • Tylko wezly dla których predykat jest prawdziwy
    zostaja wlaczone do wyniku

10
Operatory
11
Funkcje
12
Funkcje i predykaty w praktyce
lt?xml version"1.0" ?gt lttopicsgt ltpoliticsgt
ltleadersgt ltperson id"shussein"
country"iraq"gt ltnamegtSaddamlt/namegtlt/p
ersongt ltperson id"gbush"
country"us"gt ltnamegtGeorgelt/namegtlt/persongt
lt/leadersgt lt/politicsgt ltmoviesgt
ltdirectorsgt ltperson
id"pgreeneway"gt ltnamegtPeterlt/namegtlt/persongt
ltperson id"slee"gt ltnamegtSpikelt/nam
egtlt/persongt lt/directorsgt ltmovie
director"pgreeneway" rank"great"gtProspero's
bookslt/moviegt ltmoviegtGhost Doglt/moviegt
lt/moviesgt lt/topicsgt
//personposition() 1
13
XPath za i przeciw
  • Czy latwo sie nauczyc XPath?
  • Tak, choc czasem nie jest latwo
  • Czy XPath jest uzyteczny?
  • Jak najbardziej, ma wiele zastosowan, ale glównie
    uzywany jest w XSLT

count(//document_at_id current()/_at_refid/preceding
document)1
14
XSLT
  • XSLT Extensible Stylesheet Language
    Transformations
  • Regulowy jezyk przetwarzania dokumentów XML w
    inne dokumenty XML (lub w dokumenty tekstowe)
  • Jezyk sam jest zapisany oczywiscie w XML!
  • Uzywa jezyka XPath do adresowania elementów pliku
    zródlowego
  • Podsumowujac XSLT jest jezykiem programowania

15
Prosty plik XSLT i reguly
lt?xml version"1.0"?gt ltxslstylesheet
xmlnsxsl"http//www.w3.org/1999/XSL/Transform"
version"1.0"gt ltxsltemplate match"/"gt
This template lists all persons
ltxslapply-templates select"//person" /gt
lt/xsltemplategt ltxsltemplate
match"person"gt Person (idltxslvalue-of
select"_at_id" /gt) ltxslvalue-of
select"name" /gt lt/xsltemplategt
ltxsltemplate match"" /gt lt/xslstylesheetgt
16
Przetwarzanie w XSLT
  • Zawsze zaczyna sie w tagu glównym (ang. root
    node) '/'
  • Pasujace reguly sa dopasowywane i uruchamiane
  • Zmienia sie wezel kontekstu (ang. context node) w
    zaleznosci od odpalonych regul
  • Procedura jest powtarzana rekurencyjnie dla
    nowych wezlów kontekstowych

17
XSLT przetwarzanie
lt?xml version"1.0" ?gt lttopicsgt ltpoliticsgt
ltleadersgt ltperson id"shussein"
country"iraq"gt
ltnamegtSaddamlt/namegtlt/persongt ltperson
id"gbush" country"us"gt
ltnamegtGeorgelt/namegtlt/persongt lt/leadersgt
lt/politicsgt ltmoviesgt ltdirectorsgt
ltperson id"pgreeneway"gt
ltnamegtPeterlt/namegtlt/persongt ltperson
id"slee"gt ltnamegtSpikelt/namegtlt/persongt
lt/directorsgt ltmovie
director"pgreeneway"
rank"great"gtProspero's
bookslt/moviegt ltmoviegtGhost Doglt/moviegt
lt/moviesgt lt/topicsgt
lt?xml version"1.0"?gt ltxslstylesheet
xmlnsxsl"http//www.w3.org/1999/XSL/Transform"
version"1.0"gt ltxsltemplate match"/"gt
This template lists all persons
ltxslapply-templates select"//person"
/gt lt/xsltemplategt ltxsltemplate
match"person"gt Person (idltxslvalue-of
select"_at_id" /gt) ltxslvalue-of
select"name" /gt lt/xsltemplategt
ltxsltemplate match"" /gt lt/xslstylesheetgt
18
Ale po co jest XSLT?!
  • Aby zmienic strukture pliku XML!

19
lt?xml version"1.0" encoding"Cp852"?gt ltdepartment
sgt ltdepartment name"Computer Science"gt
ltpersongt ltnamegtDawidlt/namegt lt/persongt
ltpersongt ltnamegtKrzysztoflt/namegt
lt/persongt lt/departmentgt ltdepartment
name"Agriculture"gt ltpersongt
ltnamegtDawidlt/namegt lt/persongt lt/departmentgt
ltdepartment name"Spacecrafting"gt ltpersongt
ltnamegtKrzysztoflt/namegt lt/persongt
lt/departmentgt ltdepartment name"Hyperactive
Forestry"gt ltpersongt ltnamegtBoguslt/namegt
lt/persongt lt/departmentgt lt/departmentsgt
lt?xml version"1.0" ?gt ltpeoplegt ltpersongt
ltnamegtDawidlt/namegt ltdeptgtComputer
Sciencelt/deptgt ltdeptgtAgriculturelt/deptgt
lt/persongt ltpersongt
ltnamegtKrzysztoflt/namegt ltdeptgtSpacecrafting
lt/deptgt ltdeptgtComputer Sciencelt/deptgt
lt/persongt ltpersongt
ltnamegtBoguslt/namegt ltdeptgtHyperactive
Forestrylt/deptgt lt/persongt lt/peoplegt
20
lt?xml version"1.0"?gt ltxslstylesheet
xmlnsxsl"http//www.w3.org/1999/XSL/Transform"
version"1.0"gt ltxsloutput encoding"Cp852"
method"xml" indent"yes" /gt ltxsltemplate
match"/"gt ltdepartmentsgt
ltxslapply-templates select"//dept" /gt
lt/departmentsgt lt/xsltemplategt
ltxsltemplate match"dept"gt ltxslif
test"count(.//precedingdept./text()
current()/text()) 0"gt
ltdepartmentgt ltxslattribute
name"name"gt ltxslvalue-of
select"./text()" /gt
lt/xslattributegt
ltxslvariable name"currentDept"
select"./text()" /gt
ltxslfor-each select"//person./dept/text()
currentDept"gt ltpersongt
ltnamegtltxslvalue-of
select"name" /gtlt/namegt
lt/persongt lt/xslfor-eachgt
lt/departmentgt lt/xslifgt
lt/xsltemplategt lt/xslstylesheetgt
21
Zad. domowe!
  • Napisz arkusz XSLT, który wykona transformacje
    odwrotna!

lt?xml version"1.0" encoding"Cp852"?gt ltdepartment
sgt ltdepartment name"Computer Science"gt
ltpersongt ltnamegtDawidlt/namegt lt/persongt
ltpersongt ltnamegtKrzysztoflt/namegt
lt/persongt lt/departmentgt ltdepartment
name"Agriculture"gt ltpersongt
ltnamegtDawidlt/namegt lt/persongt lt/departmentgt
ltdepartment name"Spacecrafting"gt ltpersongt
ltnamegtKrzysztoflt/namegt lt/persongt
lt/departmentgt ltdepartment name"Hyperactive
Forestry"gt ltpersongt ltnamegtBoguslt/namegt
lt/persongt lt/departmentgt lt/departmentsgt
lt?xml version"1.0" ?gt ltpeoplegt ltpersongt
ltnamegtDawidlt/namegt ltdeptgtComputer
Sciencelt/deptgt ltdeptgtAgriculturelt/deptgt
lt/persongt ltpersongt
ltnamegtKrzysztoflt/namegt ltdeptgtSpacecrafting
lt/deptgt ltdeptgtComputer Sciencelt/deptgt
lt/persongt ltpersongt
ltnamegtBoguslt/namegt ltdeptgtHyperactive
Forestrylt/deptgt lt/persongt lt/peoplegt
22
Tylko po to jest ten XSLT?
  • XSLT jest równiez jezykiem zapytan do plików XML,
    podobnie jak SQL jest jezykiem zapytan do baz
    danych
  • XQuery.

ltxsltemplate match"/"gt
ltPeopleFromComputerScienceInstitutegt
ltxslcopy-of select"//person./dept/text()
'Computer Science'/name" /gt
lt/PeopleFromComputerScienceInstitutegt
lt/xsltemplategt
ltPeopleFromComputerScienceInstitutegt
ltnamegtDawidlt/namegt ltnamegtKrzysztoflt/namegt lt/Peop
leFromComputerScienceInstitutegt
23
Tylko po to jest ten XSLT?
  • Jezyk, który umozliwia konwersje z XML do HTML!
  • Umozliwia skupienie sie na tresci strony, a nie
    jej wygladzie

24
Example of XML HTML conversion
25
(No Transcript)
26
(No Transcript)
27
ltxsltemplate match"download"gtltxslif
test"not(_at_lng) or lang_at_lng"gt lttable
class"download"gt ltxslattribute
name"style"gt ltxslchoosegt
ltxslwhen test"_at_float'right'"gtfloat right
margin-right 0em clear bothlt/xslwhengt
ltxslwhen test"_at_float'inline'"gtdisplay
inlinelt/xslwhengt ltxslotherwisegtfloat
left margin-left 0em clear bothlt/xslotherwis
egt lt/xslchoosegt lt/xslattributegt
lttrgt lttd class"pic" align"center"
valign"middle" rowspan"2"gt ltimggt
ltxslattribute name"src"gt
ltxslcall-template name"rewriteImgURL"gt
ltxslwith-param name"href" select"concat('/gf
x/icons/',substring(_at_src,stringength(_at_src)-2),'.gi
f')" /gt lt/xslcall-templategt
lt/xslattributegt lt/imggt lt/tdgt lttd
class"link" align"left" valign"top"gt
ltagt ltxslattribute name"href"gt
ltxslcall-template name"rewriteURL"gt
ltxslwith-param name"href" select"_at_src" /gt
lt/xslcall-templategt
lt/xslattributegt ltxslapply-templates /gt
lt/agt
lt/tdgt lt/trgt lttrgt lttd class"desc"
align"left" valign"top"gt Download file
lt/tdgt lt/trgt lt/tablegt lt/xslifgtlt/xsltemplategt
28
Za i przeciw XSLT
  • XSLT jest bardzo wszechstronnym jezykiem
  • Styl programowania deklaratywnego nie jest dla
    kazdego
  • Latwo osiagnac separacje tresci od prezentacji
    (XML-gtHTML)!
  • XSLT nie jest najszybszy
  • XSLT nie jest przystosowany do produkowania
    formatów binarnych (PDF)

29
XSLFO jezyk opisu graficznego
  • XSLFO opisuje w postaci pliku XML graficzny
    rozklad elementów strony na pewnym nosniku
    (papier, WWW)
  • Procesory XSLFO moga produkowac pliki PDF, PS i
    inne
  • Apache FOP
  • RenderX XEP
  • XSLFO jest dosc skomplikowany, ale dzieki XSLT
    mozna osiagnac separacje tresci od formatowania
    (format DocBook tak dziala!)

30
Przyklad pliku XSLFO file
lt?xml version"1.0" encoding"UTF-8"?gt ltforoot
xmlnsfo"http//www.w3.org/1999/XSL/Format"gt
ltfolayout-master-setgt ltfosimple-page-mas
ter master-name"my-page"gt
ltforegion-body margin"1in"/gt
lt/fosimple-page-mastergt lt/folayout-master-se
tgt ltfopage-sequence master-reference"my-pag
e"gt ltfoflow flow-name"xsl-region-body"gt
ltfoblockgtHello, world!lt/foblockgt
lt/foflowgt lt/fopage-sequencegt lt/forootgt
31
Dziekuje
  • NA ZAJECIA PROSZE SIE PRZYGOTOWAC!
  • ZADANIA DOMOWE MUSZA BYC ODROBIONE!
Write a Comment
User Comments (0)
About PowerShow.com