Title: Implementacja procesora XSLT w jezyku Ocaml
1Implementacja procesora XSLT w jezyku Ocaml
Prezentacja tematu pracy magisterskiej
2Plan prezentacji
- Omówienie tematyki
- XML
- DOM
- XSLT i XPath
- Co ja chce zrobic
- Ocaml
- Czesci skladowe mojego projektu
3XML - Extensible Markup Language
- XML to sposób zapisywania w plikach tekstowych
róznorakich danych z zachowaniem ich struktury - XML jest podzbiorem standardu SGML prostszym w
parsowaniu, przetwarzaniu
4Przykladowy dokument XML
- lt?xml version"1.0" encoding"UTF-8"?gt
- ltdokument data-wydania"2002.10.12"gt
- lttytulgtPrzykladowy dokument XMLlt/tytulgt
- lttrescgtNajwiekszym miastem w ltkraj
sym'pl'gtPolscelt/krajgt jest ltmiastogtWarszawalt/mias
togt. - lt/trescgt
- lt/dokumentgt
5Przykladowy dokument XML
- lt?xml version"1.0" encoding"UTF-8"?gt
- ltdokument data-wydania"2002.10.12"gt
- lttytulgtPrzykladowy dokument XMLlt/tytulgt
- lttrescgtNajwiekszym miastem w ltkraj
sym'pl'gtPolscelt/krajgt jest ltmiastogtWarszawalt/mias
togt. - lt/trescgt
- lt/dokumentgt
deklaracja XML
6Przykladowy dokument XML
- lt?xml version"1.0" encoding"UTF-8"?gt
- ltdokument data-wydania"2002.10.12"gt
- lttytulgtPrzykladowy dokument XMLlt/tytulgt
- lttrescgtNajwiekszym miastem w ltkraj
sym'pl'gtPolscelt/krajgt jest ltmiastogtWarszawalt/mias
togt. - lt/trescgt
- lt/dokumentgt
element glówny dokument
7Przykladowy dokument XML
- lt?xml version"1.0" encoding"UTF-8"?gt
- ltdokument data-wydania"2002.10.12"gt
- lttytulgtPrzykladowy dokument XMLlt/tytulgt
- lttrescgtNajwiekszym miastem w ltkraj
sym'pl'gtPolscelt/krajgt jest ltmiastogtWarszawalt/mias
togt. - lt/trescgt
- lt/dokumentgt
elementy tytul, tresc
8Przykladowy dokument XML
- lt?xml version"1.0" encoding"UTF-8"?gt
- ltdokument data-wydania"2002.10.12"gt
- lttytulgtPrzykladowy dokument XMLlt/tytulgt
- lttrescgtNajwiekszym miastem w ltkraj
sym'pl'gtPolscelt/krajgt jest ltmiastogtWarszawalt/mias
togt. - lt/trescgt
- lt/dokumentgt
atrybuty data-wydania, sym
9Inne przyklady
- ...
- ltposition-xgt120lt/position-xgt
- ltposition-ygt213lt/position-ygt
- ltshow-window-content/gt
- ltstylesheet href"default.css"/gt
- ...
ustawienia programów
10Inne przyklady
- ...
- ltrowgtltidgt63982lt/idgtltnamegtSmithlt/namegt...lt/rowgt
- ltrowgtltidgt63987lt/idgtltnamegtMorganlt/namegt...lt/rowgt
- ltrowgtltidgt63988lt/idgtltnamegtMorganlt/namegt...lt/rowgt
- ...
dane z bazy danych
11Dowolna struktura - zaleta czy wada?
Dowolnosc w nazywaniu elementów, atrybutów oraz
ich strukturze, zagniezdzaniu... Latwo pisac,
trudniej analizowac Do konkretnego zastosowania
warto ustalic strukture dokumentu XML, stworzyc
pewna klase dokumentów ("zastosowanie XML")
12DTD - Document Type Definition
- okresla dopuszczalne nazwy elementów
- okresla typ zawartosci elementów
- dla danego elementu okresla atrybuty, ich typ
zawartosci, wartosc domyslna, ... - definiuje encje, które mozna wstawiac w dokumencie
13Przyklad DTD
- lt!DOCTYPE dokument
- lt!ELEMENT dokument (tytul?, autor?, tresc)gt
- lt!ATTLIST dokument
- data-wydania CDATA IMPLIEDgt
- lt!ELEMENT tytul PCDATAgt
- lt!ELEMENT tresc (PCDATAmiastokrajbr)gt
- lt!ELEMENT miasto PCDATAgt
- lt!ELEMENT kraj PCDATAgt
- lt!ATTLIST kraj sym CDATA "pl"gt
- lt!ELEMENT br EMPTYgt
- lt!ENTITY RP "Rzeczpospolita Polska"gt
- gt
14DOM - Document Object Model
O dokumencie mozna myslec jak o drzewie, którego
wezlami sa elementy, atrybuty, wezly
tekstowe Formalnie okresla to DOM - rekomendacja
W3C (IDL i opis dzialania) Najnowsza obowiazujaca
wersja DOM level 2 (13.11.2001) sklada sie z
jadra i niezaleznych modulów
15DOM - fragment IDL
interface Node const unsigned short
ELEMENT_NODE 1 readonly attribute DOMString
nodeName attribute DOMString nodeValue
raises(DOMException) on setting readonly
attribute unsigned short nodeType readonly
attribute Node parentNode readonly attribute
NodeList childNodes readonly attribute Node
firstChild readonly attribute Node
previousSibling readonly attribute NamedNodeMap
attributes Node insertBefore(in Node newChild,
in Node refChild)
raises(DOMException) ...
16Prezentacja danych XML
Czesto XML zawiera dane, które chcielibysmy
prezentowac ludziom. XML sam w sobie to tylko
struktura, a nie znaczenie czy wyglad. Ta sama
tresc mozna chciec prezentowac na wiele róznych
sposobów. Dobrze by bylo móc dodawac informacje o
prezentacji "obok" dokumentów XML.
17CSS - Cascading Style Sheets
Dosc prosty system przypisujacy elementom
dokumentu obiekty wizualne i dajacy duze
mozliwosci ich formatowania. Nie pozwala na
zmiane kolejnosci, wielokrotne uzywanie tych
samych fragmentów dokumentu itp. Skladnia rózna
od XML utrudnia parsowanie. Zaimplementowany w
wiekszosci przegladarek internetowych.
18Transformacje dokumentów
A
a
B
C
d
b
e
c
D
E
19XSL XSLT FO
Extensible Stylesheet Language zostal
zaprojektowany z mysla o prezentacji danych z
dowolnych dokumentów XML. Formating Objects to
zastosowanie XML stworzone z mysla o prezentacji.
Zawiera elementy typu "blok", "tabela", ... XSL
Transformation - jezyk transformacji
umozliwiajacy przeksztalcenie dowolnego dokumentu
XML do FO.
20 XSLT
XSLT pozwala na przeksztalcenia nie tylko do FO,
ale do dowolnego dokumentu XML. Wynik
przeksztalcenia mozna zapisywac jako XML, HTML
lub plaski tekst. Arkusz XSLT jest dokumentem
XML, nie trzeba specjalnych parserów. XSLT jest
jezykiem deklaratywnym.
21 Budowa arkusza XSLT
Arkusz XSLT sklada sie z szablonów. Kazdy szablon
mówi jak zamieniac jakis wezel (wezly) dokumentu
wejsciowego na fragment dokumentu
wyjsciowego. Predefiniowany szablon przepisuje na
wyjscie zawartosc tekstowa elementu i wywoluje
szablony dla podelementów. Tranformacja polega na
wywolaniu szablonu dla elementu glównego.
22 Budowa arkusza XSLT
ltxslstylesheetgt ltxsloutput method"html"/gt
ltxsltemplate match"bold"gt ltbgt
ltxslapply-templates/gt lt/bgt lt/xsltemplategt
ltxsltemplate match"//_at_id"gt ID ltxslvalue-of
select"."/gt lt/xsltemplategt lt/xslstylesheetgt
23 Tworzenie wezlów wyjsciowych
- wpisanie ich po prostu w tresc szablonu
- elementy tworzace dokument wyjsciowy
- ltxslelement name"elem"gt wartosc lt/xslelementgt
- ltxslattribute name"att"gt wartosc
lt/xslattributegt - ltxsltextgt tekst lt/xsltextgt
24 Sterowanie
Warunkowe generowanie zawartosci ltxslif
test"warunek"gt zawartosc lt/xslifgt ltxslchoosegt
ltxslwhen test"warunek1"gt...lt/xslwhengt
ltxslwhen test"warunek2"gt...lt/xslwhengt
ltxslotherwisegt...lt/xslotherwisegt lt/xslchoosegt D
la wszystkich wezlów okreslonych przez
sciezke ltxslfor-each select"sciezka"gt
zawartosc lt/xslfor-eachgt
25 XPath - podstawy
XPath to jezyk wyrazen sluzacy do adresowania
czesci dokumentu XML. Wynikiem wyrazenia XPath
jest grupa wezlów (np. jeden element, jeden wezel
tekstowy, lista elementów, lista atrybutów...).
26 XPath - podstawy
Os, adresowanie wezlów w drzewie dokumentu
podobne do adresowania plików w drzewie
katalogów, rodzaj wezla. following/doc/section/p
ara attributestyle descesant-or-selfnode() Moz
liwe sa skróty i napisy wieloznaczne //miasto sec
tion//_at_id ../para
27 XPath - arytmetyka
W wyrazeniach moga byc zapisane warunki
logiczne sectionposition()3
section3 a_at_href XPath zawiera w sobie
arytmetyke /parposition() (count(/par) div
2) Mozliwe sa skomplikowane wyrazenia //table_at_
id lt 10//td_at_t'a' or _at_t'b'/_at_
28 "Funkcje" w XSLT
W arkuszach XSLT mozna deklarowac
"zmienne" ltxslvariable name"x"gt wartosc
lt/xslvariablegt ltxslif test"x gt
7"gt...lt/xslifgt Szablony moga miec nazwy i
parametry ltxsltemplate name"tem1"gt
ltxslparam name"x" select"0"/gt ... lt/xsltemplat
egt
29 "Funkcje" w XSLT
Mozna wywolac szablon z okreslonymi
parametrami ltxslcall-template name"tem1"gt
ltxslwith-param name"x" select"0"/gt lt/xslcall-t
emplategt Dopuszczalna jest rekurencja.
30 Silnia w XSLT
ltxsltemplate name"silnia"gt ltxslparam
name"n"/gt ltxslparam name"res" select"1"/gt
ltxslchoosegt ltxslwhen test"n gt 1"gt
ltxslcall-template name"silnia"gt
ltxslwith-param name"n" select"n-1"/gt
ltxslwith-param name"res" select"n
res"/gt lt/xslcall-templategt lt/xslwhengt
ltxslotherwisegt res lt/xslotherwisegt
lt/xslchoosegt lt/xsltemplategt
31 Ocaml
- Jezyk programowania funkcyjnego, skladniowo
podobny do SML, gorliwy. - Rozbudowany system modulów (sygnatury, struktury,
funktory), rozlaczna kompilacja. - Efektywny kompilator i optymalizator.
- Imperatywne i obiektowe rozszerzenia.
32Podzial na moduly
- Unicode
- DOM
- Parser XML
- XPath
- XSLT
33 Unicode
- Miedzynarodowy standard kodowania znaków. Brak
wsparcia w Ocamlu. - W moim module
- 16 bitowe znaki i wybrane pary, int ?
- napisy - tablice lub listy tablic
- funkcje potrzebne do pracy z napisami
- odczyt i zapis do UTF-16, UTF-8 i jednobajtowych
standardów ISO-8859-X
34 DOM
Implementacja DOM level2 Core jak najblizsza
rekomendacji. Model obiektowy - wykorzystam
obiektowe rozszerzenia Ocamla
35 Parser
Oparty o napisy Unicodowe, implementacja od
podstaw. Tworzy obiekt dokumetu DOM
(drzewo). Nalezy pamietac o DTD (inna skladnia od
prostej zawartosci XML).
36 XPath
- typy dla wartosci wyrazen (bool, number, text,
node-set) - parser wyrazen
- i obliczanie... (sciezki, warunki logiczne,
arytmetyka)
37Procesor XSLT
- Korzystajac z implementacji DOM i XPath dokonuje
tranformacji dokumentów. - dopasowywanie szablonów
- parametry i szablony (funkcje)
- serializer (do XML, HTML, tekstu)