background image

 

 

 slajd 1

©  J.Rumiński

Jacek Rumiński

XML a bazy danych

Eksploracja danych 

Kontakt: 

Katedra Inżynierii Biomedycznej, pk. 

106,

tel.: 3472678, fax: 3461757, 
e-mail: jwr@eti.pg.gda.pl

background image

 

 

 slajd 2

©  J.Rumiński

Omówienie planu 
wykładów i ćwiczeń 
laboratoryjnych

Omówienie ogólnych 
zagadnień 
organizacyjnych

background image

 

 

 slajd 3

©  J.Rumiński

Jacek Rumiński

Język XML jako sposób 

zapisywania informacji 

źródłowych 

Kontakt: 

Katedra Inżynierii Biomedycznej, pk. 

106,

tel.: 3472678, fax: 3461757, 
e-mail: jwr@eti.pg.gda.pl

background image

 

 

 slajd 4

©  J.Rumiński

Literatura pomocnicza:

-XML, XSL, XPath – rekomendacje, specyfikacje i 
podręczniki na stronach 

www.w3c.org

 ora

www.xml.

com

-podręczniki drukowane o XML, np.: XML. Księga 
eksperta
,

Rusty Harold, Wydawnictwo Helion 

-XML a bazy danych: 
http://www.rpbourret.com/xml/XMLAndDatabases.htm 

background image

 

 

 slajd 5

©  J.Rumiński

Plan wykładu:

1.

1.

Wprowadzenie – XML a bazy danych;

Wprowadzenie – XML a bazy danych;

2. Cele XML;

3. Podstawowe definicje i pojęcia;

4. Charakterystyka dokumentu XML;

5. Rozbiór składniowy dokumentu XML;

6. Poprawność dokumentu XML;

7. Metody definicji typów dokumentów: DTD, XML-

Schema;

8. Rodzaje dokumentów XML i formy ich składowania;

9. NXD – Native XML Databases;

10. Wyszukiwanie i przeszukiwanie dokumentów XML: 

XPath a XQuery;

11. Przekształcanie dokumentów XML: XSL, XSLT, XPath, 

FO;

12. Zastosowania XML

background image

 

 

 slajd 6

©  J.Rumiński

XML - eXtensible Markup 

Language – Rozszerzalny Język 

Znaczników

Znaczników

 –  dokument budowany jest w 

oparciu o elementy 

identyfikowane 

przez znaczniki 

(ang. tag)

Język

 – 

dokument budowany 

jest zgodnie z 

określonymi 

zasadami składni, 

oraz w 

oparciu o zdefiniowany 
alfabet, czyli znaczniki

Rozszerzalny

 – 

wykorzystywane w 

dokumencie 

elementy 

języka, znaczniki, 
projektowane są przez 

użytkownika (projektanta 
schematu dokumentu)

background image

 

 

 slajd 7

©  J.Rumiński

Przykładowy dokument XML – widok 
uproszczony

element

atrybut

znacznik

background image

 

 

 slajd 8

©  J.Rumiński

Przykładowy dokument XML – widok pełny

wartość

elementu

wartość atrybutu

background image

 

 

 slajd 9

©  J.Rumiński

XML a bazy danych:

1. XML jest uniwersalnym formatem składowania 

danych.

2. Dokument XML zawiera logicznie uporządkowane 

dane.

3. Dokument XML może zawierać opisy 

wielokrotnych instancji tej samej klasy.

4. Dokument XML jest bazą danych.

5. XML nie jest systemem zarządzania bazami 

danych.

6. Dokumenty XML lub dane dokumentów XML 

podlegają składowaniu w bazach danych.

background image

 

 

 slajd 10

©  J.Rumiński

Charakterystyka porównawcza XML z 
systemami zarządzania relacyjnymi bazami 
danych (SZRBD)

XML

SZRBD

Dane w pojedynczej 

strukturze hierarchicznej

Dane w wielu relacjach 

(tabelach)

Węzły struktury (elementy) 

mogą posiadać wartość 

własną oraz liczne wartości 

atrybutów

Komórki tabel przechowują 

pojedyncze wartości

Elementy mogą być 

zagnieżdżone

Wartości komórek są 

atomowe

Kolejność elementów jest 

określona

Kolejność krotek (wierszy) 

nie jest definiowana

Schemat dokumentu jest 

opcjonalny

Schemat bazy jest 

konieczny

Bezpośrednie składowanie 

zbioru danych dokumentu 

w XML

Dane dokumentu rozłożone 

na zbiór atrybutów/relacji

Wyszukiwanie danych 

poprzez dedykowane 

języki, np.: XQuery

Wyszukiwanie danych 

poprzez język SQL

background image

 

 

 slajd 11

©  J.Rumiński

XML a bazy danych – podstawowe 

zadania:

1. Składowanie danych w dokumentach 

XML

2. Składowanie dokumentów XML

3. Wyszukiwanie dokumentów XML

4. Wyszukiwanie danych z 

dokumentów XML

background image

 

 

 slajd 12

©  J.Rumiński

XML a bazy danych – scenariusze 

powiązań

RDB1

Synteza 

dokumentu 

XML

RDB2

RDB1

RDB2

Prezentacja 

dokumentu 

XML

Składowanie 

dokumentu 

XML

NXD1

WWW

NXD1

Rozbiór (analiza) 

dokumentu 

XML

Transformacja 

i prezentacja 

w sieci WWW

NXD – Native XML Database

background image

 

 

 slajd 13

©  J.Rumiński

Plan wykładu:

1. Wprowadzenie – XML a bazy danych;

2. Cele XML;

3. Podstawowe definicje i pojęcia

;

;

4. Charakterystyka dokumentu XML;

5. Rozbiór składniowy dokumentu XML;

6. Poprawność dokumentu XML;

7. Metody definicji typów dokumentów: DTD, XML-

Schema;

8. Rodzaje dokumentów XML i formy ich składowania;

9. NXD – Native XML Databases;

10. Wyszukiwanie i przeszukiwanie dokumentów XML: 

XPath a XQuery;

11. Przekształcanie dokumentów XML: XSL, XSLT, XPath, 

FO;

12. Zastosowania XML

background image

 

 

 slajd 14

©  J.Rumiński

Podstawowe cele XML:

-

XML powinien umożliwiać tworzenie dokumentów 
o strukturze wyznaczanej przez definiowane 
znaczniki,

-

Dokument XML powinien być prosty i szybki do 
utworzenia, czytelny dla twórcy i łatwo 
interpretowany przez programy komputerowe,

-

XML powinien być kompatybilny z SGML,

-

Dokumenty XML powinny być łatwo wymieniane 
przez Internet i przetwarzane oraz prezentowane 
w ramach sieci WWW,

-

XML powinien wspomagać różne typy aplikacji, 

-

Liczba cech opcjonalnych XML powinna być 
minimalna,

-

Projektowanie dokumentu XML powinno 
umożliwiać weryfikację jego poprawności.

background image

 

 

 slajd 15

©  J.Rumiński

Popularność XML – dlaczego?

HTML jest językiem bardzo popularnym, i co ważniejsze 

znanym i stosowanym przez wiele osób (niekoniecznie 
informatyków).

Dlaczego zatem XML? 

Problem z HTML:

1. Ściśle określone znaczniki HTML służą do opisu 

prezentacji, nie do opisu danych.

Przykładowo:

Co oznacza fragment kodu: 

<td> 3472678</td>

-

liczbę studentów na sali?

-

wysokość czesnego?

-

odległość pomiędzy Gdańskiem a Warszawą?

-

hasło do ciekawego serwisu w Internecie?

background image

 

 

 slajd 16

©  J.Rumiński

Dany jest fragment kodu HTML:

<p><b>Jacek Rumiński</b>

<br>

Katedra Inżynierii Biomedycznej

<br>

3472678

Przetworzenie kodu przez przeglądarkę wygeneruje 
wynik:

Jacek Rumiński

Katedra Inżynierii Biomedycznej

3472678

Czy maszyna (algorytm) jest w stanie zinterpretować ten kod? 
Czym jest 3472678?

Przykład kolejny:

background image

 

 

 slajd 17

©  J.Rumiński

Jak w powyższym kodzie można znaleźć nazwę 

Katedry?

Algorytm 1. Jeśli <p> ma dwa <br> to po drugim <br> 
dany jest numer telefonu. 

Jak widać algorytm nie jest zbyt uniwersalny, co jest 
konsekwencją braku informacji wspomagającej 
interpretację w samym dokumencie HTML.

Przechowanie powyższej informacji (HTML) w kodzie XML 
może wyglądać następująco:

<pracownik>

<imię>Jacek</imię>
<nazwisko> Rumiński </nazwisko>
<katedra>

<nazwa>Katedra Inżynierii 

Biomedycznej</nazwa>

</katedra>
<kontakt>

<telefon>3472678</telefon>

<kontakt>

</pracownik>

background image

 

 

 slajd 18

©  J.Rumiński

Dany wyżej kod XML jest czytelny dla twórcy i 
potencjalnego użytkownika. Łatwo też stworzyć 
algorytm interpretujący treść, np.:

Algorytm 2. Jeśli nazwa elementu jest „telefon” to jego 
treść jest numerem telefonu.

Dane zapisane w dokumencie XML mogą być 
zaprezentowane dokładnie w taki sam sposób jak dla 
wcześniejszego przykładu z HTML, oraz na miliony 
innych sposobów.

Charakterystyczną cechą dokumentów XML jest więc 
separacja opisu danych od opisu ich prezentacji, 
definiowanej poza XML. Można zatem wygenerować 
HTML z opisem prezentacji danych z dokumentu XML. 

XML jest bardziej uporządkowany niż HTML, nie 
umożliwia przykładowo: przeplatania znaczników, 
omijania znaczników końca, itd. Uporządkowaną na wzór 
XMLa wersją HTMLa jest XHTML.

background image

 

 

 slajd 19

©  J.Rumiński

Zgodnie z prezentowanymi celami utworzenia XML, 
powstał standard sieci WWW, którego aplikacje są 
obecnie jedną z najbardziej rozwijających się dziedzin 
praktycznego zastosowania informatyki w składowaniu i 
wymianie danych. XML włączono do kanonu 
uniwersalnych technologii:

-TCP/IP – uniwersalna sieć;
-HTML – uniwersalna prezentacja danych;
-XML – uniwersalne składowanie danych;
-Java – uniwersalny kod.

Do najbardziej istotnych potomków XMLa, należy 
zaliczyć: XSL, MathML, SVG, XQuery, XPath, SMIL, 
XHTML, SOAP, .....

background image

 

 

 slajd 20

©  J.Rumiński

Plan wykładu:

1. Wprowadzenie – XML a bazy danych;

2. Cele XML;

3. Podstawowe definicje i pojęcia

;

;

4. Charakterystyka dokumentu XML;

5. Rozbiór składniowy dokumentu XML;

6. Poprawność dokumentu XML;

7. Metody definicji typów dokumentów: DTD, XML-

Schema;

8. Rodzaje dokumentów XML i formy ich składowania;

9. NXD – Native XML Databases;

10. Wyszukiwanie i przeszukiwanie dokumentów XML: 

XPath a XQuery;

11. Przekształcanie dokumentów XML: XSL, XSLT, XPath, 

FO;

12. Zastosowania XML

background image

 

 

 slajd 21

©  J.Rumiński

Podstawą wszelkich definicji jest rekomendacja XML 1.0 
opracowana przez W3C (http://www.w3.org/XML/).

DOKUMENT XML

 – Obiekt danych jest dokumentem XML 

wtedy, jeśli jest 

dobrze sformułowany

 („well-formed”), 

zgodnie z wymaganiami rekomendacji. 

DOKUMENT XML posiada strukturę fizyczną i logiczną. 
Fizycznie dokument XML składa się z encji, logicznie z 
deklaracji, elementów, komentarzy, instrukcji 
przetwarzania.

Obiekt danych jest dobrze sformułowany (jest 
dokumentem XML) jeśli wszystkie jego encje zarówno 
bezpośrednio dane jak i te, do których odnosi się przez 
referencje, spełniają wymagania specyfikacji, oraz obiekt 
ten posiada wymaganą strukturę logiczną. 

background image

 

 

 slajd 22

©  J.Rumiński

Struktura logiczna dokumentu XML

 zdefiniowana jest 

jako:

   

document    ::=    

prolog

 

element

 

Misc

* 

Dokument XML składa się z trzech podstawowych 
jednostek:

-prologu

 – deklaracja dokumentu, określająca typ i 

wersję,

-elementu głównego (root)– który zawierać może 
kolejne elementy,

-oraz z zera lub więcej jednostek typu „Misc” 
definiowanych jako:

Misc    ::=    

Comment

 | 

PI

 | 

S

 

gdzie: Comment – komentarz, PI – instrukcja 
przetwarzania, S – 

znaki puste (#x20 | #x9 | #xD | 

#xA) („white spaces

”).

Przykładowy prolog:  <?xml version="1.0" ?

>

 

background image

 

 

 slajd 23

©  J.Rumiński

Podstawowe znaki wykorzystywane w definicjach 
specyfikacji XML i jej pochodnych do określania 
krotności (następstwa) jednostek:

jednostka występuje raz lub wcale,

*

jednostka występuje jedno lub 

wielokrotnie lub 

wcale

jednostka występuje co najmniej raz

[wartość] 

jednostka występuje dokładnie raz, tak 

jak 

zapisano

,

lista jednostek – sekwencja rozdzielana 

znakiem „ ’ ”

|

zbiór jednostek do wyboru („lub”).

background image

 

 

 slajd 24

©  J.Rumiński

Instrukcja przetwarzania (PI)

 – zanurzona w 

dokumencie XML instrukcja dla aplikacji 
przetwarzającej dokument. Przykładem instrukcji 
przetwarzania jest prolog.

PI    ::=    '<?' 

PITarget

 (

S

 (

Char

- (Char* '?>' Char*)))? 

'?>' 

  PITarget    ::=    

Name

 - (('X' | 'x') ('M' | 'm') ('L' | 'l')) 

Char    ::=    #x9 | #xA | #xD | [#x20-#xD7FF] |
[#xE000-#xFFFD] | [#x10000-#x10FFFF]   czyli Unicode

Name    ::=    (

Letter

 | '_' | ':') (

NameChar

)

NameChar    ::=    

Letter

 | 

Digit

 | '.' | '-' | '_' | ':' |

CombiningChar

 

Extender

 

gdzie: Letter, Digit, CombiningChar, Extender jak i 
BaseChar oraz Ideographic to znaki zdefiniowane w 
rekomendacji XML poprzez zestaw kodów Unicodu.

background image

 

 

 slajd 25

©  J.Rumiński

CDATA

 – „character data” – dane tekstowe, definiowane 

w dokumencie XML poza znacznikami. Nie posiadają 
zatem strukturalnej i uporządkowanej własności języka 
XML. 

Komentarz

 – opis treści dokumentu XML lub inne 

uwagi zanurzone w dokumencie

Comment    ::=    '<!--' ((

Char

 - '-') | ('-' (Char - '-')))* '--

>' 

Uwaga! Zgodnie z powyższym zakończenie 
komentarza ‘--->’ jest niedozwolone.

CDSect    ::=    

CDStart

 

CData

 

CDEnd

 

CDStart    ::=    '<![CDATA[' 
CData    ::=    (

Char

* - (Char* ']]>' Char*)) 

CDEnd    ::=    ']]>' 

Przykładowy prolog:  <!--Zadania testowe z XML--

>

 

background image

 

 

 slajd 26

©  J.Rumiński

Procesor XML

 – program komputerowy realizujący 

odczyt i operacje na treści dokumentu XML. 
Wymagania dotyczące programu i rodzaj 
procesorów XML określa specyfikacja XML.

DTD – Document Type Definition

 (definicja 

typu/schematu dokumentu) – zanurzona w 
dokumencie XML lub zapisana poza nim struktura 
dokumentu, a więc dozwolone elementy, ich 
nazwy, krotność i hierarchia jak również możliwe 
atrybuty wraz z ich nazwami, typem, krotnością i 
występowaniem. 

DTD nie jest dokumentem XML!

DTD jest w pełni zdefiniowany w rekomendacji 
XML.

Włączenie DTD w dokumencie XML odbywa się w 
deklaracji DOCTYPE:

<!DOCTYPE  tu występuje DTD lub referencja do 
zewn. DTD> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">

 

background image

 

 

 slajd 27

©  J.Rumiński

Encje

 („entities”) – zgodnie z budową fizyczną dokumentu 

XML są to jednostki przechowywania danych. Każda encja 
ma nazwę i wartość. Encje definiowane są jawnie w DTD. 
Encje mogą być wewnętrzne i zewnętrzne. Wewnętrzna 
encja ma treść taką jaka jest w niej bezpośrednio zapisana. 
Zewnętrzna encja odwołuje się do zewnętrznego zasobu. 
Przykłady:

-wewnętrzna encja:

<!ENTITY info ”To są slajdy do wykładu o XML.">

 

-zewnętrzna encja:

<!ENTITY plik2 SYSTEM 
”http://biomed.eti.pg.gda.pl/xml/plik2.xml">

 

W definicji encji zewnętrznych stosuje się dwa typy 
identyfikatorów: systemowy oraz publiczny. Systemowy 
występuje zawsze i określa adres URI zasobu. Jeśli tylko ten 
identyfikator jest używany występuje słowo kluczowe 
‘SYSTEM’. Przykład tego typu encji pokazano wyżej.

background image

 

 

 slajd 28

©  J.Rumiński

Jeśli stosuje się identyfikator publiczny wówczas stosuje 
się słowo kluczowe PUBLIC, po czym występuje 
identyfikator publiczny (generowane jest URI główne) i 
systemowy (URI domyślne). Ogólna postać definicji encji 
ma więc postać:

<!ENTITY nazwa PUBLIC "FPI" "URI">

FPI - Formal Public Identifier – posiada budowę 
zawierającą

znak : „-” zasób niestandardowy; „+” zasób 
standardowy (DTD),

nazwę grupy lub osoby odpowiedzialnej za zasób,

tekst określający typ i wersję zasobu,

dwa znaki określające język dokumentu,

znaki separacji  „//” rozdzielające powyższe pola.

<!ENTITY plik3 PUBLIC ”-//Jack Stone//TEXT CV version 2.1//EN” 
”http://biomed.eti.pg.gda.pl/xml/plik3.xml">

background image

 

 

 slajd 29

©  J.Rumiński

Encje mogą być oznaczone jako nie podlegające 
rozbiorowi, tzn. zawierają dane nie podlegające 
interpretacji przez procesor XML (np. plik binarny). Stosuje 
się wówczas słowo kluczowe „NDATA”.

<!ENTITY logo SYSTEM "http://www-med..eti.pg.gda.pl/logo.gif" 
NDATA gif> 

Encje dzielą się ponadto na encje ogólne oraz encje 
parametryczne. Te ostatnie mogą być tylko definiowane w 
dokumencie DTD. Różnica polega również na samej 
budowie encji. Encja parametryczna zawiera dodatkowo 
przed nazwą znak „%”. 

<!ENTITY % plik2 SYSTEM 
”http://biomed.eti.pg.gda.pl/xml/plik2.xml">

Do encji odwoływać się można przez referencje:

&nazwa_encji;     - dla encji ogólnej (konieczne znaki „&” i 
„;”),

%nazwa_encji;

-dla encji parametrycznej (konieczne 

znaki „%” i „;”).   

<!ENTITY email „jwr@eti.pg.gda.pl> 

(...)

<!ENTITY jwr "Jacek Rumiński &email;"> 

background image

 

 

 slajd 30

©  J.Rumiński

Wartość encji może przyjmować tylko określone znaki 
Unicodu, zgodnie z zakresem podanym na końcu 
rekomendacji. Zatem jawne wpisanie polskich znaków w 
danym edytorze, może spowodować, iż zapamiętywany jest 
kod znaku zgodnie ze stroną kodową edytora, a nie 
wymaganego Unicodu. Wówczas przy interpretacji znaku przez 
przeglądarkę wystąpi błąd. Z tych względów znacznie pewniej 
jest stosowanie w definicji wartości encji, referencji do znaków 
polskich, zamiast samych znaków. Przykładowo:

Zamiast:

<!ENTITY jwr "Jacek Rumiński &email;">

Lepiej:

<!ENTITY jwr "Jacek Rumi&#x144;ski &email;">

gdzie: &#x144; to referencja (&...;) do znaku (#) w kodzie szesnastkowym (x) 

          o wartości 144.

background image

 

 

 slajd 31

©  J.Rumiński

Kody heksadecymalne polskich liter (Unicode) 

background image

 

 

 slajd 32

©  J.Rumiński

Przestrzenie nazw (namespaces)

 – zbiory nazw 

definiujące słownik możliwych znaczników, definicja:

xmlns:<prefix>='<identyfikator przestrzeni nazw>' 

-<prefix>, znacznik poprzedzający,  określający zakres 
możliwych nazw zgodnie z wybranym przez 
„identyfikator przestrzeni nazw” słownikiem.

   

Zgodnie z rekomendacją istnieją również predefiniowane 
encje:

Znak „ < ”:

<!ENTITY lt "&#38;#60;"> 

Znak „ > ”:

<!ENTITY gt "&#62;"> 

Znak „ & ”:

<!ENTITY amp "&#38;#38;">

Znak „ ’ ”:

<!ENTITY apos "&#39;"> 

Znak „ ” ”:

<!ENTITY quot "&#34;"> 

background image

 

 

 slajd 33

©  J.Rumiński

Dla elementu:
<salon xmlns:s="http://www.salonjac.com/sal"> 

<s:model> C5 </s:model>

</salon> 
Przestrzenią nazw dla elementu <model> jest 
„http://www.salonjac.com/sal”.

Dla atrybutu:
<salon xmlns:s="http://www.salonjac.com/sal"> 

<samochod s:VIN=”232432432432412”> C5 </samochod>

</salon> 
Przestrzenią nazw dla atrybutu „VIN” jest 
„http://www.salonjac.com/sal”.

Przestrzenie nazw definiuje się dla elementu lub 

atrybutu. 

Przykładowo:

background image

 

 

 slajd 34

©  J.Rumiński

Przykładowe, standardowe przestrzenie nazw:

Prefix/Aplikacj

a

Przestrzeń nazw

XHTML 

http://www.w3.org/1999/xhtml

MathML 

http://www.w3.org/1998/Math/Math

ML 

SVG 

http://www.w3.org/2000/svg 

HTML

http://www.w3.org/TR/REC-html40 

XSL

http://www.w3.org/1999/XSL/Forma

t

background image

 

 

 slajd 35

©  J.Rumiński

Przegląd rekomendacji XML – demonstracja.

http://www.w3.org/TR/2000/REC-xml-20001006

background image

 

 

 slajd 36

©  J.Rumiński

Plan wykładu:

1. Wprowadzenie – XML a bazy danych;

2. Cele XML;

3. Podstawowe definicje i pojęcia;

4.

4.

Charakterystyka dokumentu XML;

Charakterystyka dokumentu XML;

5. Rozbiór składniowy dokumentu XML;

6. Poprawność dokumentu XML;

7. Metody definicji typów dokumentów: DTD, XML-

Schema;

8. Rodzaje dokumentów XML i formy ich składowania;

9. NXD – Native XML Databases;

10. Wyszukiwanie i przeszukiwanie dokumentów XML: 

XPath a XQuery;

11. Przekształcanie dokumentów XML: XSL, XSLT, XPath, 

FO;

12. Zastosowania XML

background image

 

 

 slajd 37

©  J.Rumiński

Dokument XML – ponownie.

prolog

typ

wersj
a

strona kodowa

rozłączność

opcjonalnie

obowiązkow
o

background image

 

 

 slajd 38

©  J.Rumiński

Dokument XML – ponownie.

prolog

opcjonalnie

obowiązkow
o

Definicja typu dokumentu 
poprzez identyfikator 
systemowy, będący referencją 
do pliku „salon.dtd”. Definicja 
ta jest wymagana, ze względu 
na określenie w pierwszej 
instrukcji przetwarzania, iż 
bieżący plik XML nie jest 
rozłączny (samodzielny-> 
standalone=”no”).

background image

 

 

 slajd 39

©  J.Rumiński

Dokument XML – ponownie.

„root” 
dokumentu

opcjonalnie

obowiązkow
o

Definicja głównego elementu 
dokumentu XML. Element 
posiada atrybut o nazwie 
„wlasciciel” i wartości 
stanowiącej referencje do encji 
o nazwie „kontakt”.

background image

 

 

 slajd 40

©  J.Rumiński

Dokument XML – ponownie.

komentarz

opcjonalnie

obowiązkow
o

Definicja subelementu o 
nazwie „samochod”. 
Element posiada 2 
atrybuty („VIN” i 
„nrsilnika”) oraz cztery 
subelementy („marka”, 
„model”, „kolor”, 
„silnik”).

Wartość elementu jest 
typu zbioru znaków, 
więc łatwo pomylić się 
wprowadzając tekst 
(„;”).

background image

 

 

 slajd 41

©  J.Rumiński

Dokument XML – ponownie. Prezentacja w 
przeglądarce MS IE.

background image

 

 

 slajd 42

©  J.Rumiński

Plan wykładu:

1. Wprowadzenie – XML a bazy danych;

2. Podstawowe definicje i pojęcia;

3. Cele XML;

4. Charakterystyka dokumentu XML;

5.

5.

Rozbiór składniowy dokumentu XML;

Rozbiór składniowy dokumentu XML;

6. Poprawność dokumentu XML;

7. Metody definicji typów dokumentów: DTD, XML-

Schema;

8. Rodzaje dokumentów XML i formy ich składowania;

9. NXD – Native XML Databases;

10. Wyszukiwanie i przeszukiwanie dokumentów XML: 

XPath a XQuery;

11. Przekształcanie dokumentów XML: XSL, XSLT, XPath, 

FO;

12. Zastosowania XML

background image

 

 

 slajd 43

©  J.Rumiński

Porządek struktury dokumentu XML związany jest 
bezpośrednio z jego automatyczną interpretacją. 
Interpretację tę wspomagać ma opracowany przez 
konsorcjum W3C model DOM (Document Object Model), 
stanowiący interfejs API dla potrzeb tworzenia aplikacji 
będących procesorami XML. 

DOM bazuje na konstrukcji drzewa elementów, stąd główny 
element dokumentu nazywany jest <root> (korzeń). Z 
korzenia dokumentu wyprowadzone są poszczególne gałęzie 
i węzły, wyznaczające strukturę  hierarchii elementów. W 
tworzeniu modelu obowiązuje zatem zasada „od ogółu do 
szczegółu”. 

DOM implementowany jest na poziomie języków 
programowania najczęściej Java i C++.

background image

 

 

 slajd 44

©  J.Rumiński

<TABLE> 

<TBODY>

 <TR> 

<TD>ShadyGrove</TD> 
<TD>Aeolian</TD>

 </TR>

 <TR> 

<TD>Over the River, 
Charlie</TD> <TD>Dorian</TD> 

</TR>

 </TBODY> 

</TABLE>

 

DOM – Document Object Model - przykład

Fragment dokument 
HTML

Reprezentacja 

dokumentu według 

DOM

background image

 

 

 slajd 45

©  J.Rumiński

Automatyczna analiza dokumentu XML wykorzystuje 
rozbiór składniowy (parsing). Programy dokonujące 
takiego rozbioru (parsers) implementują określony 
model reprezentacji i interpretacji dokumentu XML. 
Jednym z dwóch głównych metod rozbioru jest 
budowanie pełnego drzewa dokumentu XML zgodnie 
ze specyfikacją DOM.

Program implementujący DOM zawiera definicję 
metod zadeklarowanych w abstrakcyjnym modelu. 
Implementacja ta uwzględnia konkretny język 
programowania. Przykładowo dla bardzo często 
wykorzystywanego w pracy z XML języka Java, zestaw 
klas i metod modelu DOM przedstawia kolejny slajd.

Do najbardziej znanych implementacji modelu DOM 
(parserów) można zaliczyć:  Xerces (Apache), XML4J 
(IBM), JAXP (Sun), XP (James Clark).

background image

 

 

 slajd 46

©  J.Rumiński

Węzeł drzewa – zasadniczy 
element danych

Reprezentacja atrybutu

Komentarz

Wartość tekstowa elementu 
lub atrybutu

Reprezentacja całego dokumentu
 XML

Reprezentacja elementu

background image

 

 

 slajd 47

©  J.Rumiński

Rozbiór dokumentu XML zgodnie z modelem DOM realizowany 
jest poprzez kolejne wyszukiwanie węzłów w drzewie. 
Standardowo pierwszym krokiem jest wczytanie dokumentu i 
stworzenie jego reprezentacji w pamięci. Etap ten nie jest 
standaryzowany przez W3C, niemniej wielu dostawców 
oprogramowania stosuje proste wywołanie: 

DOMParser.getDocument(). 

Pobrany dokument znajduje się w pamięci! Jest to ważne z 
punktu widzenia ograniczeń w przetwarzaniu dokumentu. 

Wydobywanie informacji z drzewa odbywa się dalej zgodnie 
ze standardowymi (DOM) metodami parsera, np.:

Document.getDocumentElement();

Element.getAttributte();

Node.getFirstChild();

itd.

background image

 

 

 slajd 48

©  J.Rumiński

Innym modelem rozbioru składniowego dokument XML jest 
model SAX (

S

S

imple 

A

A

PI for 

X

X

ML parsing). SAX jest modelem 

wypracowanym przez użytkowników XML niezależnie od 
standardu DOM. Głównym założeniem modelu jest szybki 
dostęp do wybranych węzłów dokumentu XML bez 
konieczności składowania całego drzewa. SAX wychodzi z 
założenia, iż analizując dokument XML natrafiamy na różne 
encje. Encje te wywołują zdarzenia, których kategorie 
zależą od znalezionych encji. Jeżeli znajdujemy element, to 
generowane jest zdarzenie typu <jest element>, jeśli znak 
pusty to generowane jest zdarzenie <znak pusty>, itd. 
Obsługiwanie zdarzeń i pobieranie danych jakie niosą 
prowadzi do uzyskania danych dokumentu XML.

Zestaw klas i interfejsów modelu SAX w wersji 2.0, zgodnie 
ze składnią języka Java, prezentuje kolejny slajd.

background image

 

 

 slajd 49

©  J.Rumiński

Główny zestaw metod 
obsługujących zdarzenia 
wywoływane w procesie 
analizy treści dokumentu 
XML.

background image

 

 

 slajd 50

©  J.Rumiński

background image

 

 

 slajd 51

©  J.Rumiński

Przykładowy proces analizy dokumentu XML według 
modelu SAX

startDocument

background image

 

 

 slajd 52

©  J.Rumiński

Przykładowy proces analizy dokumentu XML według 
modelu SAX

startElement 

(nazwa=„salon”, 

brak atrybutów)

background image

 

 

 slajd 53

©  J.Rumiński

Przykładowy proces analizy dokumentu XML według 
modelu SAX

ignorableWhitespa

ce

ignorableWhitespa

ce

background image

 

 

 slajd 54

©  J.Rumiński

Przykładowy proces analizy dokumentu XML według 
modelu SAX

startElement 

(nazwa=„samochod” 

Atrybuty(„VIN”, 

„nrsilnika”)

background image

 

 

 slajd 55

©  J.Rumiński

Przykładowy proces analizy dokumentu XML według 
modelu SAX

ignorableWhitespa

ce

ignorableWhitespa

ce

background image

 

 

 slajd 56

©  J.Rumiński

Przykładowy proces analizy dokumentu XML według 
modelu SAX

startElement 

(nazwa=„marka

”, brak 

atrybutów)

background image

 

 

 slajd 57

©  J.Rumiński

Przykładowy proces analizy dokumentu XML według 
modelu SAX

characters

background image

 

 

 slajd 58

©  J.Rumiński

Przykładowy proces analizy dokumentu XML według 
modelu SAX

endElement 

(nazwa=„marka

”)

itd.

background image

 

 

 slajd 59

©  J.Rumiński

Uwaga praktyczna:

Szybkość operacji rozbioru składniowego dokumentu XML, 
bez względu na model, zależy od jego zawartości. Zatem 
im mniej znaków pustych w dokumencie (spacji, CR, LF, 
itd.) tym lepiej.

background image

 

 

 slajd 60

©  J.Rumiński

Plan wykładu:

1. Wprowadzenie – XML a bazy danych;

2. Podstawowe definicje i pojęcia;

3. Cele XML;

4. Charakterystyka dokumentu XML;

5. Rozbiór składniowy dokumentu XML;

6.

6.

Poprawność dokumentu XML;

Poprawność dokumentu XML;

7. Metody definicji typów dokumentów: DTD, XML-

Schema;

8. Rodzaje dokumentów XML i formy ich składowania;

9. NXD – Native XML Databases;

10. Wyszukiwanie i przeszukiwanie dokumentów XML: 

XPath a XQuery;

11. Przekształcanie dokumentów XML: XSL, XSLT, XPath, 

FO;

12. Zastosowania XML

background image

 

 

 slajd 61

©  J.Rumiński

Programy dokonujące rozbioru składniowego 
dokumentów XML mogą być wzbogacane o 
możliwość weryfikacji:

1. Czy poddany przetwarzaniu obiekt danych jest 

dokumentem XML, czyli czy jest dobrze-
sformułowany?

2. Czy poddany przetwarzaniu dokument XML jest 

poprawny.

Dla przypomnienia, zgodnie z przedstawioną już 
specyfikacją XML, obiekt danych jest dobrze-
sformułowany jeśli uwzględnia wszystkie 
wymagania jawnie zapisane w rekomendacji. Jawny 
zapis wymagań przedstawiony jest jako ścisła 
definicja budowy logicznej dokumentu, oraz zbioru 
wymagań szczegółowych poprzedzonych 
wyróżni
kiem: 

„Well-formedness constraint: 

Well-formedness constraint: Element Type Match

The 

Name

 in an element's end-tag must match the element 

type in the start-tag.

Przykładowo:

{Nazwa (zgodna z typem Name) znacznika końca elementu musi 
być identyczna jak nazwa znacznika początku tego samego 
elementu.}

background image

 

 

 slajd 62

©  J.Rumiński

Poprawność dokumentu XML (validity) określana jest na 
podstawie definicji typu dokumentu (DOCTYPE), 
najczęściej realizowanego poprzez DTD lub XML Schema. 
Podobnie jak w badaniu czy obiekt danych jest dobrze 
sformułowany, tak i w przypadku sprawdzania 
poprawności dokumentu XML konieczne jest spełnienie 
wymagań podanych w specyfikacji XML. Jawny zapis 
wymagań w rekomendacji poprzedzony jest 
wyróżnikiem:

„Validity constraint:”

 

Validity constraint: Root Element Type

The 

Name

 in the document type declaration must match the 

element type of the 

root

 element.

Przykładowo:

{Nazwa (zgodna z typem Name) występująca w deklaracji typu 
dokumentu musi być identyczna jak nazwa głównego elementu 
(korzenia).}

background image

 

 

 slajd 63

©  J.Rumiński

Sprawdzanie poprawności wymaga definicji schematu 
dokumentu zawierającego definicje wszystkich 
możliwych do stosowania encji w tworzonym 
dokumencie. Sprawdzanie poprawności jest opcjonalne, 
tzn. obiekt danych nie musi być poprawny aby być 
dokumentem XML.

Znakomita większość oprogramowania dostępnego na 
rynku, dostarcza mechanizmy umożliwiające 
weryfikację czy dany obiekt jest dobrze sformułowany. 
Tylko niektóre z nich umożliwiają dodatkowo 
sprawdzenie poprawności dokumentu.

Rozpatrzmy kilka przykładów zastosowania programu 
badającego formułę i poprawność obiektów danych. 

Przeprowadzone analizy wykonano z zastosowaniem 
darmowego programu „xmlvalid” firmy ElCel 
(„http://www.elcel.com”).

background image

 

 

 slajd 64

©  J.Rumiński

1. dla obiektu danych salon.xml (wcześniejsze 

przykłady), nie zawierającego definicji typu 
dokumentu, sprawdzenie czy jest on dobrze 
sformułowany przebiega następująco:

Polecenie: xmlvalid –v salon.xml 
Wynik: salon.xml is well-formed

Zatem badany obiekt jest dokumentem XML.

Wprowadzając sztucznie błąd, np. zmieniając nazwę 
znacznika początku elementu względem nazwy 
znacznika  końca, wynik testu jest następujący:

Wynik:salon.xml [58:9] : Fatal error: end tag '</silnik>' does not 

match start tag.  Expected '</ilnik>'

Pojawia się błąd krytyczny (podanie miejsca w kodzie 
źródłowym oraz informacji o rodzaju błędu). Zatem 
badany obiekt nie jest dokumentem XML! 

background image

 

 

 slajd 65

©  J.Rumiński

2. dla dokumentu salon.xml (wcześniejsze przykłady), 

zawierającego definicję typu dokumentu, 
sprawdzanie czy jest on poprawny przebiega 
następująco:

Polecenie: xmlvalid  salon.xml 
Wynik: salon.xml is valid

Zatem badany dokument XML jest poprawny. 

Wprowadzając sztucznie błąd jak poprzednio wynik 
testu jest następujący:

Wynik:
salon.xml [56:20] : Error: element content invalid. Element 'ilnik' 

is not expected here, expecting 'silnik'

salon.xml [58:9] : Fatal error: end tag '</silnik>' does not match 

start tag.  Expected '</ilnik>'

Pojawia się błąd i błąd krytyczny (podanie miejsca w 
kodzie źródłowym oraz informacji o rodzaju błędu). 
Zatem badany obiekt nie jest poprawny i nie jest 
dokumentem XML! 

background image

 

 

 slajd 66

©  J.Rumiński

Plan wykładu:

1. Wprowadzenie – XML a bazy danych;

2. Podstawowe definicje i pojęcia;

3. Cele XML;

4. Charakterystyka dokumentu XML;

5. Rozbiór składniowy dokumentu XML;

6. Poprawność dokumentu XML;

7.

7.

Metody definicji typów dokumentów: DTD, XML-

Metody definicji typów dokumentów: DTD, XML-

Schema;

Schema;

8. Rodzaje dokumentów XML i formy ich składowania;

9. NXD – Native XML Databases;

10. Wyszukiwanie i przeszukiwanie dokumentów XML: 

XPath a XQuery;

11. Przekształcanie dokumentów XML: XSL, XSLT, XPath, 

FO;

12. Zastosowania XML

background image

 

 

 slajd 67

©  J.Rumiński

Definicja typu dokumentu określa schemat możliwych 
dokumentów XML tworzonych zgodnie z danym typem. W 
schemacie definiowane są:

-znaczniki (elementy), jakie mogą być wykorzystane w 
dokumencie;

-atrybuty dla określonych elementów;

-wybór (lub definicja) typów danych dla powyższych encji,

-encje. 

Najbardziej popularne (rekomendacje W3C) metody 
definicji schematu dokumentu XML to:

-DTD (Document Type Definition);

-XML Schema.

DTD jest definiowany bezpośrednio w rekomendacji XML. 
Schemat XML Schema, jako późniejszy, definiowany jest w 
oddzielnej specyfikacji: (struktura) 
http://www.w3.org/TR/xmlschema-1/

        (typy danych) 

http://www.w3.org/TR/xmlschema-2/

background image

 

 

 slajd 68

©  J.Rumiński

DTD

Obsługa schematu dokumentu XML zawiera zawsze dwa 

zasadnicze elementy:

1. Definicję schematu
2. Wywołanie schematu.

W przypadku wykorzystania DTD definicja schematu może być:
1. częścią składową dokumentu XML (wówczas atrybut 

standalone=„yes”),

2. rozdzielnym  dokumentem (wówczas atrybut 

standalone=„no”).

Zanim rozpatrzymy reguły definicji DTD rozpatrzmy sposób 
jego powiązania z dokumentem XML.
1. {dokument samodzielny} - 

<!DOCTYPE salon[ tu definicja 

DTD ]>,

2. {dokument złożony} - 

<!DOCTYPE salon SYSTEM 

"salon.dtd">,

czyli stosuje się identyfikator systemowy (ew. 

publiczny).

background image

 

 

 slajd 69

©  J.Rumiński

DTD

Definicja DTD zawiera listę typów encji możliwych do 
wykorzystania w tworzonym dokumencie – instancji DTD.

1. ELEMENT – deklaracja typu:

elementdecl   ::=   '<!ELEMENT' 

S

 

Name

 

S

 

contentspec

 

S

? '>' 

contentspec   ::=   'EMPTY' | 'ANY' | 

Mixed

 | 

children

 

children    ::=    (

choice

 

seq

) ('?' | '*' | '+')? 

cp    ::=    (

Name

 

choice

 | 

seq

) ('?' | '*' | '+')? 

choice    ::=    '(' 

S

cp

 

S

? '|' S? 

cp

 )+ 

S

')' 

seq    ::=    '(' 

S

cp

 ( 

S

? ',' S? 

cp

 )* 

S

? ')' 

Mixed    ::=    '(

S

'#PCDATA' (S? '|' S? 

Name

)

S

? ')*' | '(' S? '#PCDATA' S? ')' 

Przykłady:

<!ELEMENT salon (samochod)+>

<!ELEMENT samochod (marka, model, kolor, silnik)>

<!ELEMENT marka (#PCDATA)>

background image

 

 

 slajd 70

©  J.Rumiński

Warto szczególnie zwrócić uwagę na jednostkę „Mixed”. 
Jej wykorzystanie umożliwia bowiem stworzenie treści 
elementu jako przeplatanego tekstu z subelementami. W 
DTD można określić wymagania co do typu tych 
elementów, lecz nie można zdefiniować kolejności ich 
występowania czy ich liczby w dokumencie XML. 
Jednostka „Mixed” umożliwia w zastosowaniach XML 
stworzenie wersji obiektu danych XML nazywanego jako 
„ukierunkowany na dokument” („Document oriented”). 
Druga postać obiektów danych XML, nazywanych jako 
„ukierunkowane na dane” („Data oriented”), nie zawiera 
przeplatania tekstu z subelementami. 

DTD

background image

 

 

 slajd 71

©  J.Rumiński

2. ATTLIST – deklaracja listy atrybutów elementu

AttlistDecl    ::=    '<!ATTLIST' 

S

 

Name

 

AttDef

* 

S

? '>' 

AttDef    ::=    S 

Name

 

S

 

AttType

 

S

 

DefaultDecl

 

AttType    ::=    

StringType

 | 

TokenizedType

 

EnumeratedType

 

StringType    ::=    'CDATA' 

TokenizedType    ::=    'ID' | 'IDREF' | 'IDREFS' | 'ENTITY' | 'ENTITIES' | 
'NMTOKEN' | 'NMTOKENS' 

EnumeratedType    ::=    

NotationType

 

Enumeration

 

NotationType    ::=    'NOTATION' 

S

 '(' S? 

Name

 (

S

? '|' S? 

Name

)* 

S

? ')' 

Enumeration    ::=    '(' 

S

Nmtoken

 (

S

? '|' S? 

Nmtoken

)* 

S

? ')' 

DefaultDecl    ::=    '#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? 

AttValue

#REQUIRED – atrybut zawsze musi wystąpić, 
#IMPLIED – atrybut nie ma wartości 
domyślnej, #FIXED – atrybut ma podaną 
wartość stałą

DTD

background image

 

 

 slajd 72

©  J.Rumiński

Przykłady:

<!ATTLIST salon wlasciciel CDATA #REQUIRED>

<!ATTLIST samochod

VIN NMTOKEN #REQUIRED

  

nrsilnika NMTOKEN #REQUIRED>

<!ATTLIST silnik miara CDATA #REQUIRED>

DTD

background image

 

 

 slajd 73

©  J.Rumiński

DTD

3. ENTITY – deklaracje i definicje encji – zgodnie z 
opisem podanym na wcześniejszych slajdach.

Przykłady:

<!ENTITY wlasciciel "Jacek W. Rumi&#x144;ski">

<!ENTITY kontakt "&wlasciciel; jwr@eti.pg.gda.pl">

background image

 

 

 slajd 74

©  J.Rumiński

<!ENTITY wlasciciel "Jacek W. Rumi&#x144;ski">

<!ENTITY kontakt "&wlasciciel; jwr@eti.pg.gda.pl">

<!ELEMENT salon (samochod)+>

<!ELEMENT samochod (marka, model, kolor, silnik)>

<!ELEMENT marka (#PCDATA)>

<!ELEMENT model (#PCDATA)>

<!ELEMENT kolor (#PCDATA)>

<!ELEMENT silnik (#PCDATA)>

<!ATTLIST salon wlasciciel CDATA #REQUIRED>

<!ATTLIST samochod

VIN NMTOKEN #REQUIRED

nrsilnika NMTOKEN

#REQUIRED>

<!ATTLIST silnik miara CDATA #REQUIRED>

DTD 

– pełna definicja DTD (zgodna z poprzednim 

przykładem dokumentu XML – „salon”)

background image

 

 

 slajd 75

©  J.Rumiński

Przykładowe wady DTD:

1. ograniczone możliwości definicji struktury 

dokumentu (np. brak grupowania, referencji, 
opisów,itp.),

2. brak typów danych innych niż tekstowy,

3. brak możliwości definicji własnych typów danych,

4. brak możliwości definicji kolejności i liczebności 

występowania elementów,

5. niezgodność ze specyfikacją XML (efekt: specjalne 

programy rozbioru i syntezy dokumentu DTD).

Eliminacja tych wad – XML Schema

background image

 

 

 slajd 76

©  J.Rumiński

XML Schema tworzony jest jako dokument XML 
zawierający główny element o nazwie <schema> zgodnie z 
wymaganą i definiowaną dla niego przestrzenią nazw: 

<xsd:schema 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">

Weryfikacja poprawności danego dokumentu XML 
względem schematu XML Schema wymaga wskazania pliku 
schematu. Realizowane to jest albo poprzez program 
dokonujący rozbioru (pliki jako parametry) albo poprzez 
jawne zapisanie w dokumencie XML referencji do 
schematu. Referencję zapisuje się z wykorzystaniem 
przestrzeni nazw:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

Przykładowo:

<salon xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xsi:schemaLocation="http://www.jtech.com/Salon 

http://www.jtech.com/Salon.xsd" 

wlasciciel=”Jacek Ruminski” >

 <!-- etc. --> 

</salon>  

background image

 

 

 slajd 77

©  J.Rumiński

Definicja schematu dokumentu zgodna z XML Schema 
wymaga zbudowania dokumentu XML, zawierającego 
elementy zgodne z wymaganą przestrzenią nazw („xsd”). 
Każdy element umożliwia zdefiniowanie określonego 
aspektu schematu poprzez podanie wartości atrybutów tego 
elementu. Atrybuty są integralną częścią elementów 
przestrzeni XSD, zdefiniowanych w rekomendacji. 
Przykładowo definicja typu elementu projektowanego 
dokumentu XML wymaga określenia:

<xsd:element 
name=”TU_NAZWA_PROJEKTOWANEGO_ELEMENTU” 
type=”TU_TYP_DANYCH_ZGODNIE_Z_XML_SCHEMA” ... „inne 
atrybuty>

<...subelementy/>

</xsd:element>

np.: 

<xsd:element name=”samochod” type=„xsd:string”/>

Definicja elementu o nawie „samochod” i typie 

danych jego  treści jako łańcuch znaków. Element nie 
posiada żadnych 

atrybutów ani subelementów.

background image

 

 

 slajd 78

©  J.Rumiński

Element główny dokumentu XML (root) zawiera najczęściej 
subelementy. Zgodnie ze specyfikacją XML Schema, 
subelementy są częścią definicji typu elementu. 
Specyfikacja wyróżnia dwie klasy typów: simpleType oraz 
complexType. Typ simpleType jest zarezerwowany tylko do 
przechowywania wartości, bez określania subelementów 
czy atrybutów. Zatem jeśli dany element ma mieć 
subelementy to konieczne jest zapisanie ich w elemencie 
przestrzeni XSD o nazwie <xsd:complexType>. 
Przykładowo:

<xsd:element name=”samochod” type=„xsd:string”>

<xsd:complexType>

<...>

<xsd:element name=”marka” type=„xsd:string”/>

<xsd:element name=”model” type=„xsd:string”/>

<...>

</xsd:complexType>

</xsd:element>

background image

 

 

 slajd 79

©  J.Rumiński

Tworząc złożony typ danych dla elementu można określić 
warunki wykorzystania czy kolejności występowania 
subelementów. Do tych celów służą trzy podstawowe 
specyfikatory:
<xsd:sequence> - subelementy zdefiniowane w tym 
elemencie muszą w instancji schematu (dokumencie XML) 
wystąpić w podanej kolejności;
<xsd:all> - kolejność występowania subelementów w 
dokumencie XML jest dowolna;
<xsd:choice>- element dokumentu XML zawierać może 
jeden ze zdefiniowanych subelementów lub jedną z grup 
subelementów.

<xsd:element name=”marka”> <xsd:complexType>

<xsd:choice>

<xsd:element name=”BMW” type=„xsd:string”/>

<xsd:element name=”Mercedes” type=„xsd:string”/>

</xsd:choice>

</xsd:complexType> </xsd:element>

Przykład:

background image

 

 

 slajd 80

©  J.Rumiński

Deklaracje elementów i atrybutów można łączyć w grupy. 
Elementy lub grupy należą do danej grupy, jeśli są 
subelementami elementu <xsd:group>, np.:

<xsd:group name=”samochod”><xsd:sequence>

<xsd:element name=”marka” type=„xsd:string”/>

<xsd:element name=”model” type=„xsd:string”/>

</xsd:sequence></xsd:group>

Do deklaracji grupy, deklaracji elementu lub atrybutu 
można się odwołać poprzez użycie atrybutu „ref”, np.:

<xsd:element name=”auto”><xsd:complexType>

<xsd:group ref=”samochod”/>

</xsd:complexType> </xsd:element>

Za pomocą atrybutów ”minOccurs” oraz ”maxOccurs” 
elementu <xsd:element> można ponadto określić 
dopuszczalną powtarzalność deklarowanego elementu.

background image

 

 

 slajd 81

©  J.Rumiński

Definiując złożony typ danych dla elementu docelowego 
można wykorzystać atrybut „mixed” elementu 
<xsd:complexType>, którego wartość ”true” oznacza, że 
tekst może przeplatać się z subelementami (Document-
oriented). Podobnie jak w DTD również i w XML Schema 
nie ma możliwości określania lokalizacji treści elementu 
względem subelementów.

XML Schema:

<xsd:element name=”student”><xsd:complexType mixed=”true”>

<xsd:group ref=”samochod”/>

</xsd:complexType> </xsd:element>

Element dokumentu XML:

<student> Franek ma <marka> Reanult</marka> 
<model>Clio</model>, którym jeździ codziennie nad 
morze</student>

Przykład:

background image

 

 

 slajd 82

©  J.Rumiński

Deklaracja atrybutu występuje zawsze na końcu deklaracji 
złożonego typu danych. Atrybut definiowany jest poprzez 
atrybuty elementu <xsd:attribute>, np.:

<xsd:element name=”auto”><xsd:complexType>

<xsd:group ref=”samochod”/>

<xsd:attribute name=”VIN” type=”xsd:decimal”/>

</xsd:complexType> </xsd:element>

XML Schema umożliwia również deklaracje określające, 
które elementy muszą być unikalne. Do tych celów służą 
elementy <xsd:unique> lub <xsd:key>. Elementy te 
zawierają zgodnie ze specyfikacją XPath adres unikalnego 
elementu, np.:

<xsd:key name=”peselKluczem” >

<xsd:selector xpath=”student”/>
<xsd:field xpath=”pesel”/>

</xsd:key>

background image

 

 

 slajd 83

©  J.Rumiński

W deklaracjach elementów, atrybutów i prostych 
typów danych stosowane są typy danych 
zdefiniowane w specyfikacji XML. Należą do nich 
(kolejny slajd):

W XML Schema można definiować własne, proste typy 
danych. Służy do tego element <xsd:simpleType>. Nazwa 
nowego typu definiowana jest jako wartość atrybutu 
elementu simpleType. Typ bazowy oraz dziedzinę określa 
szereg subelementów zdefiniowanych w rekomendacji, 
np..: 

<xsd:simpleType name="wiek"> <xsd:restriction 
base="xsd:integer"> <xsd:minInclusive value="0"/> 
<xsd:maxInclusive value="130"/> </xsd:restriction> 
</xsd:simpleType> 

(typ o nazwie „wiek” możliwe wartości to liczby całkowite z 
zakresu 0-130.)

<xsd:simpleType name="kod"> <xsd:restriction 
base="xsd:string"> <xsd:pattern value="\d{2}-[A-Z]{5}"/> 
</xsd:restriction> </xsd:simpleType>

 

(typ o nazwie „kod” możliwe wartości muszą być zgodne z 
wzorcem w postaci wyrażenia regularnego: po dwóch 
cyfrach występuje myślnik oraz 5 wielkich liter z zakresu 
kodu ASCII.) 

background image

 

 

 slajd 84

©  J.Rumiński

(unconstrained)

background image

 

 

 slajd 85

©  J.Rumiński

Specyfikacja XML Schema podaje znacznie więcej 
możliwości kompozycji schematu dokumentu niż te 
podstawowe wymienione w tym dokumencie. Do 
ciekawszych zaliczyć jeszcze można następujące 
elementy:

<xsd:union> - unia elementów lub grup;

<xsd:annotation> - opis dokumentu, zawiera szereg 
subelementów, jest stosowany do dokumentacji 
schematu zamiast tradycyjnego komentarza XML;

<xsd:include> - załączenie innego schematu. 

background image

 

 

 slajd 86

©  J.Rumiński

Plan wykładu:

1. Wprowadzenie – XML a bazy danych;

2. Podstawowe definicje i pojęcia;

3. Cele XML;

4. Charakterystyka dokumentu XML;

5. Rozbiór składniowy dokumentu XML;

6. Poprawność dokumentu XML;

7. Metody definicji typów dokumentów: DTD, XML-

Schema;

8.

8.

Rodzaje dokumentów XML i formy ich składowania;

Rodzaje dokumentów XML i formy ich składowania;

9. NXD – Native XML Databases;

10. Wyszukiwanie i przeszukiwanie dokumentów XML: 

XPath a XQuery;

11. Przekształcanie dokumentów XML: XSL, XSLT, XPath, 

FO;

12. Zastosowania XML

background image

 

 

 slajd 87

©  J.Rumiński

Składowanie dokumentów XML jest najczęściej związane 
z rodzajem dokumentu, lub jego zaklasyfikowaniem do 
danego rodzaju. Zgodnie z tym co przedstawiono 
wcześniej dokumentu podzielono na:

-ukierunkowane na dane
-ukierunkowane na dokumenty.

Pierwszy rodzaj dokumentu posiada wyraźny podział 
struktury, bez przeplatania treści elementu XML ze 
znacznikami. Umożliwia to na proste rozbicie struktury 
XML i jej odwzorowanie na znane modele danych jak np. 
hierarchiczny, relacyjny czy obiektowy. Systemy 
zarządzania bazami danych obsługujące tego rodzaju 
dokumenty nazywane są „XML enabled
”. Czasami 
możliwe jest również zastosowanie warstwy 
pośredniczącej (middleware) odwzorowującej XML na 
model danych obsługiwany przez określony SZBD. 
Oprogramowanie warstwy pośredniej realizuje 
najczęściej odwzorowanie: XML->SQL.

background image

 

 

 slajd 88

©  J.Rumiński

W przypadku drugiego typu dokumentów („document-
centric”) tworzone SZBD składają całe dokumenty. 
Stanowią zatem swoiste kolekcje dokumentów, stąd 
często słowo „kolekcja” jest zamienne w tym przypadku 
względem tabeli (relacji). Kolekcje dokumentów XML są 
zorganizowane w ramach tzw. „Native XML Database” 
(NXD). Bazy dokumentów XML są dedykowane tym 
właśnie dokumentom, a tworzone dla nich systemy 
zarządzania umożliwiają podstawowe operacje 
zapisywania, usuwania, aktualizacji czy wyszukiwania. Z 
tych względów tworzone są również propozycje norm 
(rekomendacji) jak np. XML:DB (http://www.xmldb.org/).

background image

 

 

 slajd 89

©  J.Rumiński

Data-centric

Wymiana danych pomiędzy bazą danych a dokumentem XML 
wymaga odwzorowania schematu dokumentu (DTD, XML 
Schema) na schemat bazy danych. Odwzorowanie jest często 
realizowane za pomocą implementacji wyrażeń SQL, XQuery 
czy XPath. Jeżeli z jakiś przyczyn dana struktura dokumentu 
XML nie może być bezpośrednio odwzorowana na strukturę 
bazy danych stosuje się dodatkową transformację 
dokumentu XML do innej postaci (zastosowanie XSLT, o czym 
później). 
Odwzorowanie schematu dokumentu wykorzystuje 
zasadniczo tylko logiczną strukturę dokumentu, i co więcej, 
ogranicza się jedynie do najważniejszych jej części tj.: 
elementów i atrybutów. 
Odwzorowanie realizowane jest najczęściej do dwóch 
postaci:

-tablicowej,

-obiektowo-relacyjnej.

background image

 

 

 slajd 90

©  J.Rumiński

Data-centric

Odwzorowanie tablicowe jest bardzo często realizowane przez 
warstwy pośrednie, a polega na utworzeniu lub odtworzeniu 
struktury drzewiastej dokumentu XML w formie 
uszczegółowiania elementów bazy danych:

<bazadanych>

<tabela>

<wiersz>

<kolumna1>...</kolumna1>
<kolumna2>...</kolumna2>
...
<kolumnaN>...</kolumnaN>

</wiersz>
...

</tabela>
<tabela>
...
</tabela>
...

</bazadanych>

background image

 

 

 slajd 91

©  J.Rumiński

Data-centric

Odwzorowanie obiektowo-relacyjne dokumentu XML polega 
na utworzeniu struktury klasy danego typu (np. bazując na 
„complex element type” dla XML Schema), a później 
odwzorowaniu go na model relacyjny (klasy na tabele; pola 
na kolumny, itd.).

Należy podkreślić iż odwzorowanie obiektowo-relacyjne nie 
wykorzystuje modelu DOM danego dokumentu, który jest 
raczej właściwy dla organizacji logicznej dokumentu XML 
(relacja Element->Element zamiast Samochod->Kierowca), 
niż dla reprezentacji danych.

Dokumenty typu „data-centric” są również przechowywane 
w bazach danych typu NXD. Jedną z przyczyn zastosowania 
tego rodzaju bazy dla dokumentów „data-centric” może być 
potrzeba szybkiego pobierania dokumentów XML z bazy. 
Ponieważ w NXD składowane są dokumenty, zatem nie ma 
potrzeby ich tworzenia w odpowiedzi na dane żądanie 
pobrania. 

background image

 

 

 slajd 92

©  J.Rumiński

Data-centric

Oddzielnym zagadnieniem jest odwzorowanie typów danych. 
W XML zasadniczym typem danych jest tekst. Zatem 
konieczne jest przeprowadzenie konwersji typów 
uwzględniającej zarówno zakres jak i rodzaj danych. Ponadto 
należy pamiętać o stosowanych zestawach danych. XML 
bazuje zasadniczo na Unicodzie, z wyjątkiem wybranych 
znaków sterujących, które nie powinny być wykorzystane 
jako treść danych. 
Kolejnym problemem są dane binarne. Odniesienie do nich 
jest możliwe poprzez zastosowanie encji, nie podlegających 
rozbiorowi (interpretacji przez procesor XML). Ponieważ 
encja jest jednak elementem fizycznym a nie logicznym 
struktury XML zatem nie jest odwzorowywana. Inna 
możliwość to zakodowanie bajtów znakami (kodowanie 
Base64). Brak jest jednak standardowych notacji na 
oznaczenie, że dany element zawiera tego typu zakodowane 
dane, stąd jest to tylko i wyłącznie w opcji oprogramowania 
realizującego odwzorowanie.

background image

 

 

 slajd 93

©  J.Rumiński

Document-centric

Składowanie dokumentów XML może również być 
zrealizowane na wiele sposobów. Pierwsze możliwe 
rozwiązanie to zapis dokumentu XML w modelu 
hierarchicznym -> jako plik w systemie plików. Innym 
rozwiązaniem może być zastosowanie typów danych LOB 
(Large OBject, np.. CLOB -> Character Large OBject). Jeszcze 
innym rozwiązaniem jest składowanie dokumentu XML jako 
obiektu w obiektowej bazie danych.

Składowanie dokumentów XML wymaga w tym wypadku 
spełnienia warunku identyczności dokumentu dostarczonego 
do archiwum z dokumentem pobieranym z archiwum (round-
tripping). Jest to niezwykle ważna własność szczególnie dla 
procesu podpisywania dokumentów XML (XML Digital 
Signature Standard); gdzie każdy znak dokumentu musi 
wystąpić aby pozytywnie zweryfikować podpis. 

Składowanie dokumentów XML (tzn. w formie document-
centric) realizowane jest w ramach technologii Native XML 
Databases.

background image

 

 

 slajd 94

©  J.Rumiński

Plan wykładu:

1. Wprowadzenie – XML a bazy danych;

2. Podstawowe definicje i pojęcia;

3. Cele XML;

4. Charakterystyka dokumentu XML;

5. Rozbiór składniowy dokumentu XML;

6. Poprawność dokumentu XML;

7. Metody definicji typów dokumentów: DTD, XML-

Schema;

8. Rodzaje dokumentów XML i formy ich składowania;

9.

9.

NXD – Native XML Databases;

NXD – Native XML Databases;

10. Wyszukiwanie i przeszukiwanie dokumentów XML: 

XPath a XQuery;

11. Przekształcanie dokumentów XML: XSL, XSLT, XPath, 

FO;

12. Zastosowania XML

background image

 

 

 slajd 95

©  J.Rumiński

Native XML Databases (NXD) określa ogólną klasę 
systemów zarządzania bazami danych tworzących 
kolekcje dokumentów XML w formie pełnej (tzn., 
wszystkie znaki dokumentu XML są składowane).  
Podsumowanie metod organizacji baz danych XML 
przedstawia poniższy diagram (na przykładzie Oracle 
XML DB).

http://otn.oracle.com/tech/xml/htdocs/XDBDemo1_viewlet.html

background image

 

 

 slajd 96

©  J.Rumiński

NXD umożliwiają składowanie zarówno 
elementów/atrybutów jak i komentarzy, encji nie 
podlegających rozbiorowi, itp. NXD obsługują 
dedykowane dla XML języki zapytań. Jest to istotna 
funkcja, gdyż trudno jest zdefiniować i wykonać w SQL 
lub OQL niektóre zapytania dotyczące składni 
dokumentu XML.

Podjęto szereg prób definicji NXD; jedna z najbardziej 
popularnych została sformułowana przez XML:DB (na łamach 
listy dyskusyjnej):

NXD:  

Definiuje logiczny model dokumentu XML – w 

odróżnieniu do 

danych dokumentu – oraz umożliwia 

składowanie i odzyskiwanie dokumentów zgodnie z tym 
modelem. Przykładowymi modelami 

są: XPath, DOM, 

SAX.

Jednostką danych modelu jest dokument XML (w 

modelu 

relacyjnym krotka, w modelu obiektowym 

obiekt).

Model nie określa fizycznej organizacji danych.

background image

 

 

 slajd 97

©  J.Rumiński

Cechy realizacji NXD:

- operują na pojęciu kolekcji (relacja w RDB) dokumentów 
XML (krotka w RDB);

- wykorzystują dedykowane języki zapytań, np.: XPath, XQL, 
Xquery;

- wykorzystują dedykowane metody aktualizacji danych, np.: 
XUpdate;

- dostarczają API dla rozwoju aplikacji;

- wspomagają indeksowanie dokumentów;

- normalizacja dokumentów realizowana jest na poziomie 
projektu schematu (możliwe są jednak elementy 
wielowartościowe);

- integralność referencyjna zapewnia istnienie poprawnych 
dokumentów XML wskazywanych przez XLink lub inne 
mechanizmy referencyjne.

Popularną (poza komercyjnymi) wersją NXD jest Xindice 
(Apache, dawniej dbXML).

background image

 

 

 slajd 98

©  J.Rumiński

Plan wykładu:

1. Wprowadzenie – XML a bazy danych;

2. Podstawowe definicje i pojęcia;

3. Cele XML;

4. Charakterystyka dokumentu XML;

5. Rozbiór składniowy dokumentu XML;

6. Poprawność dokumentu XML;

7. Metody definicji typów dokumentów: DTD, XML-

Schema;

8. Rodzaje dokumentów XML i formy ich składowania;

9. NXD – Native XML Databases;

10.

10.

Wyszukiwanie i przeszukiwanie dokumentów XML: 

Wyszukiwanie i przeszukiwanie dokumentów XML: 

XPath a XQuery;

XPath a XQuery;

11. Przekształcanie dokumentów XML: XSL, XSLT, XPath, 

FO;

12. Zastosowania XML

background image

 

 

 slajd 99

©  J.Rumiński

Zasadnicza składnia wyrażenia XPath opiera się o znaną 
ścieżkę dostępu w hierarchii systemu plików, np.:

/sklep  

- oznacza główny element dokumentu (korzeń),

/sklep/chleb

- oznacza subelement „chleb” dokumentu,

//napoj

- oznacza wszystkie elementy „napoj” hierarchii,

/sklep/*

- oznacza wszystkie subelementy elementu „sklep”,

/sklep/napoj[1] - oznacza pierwszego potomka subelementu „napoj”,
/sklep/napoj[last()] – oznacza ostatniego (użycie funkcji) potomka 

subelementu „napoj”,

//napoj[@cola] - oznacza atrybuty „cola” wszystkich elementów 

„napoj”,

//napoj[not(@*)]

- oznacza wszystkie elementy „napoj” bez 

atrybutow;
//napoj[@cola=‘pepsi’] – oznacza wszystkie elementy „napoj” o 
wartości 

atrybutu cola równej „pepsi”

XPath – rekomendacja W3C pozwalająca na definiowanie 
referencji (adresu) do encji. Wykorzystywana jest często 
do formułowania treści wyszukiwanej w dokumencie 
XML. XPath jest bardzo często wykorzystywany przez 
XDB. W wersji XPath 2.0 wprowadzono wyrażenia 
regularne rozszerzające dodatkowo zakres możliwych do 
zdefiniowania wzorców.

background image

 

 

 slajd 100

©  J.Rumiński

//*[count(napoj)=2] – oznacza wszystkie elementy mające dwóch 
potomków 

„napoj”,

//*[contains(name(),‘n')] – oznacza wszystkie elementy zawierające w 
nazwie 

„n”,

//napoj | //chleb - oznacza wszystkie elementy „napoj” i „chleb”,

//napoj/parent::*  - oznacza wszystkich rodziców elementu „napoj”,

i wiele innych.

Dla XPath zdefiniowano szereg funkcji oraz operatorów 
umożliwiających budowanie złożonych ścieżek dostępu.

XPath 2.0 (draft) umożliwia również wykorzystanie wyrażeń 
regularnych, pętli, instrukcji warunkowych itp.

background image

 

 

 slajd 101

©  J.Rumiński

Relacja pomiędzy XQuery a XPath 2.0:
XQuery 1.0 (draft):

„XQuery is derived from an XML query language called Quilt 
[Quilt], which in turn borrowed features from several other 
languages, including XPath 1.0 [XPath 1.0], XQL [XQL], XML-QL 
[XML-QL], SQL [SQL], and OQL [ODMG]. 
XQuery Version 1.0 is an extension of XPath Version 2.0. Any 
expression that is syntactically valid and executes successfully 
in both XPath 2.0 and XQuery 1.0 will return the same result in 
both languages.”

XQuery – język zapytań da XML

Przykład: Generacja dokumentu HTML jako lista 
nagłówków zawierająca ceny napojów (elementy 
/sklep/napoj/cena): 

<html>{
let $sklep := document(„mojsklep.xml")/sklep 
for $t in $sklep/napoj 

return <h2>{$t/cena)</h2> 

}</html> 

background image

 

 

 slajd 102

©  J.Rumiński

Przykładowa implementacja XQuery: 
http://xqueryservices.com/ - demonstracja przykładowych 
zapytań według: http://www.w3.org/TR/xmlquery-use-
cases/

Inna: www.fatdog.com - możliwe do pobrania z tej strony 
API oraz prosta aplikacja umożliwiają testowanie własnych 
zapytań XQuery.

Przykładowe podręczniki nauki XQuery opisane są na 
stronie W3C: http://www.w3.org/XML/Query#other

background image

 

 

 slajd 103

©  J.Rumiński

Przykład na podstawie: http://www.w3.org/TR/xmlquery-use-cases/

background image

 

 

 slajd 104

©  J.Rumiński

Plan wykładu:

1. Wprowadzenie – XML a bazy danych;

2. Podstawowe definicje i pojęcia;

3. Cele XML;

4. Charakterystyka dokumentu XML;

5. Rozbiór składniowy dokumentu XML;

6. Poprawność dokumentu XML;

7. Metody definicji typów dokumentów: DTD, XML-

Schema;

8. Rodzaje dokumentów XML i formy ich składowania;

9. NXD – Native XML Databases;

10. Wyszukiwanie i przeszukiwanie dokumentów XML: 

XPath a XQuery;

11.

11.

Przekształcanie dokumentów XML: XSL, XSLT, XPath, 

Przekształcanie dokumentów XML: XSL, XSLT, XPath, 

FO;

FO;

12. Zastosowania XML

background image

 

 

 slajd 105

©  J.Rumiński

Jedną z najważniejszych cech technologii XML jest 
możliwość automatycznego przekształcania dokumentów 
XML. Przekształcenie to (transformacja) odbywa się 
poprzez zdefiniowany plik opisujący odwzorowanie źródło-
>cel. Plik taki tworzony jest zgodnie z rekomendacją XML 
oraz XSL (Extensible Stylesheet Language), i nosi nazwę 
arkusza stylów. XML Stylesheet wykorzystywane jest 
następnie (obok pliku źródłowego XML) do przekształcenia 
przez procesor XSLT (XSL Transform) do postaci końcowej. 
Postać końcowa oznaczać może inny plik XML, XHTML, PDF, 
itp.

Transformacja plików XML na inną postać XML jest również 
czasem wykonywana przy składowaniu danych dokumentu 
XML w bazie danych.

XSL jest zatem zarówno językiem transformacji 
dokumentów XML jak i słownikiem znaczników 
wykorzystywanych do formatowania składni dokumentu 
końcowego.

background image

 

 

 slajd 106

©  J.Rumiński

XSL (http://www.w3.org/TR/xsl/) musi być dokumentem XML, 
zawierającym oprócz prologu element arkusza stylów z definicją 
przestrzeni nazw „xsl”:

<?xml version='1.0' encoding='ISO-8859-2'?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

...
</xsl:stylesheet>

Arkusz zawierać może różne elementy definiowane w 
specyfikacji XSL, między innymi xsl:template (szablon), 
xsl:output (parametry formatu wyjścia), xsl:variable (definicja 
zmiennej), itd.

Zasadniczym elementem, w obrębie którego definiuje się 
odwzorowanie jest szablon. Element xsl:template zawiera jako 
atrybut wyrażenie zgodne z XPath wskazujące adres elementu 
źródłowego, który jest odwzorowywany zgodnie z danym 
szablonem.

<xsl:template match="szkoda">
...
</xsl:template>

background image

 

 

 slajd 107

©  J.Rumiński

W ciele tak zdefiniowanego elementu określa się reguły 
odwzorowania. W tym celu wprowadza się tekst wolny (tzn., 
taki, który nie jest interpretowany przez procesor XSLT lecz jest 
przepisywany), oraz elementy „xsl” służące do zdefiniowania 
dalszych reguł odwzorowania. Przykładowe elementy to:
<xsl:apply-templates>  - określa żądanie wstawienia wyniku 
przetwarzania 

węzłów potomnych lub węzłów 

określonych przez zgodny z XPath  adres, podany jako wartość 
atrybutu „select”, np.:

<xsl:apply-templates select="//rowid"/> 

<xsl:value-of> - określa żądanie wstawienia wartości elementu 
lub atrybutu (@) według zgodnego z XPath adresu, podanego 
jako wartość atrybutu „select”, np.:

<xsl:value-of select="opis"/>

<xsl:element> oraz <xsl:attribute> - określają żądanie 
wstawienia do dokumentu końcowego elementów XML i ich 
atrybutów zgodnie z podanymi wartościami, np.: 

background image

 

 

 slajd 108

©  J.Rumiński

<xsl:element name=”firma”>

<xsl:attribute name=”REGON”>

000012345

 </xsl:attribute>
JTECH 

</xsl:element>

Efekt: <firma REGON=”000012345”>JTECH</firma>

<xsl:for-each> - określa realizowane w pętli żądanie wykonania 
danego odwzorowania dla elementów według zgodnego z XPath 
adresu, podanego jako wartość atrybutu „select”, np.:

<xsl:for-each select=„samochod">
...
<xsl:for-each>

<xsl:if> - określa żądanie wykonania odwzorowania jeśli 
spełniony jest warunek podany jako zgodny z XPath adres, 
stanowiący adres atrybutu „test”, np.: 

background image

 

 

 slajd 109

©  J.Rumiński

<xsl:if test=”@REGON=‘000012345’ ”>
...
</xsl:if>

<xsl:choose>, <xsl:when>, <xsl:otherwise> - określa realizację 
w obrębie pętli danych instrukcji odwzorowania jeśli spełniony 
jest warunek podany jako wartość argumentu „test” elementu 
<xsl:when> lub innych instrukcji odwzorowania jeśli ten 
warunek nie jest spełniony (<xsl:otherwise>), np.:

<xsl:for-each select=„samochod">
  <xsl:choose>
    <xsl:when test=”@REGON=‘000012345’ ”>
      ...
    </xsl:when> <xsl:otherwise>
      ...
    </xsl:otherwise>
  </xsl:choose>
<xsl:for-each>

i inne.

background image

 

 

 slajd 110

©  J.Rumiński

Przykładowy dokument XSL:

Na podstawie www.zvon.org 

background image

 

 

 slajd 111

©  J.Rumiński

Przykładowy dokument XSL:

Na podstawie www.zvon.org 

background image

 

 

 slajd 112

©  J.Rumiński

XSL i obiekty formatujące (FO)

Obiekty formatujące stanowią treść rozdziału 6 specyfikacji 
XSL 1.0. Obiekty te stanowią metodę odwzorowania z formatu 
składowania danych na format prezentacji danych. 
Specyfikacja określa zarówno składnię wykorzystania 
obiektów formatujących jak i ich pełny zestaw. 
Wykorzystywana przestrzeń nazw dla FO to: 
xmlns:fo="http://www.w3.org/1999/XSL/Format"

Opis prezentacji zaczyna się od obiektu formatującego 
<fo:layout-master-set>, który zawiera jeden lub więcej 
elementów typu „page master” lub „page sequence master” 
określających układ dokumentu, np.:

<fo:simple-page-master master-name="all"
        page-height="11.5in" page-width="8.5in"
        margin-top="1in" margin-bottom="1in" 
        margin-left="0.75in" margin-right="0.75in">

<fo:region-body margin-top="1in" margin-bottom="0.75in"/>
<fo:region-before extent="0.25in"/>
<fo:region-after extent="0.5in"/>

</fo:simple-page-master>

Strony przygotowywanego dokumentu są grupowane w 
sekwencję stron. 

background image

 

 

 slajd 113

©  J.Rumiński

Odwzorowywanie oraz wprowadzanie własnego tekstu odbywa 
się w obrębie elementu <fo:flow>. Wartość atrybutu tego 
elementu „flow-name” określa gdzie przetwarzane dane  mają 
być zawarte. 

<fo:flow flow-name="xsl-region-body">

<xsl:apply-templates select="rowid"/>

</fo:flow>

Elementarne odwzorowanie definiowane jest w elemencie 
<fo:block> zdefiniowanym w elemencie <fo:flow> (najczęściej 
przez <xsl:apply-templates>).  Element <fo:block> posiada 
wiele atrybutów umożliwiających zdefiniowanie parametrów 
prezentacji tekstu, np.: kolor czcionki, krój czcionki, rozmiar, 
itp. Przykładowe zastosowanie elementu:

<fo:block color="blue">NAZWISKO:</fo:block>,
<fo:block><xsl:value-of select="."/></fo:block> ,
<fo:block text-align="start" font-size="12pt" font-family="sans-serif">
...
</fo:block>

background image

 

 

 slajd 114

©  J.Rumiński

Przykład:

<?xml version="1.0" encoding="ISO-8859-2"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:fo="http://www.w3.org/1999/XSL/Format” version="1.0">

<xsl:template match="ROWSET">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>    <fo:simple-page-master master-name="all” page-

height="11.5in" page-width="8.5in"

margin-top="1in" margin-bottom="1in" margin-left="0.75in" 

margin-right="0.75in">

<fo:region-body margin-top="1in" margin-bottom="0.75in"/>
<fo:region-before extent="0.25in"/> <fo:region-after 

extent="0.5in"/>
</fo:simple-page-master> </fo:layout-master-set>
<fo:page-sequence master-reference="all" format="i">
<fo:static-content flow-name="xsl-region-before">
<fo:block text-align="center" font-size="10pt" font-family="serif" line-

height="1em + 2pt">
<fo:retrieve-marker retrieve-class-name="rowid” retrieve-boundary="page"

retrieve-position="first-starting-within-page"/>

  FORMULARZ SZKODY - SLEEP SAFE INSURANCE
 <fo:retrieve-marker retrieve-class-name="rowid” retrieve-boundary="page„

retrieve-position="last-ending-within-page"/>

</fo:block> </fo:static-content> 
<fo:static-content flow-name="xsl-region-after">
<fo:block text-align="center" font-size="10pt" font-family="serif" line-

height="1em + 2pt">Strona (<fo:page-number/>)
</fo:block></fo:static-content> 
<fo:flow flow-name="xsl-region-body">

<xsl:apply-templates select="rowid"/>

</fo:flow></fo:page-sequence></fo:root></xsl:template>

background image

 

 

 slajd 115

©  J.Rumiński

<xsl:template match="rowid">
  <fo:block text-align="start" font-size="12pt" font-family="sans-serif">
    <xsl:apply-templates select="nazwisko"/>
     <xsl:apply-templates select="imie"/>
    <xsl:apply-templates select="dimie"/>
    <xsl:apply-templates select="pesel"/>
    <fo:leader leader-alignment="reference-area" leader-pattern="dots” leader-

length="5in"/>
    <fo:leader leader-alignment="reference-area" leader-pattern="dots" leader-

length="5in"/>
      <xsl:apply-templates select="szkoda/adres"/>  
    <xsl:apply-templates select="szkoda/opis"/>  
    <xsl:apply-templates select="szkoda/czas"/>  
  </fo:block>
</xsl:template>
<xsl:template match="nazwisko">
<fo:block color="blue">NAZWISKO:</fo:block>
<fo:block start-indent="3em"><xsl:value-of select="."/></fo:block>
</xsl:template>
<xsl:template match="imie">
<fo:block color="blue">IMIE:</fo:block>
<fo:block start-indent="3em"><xsl:value-of select="."/></fo:block>
</xsl:template>

Przykład cd.:

background image

 

 

 slajd 116

©  J.Rumiński

<xsl:template match="dimie">
<fo:block color="blue">DRUGIE IMIE:</fo:block>
<fo:block start-indent="3em"><xsl:value-of select="."/></fo:block>
</xsl:template>
<xsl:template match="pesel">
  <fo:block color="blue">PESEL:</fo:block>
<fo:block start-indent="3em"><xsl:value-of select="."/></fo:block>
</xsl:template>
<xsl:template match="szkoda/adres">
<fo:block color="red">MIEJSCE ZDARZENIA:</fo:block>
<fo:block start-indent="3em"><xsl:value-of select="."/></fo:block>
</xsl:template>
<xsl:template match="szkoda/opis">
<fo:block color="red">OPIS ZDARZENIA:</fo:block>
<fo:block start-indent="3em"><xsl:value-of select="."/></fo:block>
</xsl:template>
<xsl:template match="szkoda/czas">
  <fo:block color="red">DATA I GODZINA ZDARZENIA:</fo:block>
 <fo:block start-indent="3em"> <xsl:value-of select="."/></fo:block>
</xsl:template>

Przykład cd.:

Bardzo dobry podręcznik dotyczący FO: http://www.renderx.com/tutorial.html

background image

 

 

 slajd 117

©  J.Rumiński

Plan wykładu:

1. Wprowadzenie – XML a bazy danych;

2. Podstawowe definicje i pojęcia;

3. Cele XML;

4. Charakterystyka dokumentu XML;

5. Rozbiór składniowy dokumentu XML;

6. Poprawność dokumentu XML;

7. Metody definicji typów dokumentów: DTD, XML-

Schema;

8. Rodzaje dokumentów XML i formy ich składowania;

9. NXD – Native XML Databases;

10. Wyszukiwanie i przeszukiwanie dokumentów XML: 

XPath a XQuery;

11. Przekształcanie dokumentów XML: XSL, XSLT, XPath, 

FO;

12.

12.

Zastosowania XML

Zastosowania XML

background image

 

 

 slajd 118

©  J.Rumiński

Zastosowania XML:

-Wiadomości elektroniczne, np. SOAP;

-Pliki konfiguracyjne;

-Interfejs (odwzorowywanie danych);

-Dokumentacja XML, różna forma (plik, baza danych) i różna 
treść (GML, MathML, HL7, inne);

-Opis treści danych multimedialnych - MPEG7;

-Inne.

Dziękuję.


Document Outline