Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk •...

173
Wprowadzenie do XML Tomasz Traczyk [email protected] http://www.ia.pw.edu.pl/~ttraczyk/

Transcript of Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk •...

Page 1: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Wprowadzenie do XML

Tomasz Traczyk

[email protected]

http://www.ia.pw.edu.pl/~ttraczyk/

Page 2: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

� Co to jest XML

� Dokument w XML

� DTD i encje

� Składniki XML: łączniki, przestrzenie nazw

� Poprawność dokumentu XML

� Zalety i wady XML

� Ważniejsze zastosowania XML

� Rola i pozycja XML

Plan prezentacji

Page 3: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Co to jest XML?

• Extensible Markup Language

– Metajęzyk

• umożliwia definiowanie języków znakowania

• służy do zapisu różnorodnych dokumentów i struktur danych

• przeznaczony m.in. do użycia w WWW

• Geneza XML

– Podzbiór SGML (Standard Generalised Markup Language)

– Uproszczony przez usunięcie trudnych i niekoniecznych konstrukcji

– Dostosowany do przetwarzania w WWW

Page 4: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Po co XML?

• Co zapewnia XML?

– Możliwość definiowania

• struktury dokumentu

• znaczników (tags)

– Prostotę

• łatwość opanowania przez użytkowników

• względnie proste przetwarzanie

– Łatwość interpretacji dokumentu

• przez przeglądarki

• przez człowieka

• nawet bez definicji struktury dokumentu

– Możliwość tworzenia połączeń (links)

• między dokumentami

• przez sieć

Page 5: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Założenia XML

• Pierwotne

– Łatwa wymiana danych i

dokumentów między

• różnymi systemami informatycznymi

• różnymi społecznościami

użytkowników

– Tworzenie i prezentacja dokumentów

• reprezentujących różne dziedziny

• za pomocą ujednoliconego

oprogramowania

– Dystrybucja specjalistycznych

dokumentów bezpośrednio w WWW

– Proste i ujednolicone przetwarzanie

i wyszukiwanie informacji

– Łatwy podział dokumentów na części

• współdzielenie części (także

odległych) przez różne dokumenty

• Późniejsze

– Możliwość definiowania nowych

typów dokumentów w oparciu o

definicje już istniejące

– Wymiana danych z możliwie silną

kontrolą poprawności

• typów danych

• identyfikatorów i odwołań (referencji)

Page 6: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Czym jest XML

• Czym jest XML?

– Sposobem reprezentowania

informacji

• informacji semistrukturalnej

– część struktury dobrze

określona

– część zmienna, źle zdefiniowana

lub nieistotna

– np. dokumenty tekstowe

• danych o dobrze określonej

strukturze

– Reprezentacja ta służyć ma

• do wymiany informacji

• niekiedy także do jej składowania

• Czym nie jest XML?

– Nowym modelem danych, mogącym

wyprzeć np. model relacyjny czy

obiektowy.

• odpowiada modelowi hierarchicznemu

– łatwemu do wyrażenia za pomocą

znakowania

– wystarczającemu do reprezentowania

wielu rodzajów dokumentów

– niedostatki rekompensuje się

zastosowaniem identyfikatorów i

referencji do nich

– Konkurencją dla modeli stosowanych

współcześnie w bazach danych

(choć może uzupełniać ich

możliwości)

Page 7: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Plan prezentacji

� Co to jest XML

� Dokument w XML

� DTD i encje

� Składniki XML: łączniki, przestrzenie nazw

� Poprawność dokumentu XML

� Zalety i wady XML

� Ważniejsze zastosowania XML

� Rola i pozycja XML

Page 8: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Dokument w XML

• Dokument w XML

– Plik tekstowy

– Znaczniki

• początkowe ujęte w znaki < >

• końcowe ujęte w </ >

– Budowa dokumentu

• prolog

• element główny

– elementy podrzędne

• epilog

– Możliwe użycie łączników (links)

• Znakowanie znaczeniowe

– Nie ma predefiniowanych znaczników

– Znaczniki odzwierciedlają strukturę

dokumentu/danych

– Znacznikom nie jest z góry przypisany

sposób prezentacji

– Do formatowania wizualnego

konieczne

użycie arkusza stylistycznego (style-

sheet)

Page 9: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Dokument w XML – przykład<?xml version="1.0" encoding="ISO-8859-2"?><!DOCTYPE eres_konspekty SYSTEM "konspekty.dtd"><?xml-stylesheet type="text/xsl" href="konspekty.xsl"?><eres_konspekty><przedmiot id="KBD2" wersja="1"><slowo_kluczowe>bazy danych</slowo_kluczowe><slowo_kluczowe>Oracle</slowo_kluczowe><konspekt><czesc_konspektu id="Streszczenie">

<P> Monograficzny przedmiot poświęcony bazie danych inarzędziom Oracle. </P>

</czesc_konspektu><czesc_konspektu id="Treść przedmiotu"><P> Omawiane są podstawowe zagadnienia związane z wykorzystaniemRDBMS Oracle7 i <I>Oracle8</I> oraz administrowaniem nimi.</P>

<P> Przedstawiane są także narzędzia do budowy aplikacji: </P><UL><LI> Oracle Forms, </LI><LI> Oracle Reports. </LI>

</UL></czesc_konspektu>

</konspekt></przedmiot></eres_konspekty>

Page 10: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

<?xml version="1.0" encoding="ISO-8859-2"?><!DOCTYPE eres_konspekty SYSTEM "konspekty.dtd"><?xml-stylesheet type="text/xsl" href="konspekty.xsl"?><eres_konspekty><przedmiot id="KBD2" wersja="1"><slowo_kluczowe>bazy danych</slowo_kluczowe><slowo_kluczowe>Oracle</slowo_kluczowe><konspekt><czesc_konspektu id="Streszczenie"><P> Monograficzny przedmiot poświęcony bazie danych inarzędziom Oracle. </P>

</czesc_konspektu><czesc_konspektu id="Treść przedmiotu"><P> Omawiane są podstawowe zagadnienia związane z wykorzystaniemRDBMS Oracle7 i <I>Oracle8</I> oraz administrowaniem nimi.</P><P> Przedstawiane są także narzędzia do budowy aplikacji: </P><UL><LI> Oracle Forms, </LI><LI> Oracle Reports. </LI>

</UL></czesc_konspektu>

</konspekt></przedmiot>

</eres_konspekty>

Prolog

- Wersja XML (obowiązkowa) i strona kodowa (opcjonalna)*

- Odwołanie do DTD (opcjonalne)

- Odwołanie do arkusza stylistycznego (opcjonalne) *

_________________

* Instrukcje przetwarzania

Dokument w XML – przykład

Page 11: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

<?xml version="1.0" encoding="ISO-8859-2"?><!DOCTYPE eres_konspekty SYSTEM "konspekty.dtd"><?xml-stylesheet type="text/xsl" href="konspekty.xsl"?><eres_konspekty><przedmiot id="KBD2" wersja="1"><slowo_kluczowe>bazy danych</slowo_kluczowe><slowo_kluczowe>Oracle</slowo_kluczowe><konspekt><czesc_konspektu id="Streszczenie"><P> Monograficzny przedmiot poświęcony bazie danych inarzędziom Oracle. </P>

</czesc_konspektu><czesc_konspektu id="Treść przedmiotu"><P> Omawiane są podstawowe zagadnienia związane z wykorzystaniemRDBMS Oracle7 i <I>Oracle8</I> oraz administrowaniem nimi.</P><P> Przedstawiane są także narzędzia do budowy aplikacji: </P><UL><LI> Oracle Forms, </LI><LI> Oracle Reports. </LI>

</UL></czesc_konspektu>

</konspekt></przedmiot>

</eres_konspekty>

Elementy

- Element główny — dokładnie jeden

- Elementy podrzędne

- Jawne zamykanie znaczników

Dokument w XML – przykład

Page 12: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

<?xml version="1.0" encoding="ISO-8859-2"?><!DOCTYPE eres_konspekty SYSTEM "konspekty.dtd"><?xml-stylesheet type="text/xsl" href="konspekty.xsl"?><eres_konspekty><przedmiot id="KBD2" wersja="1"><slowo_kluczowe>bazy danych</slowo_kluczowe><slowo_kluczowe>Oracle</slowo_kluczowe><konspekt><czesc_konspektu id="Streszczenie"><P> Monograficzny przedmiot poświęcony bazie danych inarzędziom Oracle. </P>

</czesc_konspektu><czesc_konspektu id="Treść przedmiotu"><P> Omawiane są podstawowe zagadnienia związane z wykorzystaniemRDBMS Oracle7 i <I>Oracle8</I> oraz administrowaniem nimi.</P><P> Przedstawiane są także narzędzia do budowy aplikacji: </P><UL><LI> Oracle Forms, </LI><LI> Oracle Reports. </LI>

</UL></czesc_konspektu>

</konspekt></przedmiot>

</eres_konspekty>

Atrybuty

- Uzupełniają elementy

- Wartości ujęte w cudzysłów

Dokument w XML – przykład

Page 13: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Plan prezentacji

� Co to jest XML

� Dokument w XML

� DTD i encje

� Składniki XML: łączniki, przestrzenie nazw

� Poprawność dokumentu XML

� Zalety i wady XML

� Ważniejsze zastosowania XML

� Rola i pozycja XML

Page 14: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Co może towarzyszyć dokumentowi XML?

• Definicja dokumentu

– Określa precyzyjnie składnię dokumentu

• deklaracje elementów

• określenie ich poprawnego

zawierania i następstwa

• deklaracje atrybutów elementów

• definicje typów danych (tylko

schematy)

• definicje encji (tylko DTD)

– Języki• DTD (Document Type Definition)

• schematy (XML Schema)

• Arkusze stylistyczne (style-sheets)

– Funkcja• określenie sposobu prezentacji dla

elementów i atrybutów

• transformacje (tylko XSL), np.

– XML → HTML

– XML → XML

• możliwe różne prezentacje tego

samego dokumentu w zależności od

środowiska

– Języki • XSL (eXtensible Style Language)

• CSS (Cascading Style Sheets)

Page 15: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

DTD (Document Type Definition)

• Rola

– Definiowanie składni dokumentu XML

– W XML istnienie DTD jest nieobowiązkowe!

• Zawartość

– Deklaracje elementów

– Określenie ich poprawnego

zawierania i następstwa

– Deklaracje atrybutów elementów

– Deklaracje identyfikatorów i odwołań

– Definicje encji

– Deklaracje notacji – sposób obsługi

pewnych formatów danych

– Sekcje warunkowe

• Składnia

– Pochodzi wprost z SGML

– Nie jest w XML

• nie można użyć narzędzi XML-owych

– Podobna koncepcyjnie do klasycznych

notacji formalnych definicji składni, np.

BNF

(Backus-Naur Form)

– Łatwa do opanowania

– Dostosowana głównie do definiowania

struktur dokumentów tekstowych

– Niedostosowana do definiowania

struktur danych:

• brak definicji typów danych

(wszystko jest tekstem)

• słabo zrealizowane identyfikatory

i odwołania

Page 16: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Przykład DTD

<!ELEMENT eres_konspekty (przedmiot)+ >

<!ELEMENT przedmiot ((slowo_kluczowe)*, konspekt) >

<!ELEMENT slowo_kluczowe (#PCDATA) >

<!ELEMENT konspekt (czesc_konspektu)+ >

<!ELEMENT czesc_konspektu (P|UL)+ >

<!ELEMENT P (#PCDATA|I)* >

<!ELEMENT I (#PCDATA) >

<!ELEMENT UL (LI)+ >

<!ELEMENT LI (#PCDATA) >

<!ATTLIST przedmiot id ID #REQUIRED

wersja CDATA #IMPLIED >

<!ATTLIST czesc_konspektu id ID #REQUIRED >

Page 17: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

<!ELEMENT eres_konspekty (przedmiot)+ >

<!ELEMENT przedmiot ((slowo_kluczowe)*, konspekt) ><!ELEMENT slowo_kluczowe (#PCDATA) ><!ELEMENT konspekt (czesc_konspektu)+ >

<!ELEMENT czesc_konspektu (P|UL)+ ><!ELEMENT P (#PCDATA|I)* ><!ELEMENT I (#PCDATA) ><!ELEMENT UL (LI)+ ><!ELEMENT LI (#PCDATA) >

<!ATTLIST czesc_konspektu id ID #REQUIRED >

<!ATTLIST przedmiot id ID #REQUIRED

wersja CDATA #IMPLIED >

Definicje elementów

- Definiują nazwy elementów

- Określają zawieranie i następstwo:

? — element opcjonalny

+ * — powtórzenia (obowiązkowe, opcjonalne)

| — alternatywa

- Określają zawartość elementu:

#PCDATA — tekstowa (Parsed Character Data)

EMPTY — pusta (tylko znacznik i atrybuty)

ANY — dowolna

Przykład DTD, c.d.

Page 18: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

<!ELEMENT eres_konspekty (przedmiot)+ >

<!ELEMENT przedmiot ((slowo_kluczowe)*, konspekt) >

<!ELEMENT slowo_kluczowe (#PCDATA) >

<!ELEMENT konspekt (czesc_konspektu)+ >

<!ELEMENT czesc_konspektu (P|UL)+ >

<!ELEMENT P (#PCDATA|I)* >

<!ELEMENT I (#PCDATA) >

<!ELEMENT UL (LI)+ >

<!ELEMENT LI (#PCDATA) >

<!ATTLIST czesc_konspektu id ID #REQUIRED ><!ATTLIST przedmiot id ID #REQUIRED

wersja CDATA #IMPLIED >

Definicje atrybutów- Definiują nazwy atrybutów- Określają typ atrybutu:

CDATA — tekstowy (Character Data)ID — identyfikator (unikalny w ramach dokumentu)IDREF — referencja

- Określają obowiązkowość atrybutów:#REQUIRED — obowiązkowy#IMPLIED — opcjonalny bez wartości domyślnej#FIXED — ustalony (niezmienny)

- Podają - wartości domyślne atrybutów opcjonalnych- listy dopuszczalnych wartości (typy wyliczeniowe)

Przykład DTD, c.d.

Page 19: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Encje

• Encje (jednostki, entities)– Rodzaj makrodefinicji

• Encje ogólne– Stosowane do

• włączania części dokumentu (np. powtarzalnych, z plików zewnętrznych)

• umieszczania znaków specjalnych w dokumencie

– Odwołanie do encji ogólnej: &nazwa;

– Encje predefiniowane:• znaki specjalne XLM (tylko!):

&lt; &gt; &quot; &apos; &amp;

• referencje znakowe, np. &#8478;(Unicode)

– Encje definiowane w DTD:<!ENTITY nazwa "tekst">

lub<!ENTITY nazwa SYSTEM "URL">

• Encje zewnętrzne i wewnętrzne

– Encje wewnętrzne są definiowane w DTD

– Encje zewnętrzne odwołują się do plików

(słowo SYSTEM)

• Encje parametryczne

– Wykorzystanie

• powtarzające się części DTD

• parametryzacja DTD

– Do użycia w DTD – odwołanie: %nazwa;

– Definiowane w DTD

<!ENTITY % nazwa "tekst">

lub

<!ENTITY % nazwa SYSTEM "URL">

Page 20: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

DTD zewnętrzne i wewnętrzne• DTD zewnętrzne

– Definicja typu umieszczona w osobnym

dokumencie

– Odwołanie do niego w deklaracji DTD

– Przykład:

<!DOCTYPE eres_konspekty

SYSTEM "konspekty.dtd">

– Nazwa DTD musi być taka sama, jak

nazwa elementu głównego dokumentu!

• DTD wewnętrzne– Treść DTD umieszczona w prologu

dokumentu

– Przykład:

<!DOCTYPE eres_konspekty [

<!ELEMENT eres_konspekty ... >

<!ELEMENT przedmiot ... >

...

]>

• Rozwiązanie mieszane

– Część DTD w prologu, część w osobnym

pliku

– Zastosowanie np.:

• do uzupełniania wspólnego DTD

lokalnymi definicjami encji

• do parametryzowania DTD

– Encji parametrycznej zdefiniowanej w

wewnętrznej części mieszanego DTD

można użyć do parametryzowania

zewnętrznej części DTD

– Przykład:

<!DOCTYPE eres_konspekty

SYSTEM "konspekty.dtd"

[

<!ENTITY ... >

]>

Page 21: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Plan prezentacji

� Co to jest XML

� Dokument w XML

� DTD i encje

� Składniki XML: łączniki, przestrzenie nazw itd.

� Poprawność dokumentu XML

� Zalety i wady XML

� Ważniejsze zastosowania XML

� Rola i pozycja XML

Page 22: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Dokument — inne składniki

• Instrukcje przetwarzania

– Służą do sterowania aplikacjami

przetwarzającymi

– Składnia

<?nazwa_aplikacji atrybuty?>

– Nazwy rozpoczynające się od xml

— zastrzeżone

• Sekcje CDATA

– W tekście wewnątrz sekcji CDATA nie są

rozpoznawane znaki specjalne XML

– Stosowane do umieszczania fragmentów

zawierających dużo znaków specjalnych

– Składnia

<![CDATA[ tekst ]]>

• Komentarze

– Składnia

<!-- tekst komentarza -->

– Zawartość: cokolwiek oprócz ‘--’

• Przetwarzanie białych znaków

– Atrybut predefiniowany xml:space

• wartość "preserve" powoduje

zachowywanie nadmiarowych białych

znaków przez programy

przetwarzające

Page 23: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Adresy zasobów

• Adresy bazowe dla URL

– Atrybut predefiniowany xml:base

• ustala URL odniesienia dla odwołań w

– elemencie, w którym jest określony

– w elementach podrzędnych

• pozwala na użycie adresów

względnych

• URI (Unified Resource Identifier)

– Rozszerzony URL

• adres sieciowy

• zapytanie

• identyfikator fragmentu (XPointer)

– Lub URN

• URN (Unified Resource Name)

– Jednoznaczna nazwa zasobu,

bez określania jego lokalizacji

– Np. urn:oracle-xsql

Page 24: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Przestrzenie nazw

• Motywacja– Powstaje wiele słowników dziedzinowych

– Autorzy dokumentów powinni móc korzystać z wielu słowników i dodawać własne

– Powstaje ryzyko konfliktów nazw

• Rozwiązanie – przestrzenie nazw (XML namespaces)

– Nazwy elementów lub atrybutów poprzedzane prefiksem przestrzeni nazw i dwukropkiem

• Definiowanie przestrzeni nazw– Przez podanie specjalnego atrybutu

xmlns:prefiks_przestrzeni

– Wartość tego atrybutu określa URI

przestrzeni nazw

• URN słownika

• URL domeny zarządzającej słownikiem

– Nazwą przestrzeni jest jej URI, a nie

prefiks!

– Przestrzeń zdefiniowana w elemencie

nadrzędnym może być wykorzystywana

w podrzędnych

– W jednym dokumencie można użyć wielu

przestrzeni nazwPrzykład<eres_konspekty

xmlns="http://www.elka.pw.edu.pl/eres"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.elka.pw.edu.pl/eres konspekty.xsd">

� Przestrzeń domyślna – bez prefiksu

� Przestrzeń pomocnicza – z prefiksem xsi

� Użycie prefiksu: przed nazwą elementu lub atrybutu

Page 25: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Łączniki

• XLink — łączniki między dokumentami

– Łączniki — znaczniki

• dowolnie zdefiniowane przez użytkownika

• mające ustalone w specyfikacji atrybuty

z przestrzeni nazw XLink

– Lokalizatory xlink:href

• adresy URI

• mogą zawierać identyfikator fragmentu

(XPointer)

– Typy łączenia xlink:type

• proste (simple) — jak A z HTML

• złożone (extended),

np. z wieloma lokalizatorami

– Zachowania (behaviors)

• xlink:show (replace|embed|new)

• xlink:actuate (onLoad|onRequest)

• XPointer — adresowanie w

dokumencie

– Adresowanie oparte na kontekście

w drzewie elementów

– W dokumencie nie są konieczne

żadne specjalne oznaczenia

– Używa rozszerzonych wyrażeń XPath

do adresowania elementów

– Możliwe jest wskazanie punktu lub zakresu

Page 26: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Internacjonalizacja

• Przetwarzanie znaków narodowych– Przetwarzanie XML

• na wejściu i wyjściu wybrane strony kodowe

• wewnętrzne przetwarzanie w Unicode

• konwersje wejściu i wyjściu

– Określenie strony kodowej dokumentu

• domyślnie UTF-8

• każdą inną stronę kodową trzeba koniecznie podać w prologu dokumentu – atrybut encoding

– napotkanie znaku spoza zadeklarowanej strony kodowej powoduje błąd

• typowe strony kodowe dla języka polskiego:

– ISO-8859-2

– windows-1250

• Określenie języka

– Atrybut predefiniowany xml:lang

– określa język zawartości elementu

– Wartości: dwuliterowe skróty ISO-639

(np. pl, en)

– Może być użyty przy przetwarzaniu,

np.

• do prezentowania tylko informacji w

wybranym języku

• do sterowania przenoszeniem

wyrazów w czasie formatowania

Page 27: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Plan prezentacji

� Co to jest XML

� Dokument w XML

� DTD i encje

� Składniki XML: łączniki, przestrzenie nazw itd.

� Poprawność dokumentu XML

� Zalety i wady XML

� Ważniejsze zastosowania XML

� Rola i pozycja XML

Page 28: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Poprawność dokumentu w XML

• Dokument dobrze sformułowany (well-formed)

– Warunki

• niepusta zawartość

• wszystkie konstrukcje poprawne w sensie

well-formed (w/g specyfikacji języka)

• wszystkie konstrukcje rozpoczęte

muszą być jawnie zakończone

• każda konstrukcja zawarta w innej

musi być w niej zawarta w całości

• tylko jedna konstrukcja (element główny)

nie zawarta w żadnej innej

• brak odwołań do niezdefiniowanych encji

– Nie musi mieć DTD (dokument standalone)

– Mimo braku DTD może być wyświetlany

przez przeglądarki

– Przeznaczenie: tylko wyświetlanie

• Dokument prawidłowy (valid)

– Warunki

• jest well-formed

• powiązany z istniejącym DTD

lub schematem

• pełna zgodność zawartości z DTD

lub schematem

• wszystkie konstrukcje poprawne

w sensie valid (wg specyfikacji języka)

– Przeznaczenie: przetwarzanie

– Do przetwarzania na ogół potrzebny

jest dostęp do DTD lub schematu

Page 29: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

XML a HTML

• XML– Przeznaczenie

• metajęzyk

• służy do definiowania języków

– Realizacja• podzbiór SGML

• brak predefiniowanych znaczników

– Składnia• element niepusty musi być jawnie

zakończony

• element pusty musi być oznaczony />

• wrażliwy na wielkość liter w nazwach elementów i atrybutów

• wartości atrybutów muszą być ujęte w cudzysłów

• HTML– Przeznaczenie

• gotowy język

• służy do zapisu stron WWW

– Realizacja• konkretyzacja SGML

• zestaw predefiniowanych znaczników

– Składnia• niektóre elementy niepuste nie muszą być

zakończone jawnie

• elementy puste nie muszą być wyróżniane

• niewrażliwy na wielkość liter

• wartości atrybutów mogą, ale nie muszą być ujęte w cudzysłów

– Należy się spodziewać, iż rozwój HTML będzie postępował w kierunku zaostrzenia reguł składni, jak w XML

Page 30: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Plan prezentacji

� Co to jest XML

� Dokument w XML

� DTD i encje

� Składniki XML: łączniki, przestrzenie nazw itd.

� Poprawność dokumentu XML

� Zalety i wady XML

� Ważniejsze zastosowania XML

� Rola i pozycja XML

Page 31: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Zalety XML

– Sformalizowany zapis informacji

– Uniwersalność

– Duża siła wyrazu

– Elastyczność

– Możliwość zróżnicowanej prezentacji

– Łatwość przetwarzania

– Czytelność

– Dostosowanie do specyfiki przetwarzania w sieci Web

– Internacjonalizacja

– Niewygórowane koszty

– Względna prostota

Page 32: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Zalety XML

– Sformalizowany zapis informacji

– Uniwersalność

– Duża siła wyrazu

– Elastyczność

– Możliwość zróżnicowanej prezentacji

– Łatwość przetwarzania

– Czytelność

– Dostosowanie do specyfiki przetwarzania w sieci Web

– Internacjonalizacja

– Niewygórowane koszty

– Względna prostota

Reprezentacja informacji – choć tekstowa –umożliwia „bezstratne” odczytanie informacji, dokładną weryfikację poprawności i łatwe dalsze przetwarzanie.

Page 33: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Zalety XML

– Sformalizowany zapis informacji

– Uniwersalność

– Duża siła wyrazu

– Elastyczność

– Możliwość zróżnicowanej prezentacji

– Łatwość przetwarzania

– Czytelność

– Dostosowanie do specyfiki przetwarzania w sieci Web

– Internacjonalizacja

– Niewygórowane koszty

– Względna prostota

XML pozwala zapisać wszelkie informacje, które mogą być wyrażonetekstowo, w sposób całkowicie niezależny od platformy sprzętowej i programowej.

Page 34: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Zalety XML

– Sformalizowany zapis informacji

– Uniwersalność

– Duża siła wyrazu

– Elastyczność

– Możliwość zróżnicowanej prezentacji

– Łatwość przetwarzania

– Czytelność

– Dostosowanie do specyfiki przetwarzania w sieci Web

– Internacjonalizacja

– Niewygórowane koszty

– Względna prostota

Za pomocą XML można zapisać nawet bardzo złożone struktury informacji.

Page 35: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Zalety XML

– Sformalizowany zapis informacji

– Uniwersalność

– Duża siła wyrazu

– Elastyczność

– Możliwość zróżnicowanej prezentacji

– Łatwość przetwarzania

– Czytelność

– Dostosowanie do specyfiki przetwarzania w sieci Web

– Internacjonalizacja

– Niewygórowane koszty

– Względna prostota

Struktura informacji jest łatwa do rozszerzania i dostosowywania, z możliwością wykorzystania struktur wcześniej zdefiniowanych.

Page 36: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Zalety XML

– Sformalizowany zapis informacji

– Uniwersalność

– Duża siła wyrazu

– Elastyczność

– Możliwość zróżnicowanej prezentacji

– Łatwość przetwarzania

– Czytelność

– Dostosowanie do specyfiki przetwarzania w sieci Web

– Internacjonalizacja

– Niewygórowane koszty

– Względna prostota

Dzięki zastosowaniu arkuszy stylistycznych ten sam dokument może być różnorodnie prezentowany w zależności od potrzeb i możliwości.

Page 37: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Zalety XML

– Sformalizowany zapis informacji

– Uniwersalność

– Duża siła wyrazu

– Elastyczność

– Możliwość zróżnicowanej prezentacji

– Łatwość przetwarzania

– Czytelność

– Dostosowanie do specyfiki przetwarzania w sieci Web

– Internacjonalizacja

– Niewygórowane koszty

– Względna prostota

Osiągnięta dzięki prostej i regularnej składni oraz ustandaryzowanym narzędziom.

Page 38: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Zalety XML

– Sformalizowany zapis informacji

– Uniwersalność

– Duża siła wyrazu

– Elastyczność

– Możliwość zróżnicowanej prezentacji

– Łatwość przetwarzania

– Czytelność

– Dostosowanie do specyfiki przetwarzania w sieci Web

– Internacjonalizacja

– Niewygórowane koszty

– Względna prostota

Dokumenty XML są zrozumiałe dla człowieka, każdy dokument niesie bowiem metainformację w postaci znaczników – sam się opisuje. Ułatwia to posługiwanie się dokumentami, uruchamianie oprogramowania itd.

Page 39: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Zalety XML

– Sformalizowany zapis informacji

– Uniwersalność

– Duża siła wyrazu

– Elastyczność

– Możliwość zróżnicowanej prezentacji

– Łatwość przetwarzania

– Czytelność

– Dostosowanie do specyfiki przetwarzania w sieci Web

– Internacjonalizacja

– Niewygórowane koszty

– Względna prostota

Szczegółowe rozwiązania XML są dostosowane do przetwarzania w Sieci. Popularne narzędzia internetowe (przeglądarki, serwery aplikacyjne itd.) wyposażono w rozwiązania (parsery, procesory XSL itp.) ułatwiające użycie XML.

Page 40: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Zalety XML

– Sformalizowany zapis informacji

– Uniwersalność

– Duża siła wyrazu

– Elastyczność

– Możliwość zróżnicowanej prezentacji

– Łatwość przetwarzania

– Czytelność

– Dostosowanie do specyfiki przetwarzania w sieci Web

– Internacjonalizacja

– Niewygórowane koszty

– Względna prostota

W XML można używać wielu różnych stron kodowych, a przetwarzanie XML odbywa się wewnętrznie z użyciem Unicode.

Page 41: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Zalety XML

– Sformalizowany zapis informacji

– Uniwersalność

– Duża siła wyrazu

– Elastyczność

– Możliwość zróżnicowanej prezentacji

– Łatwość przetwarzania

– Czytelność

– Dostosowanie do specyfiki przetwarzania w sieci Web

– Internacjonalizacja

– Niewygórowane koszty

– Względna prostotaJest to standard otwarty, nie wymagający licencji.

Do przetwarzania i prezentacji dokumentów XML można użyć standardowego (często darmowego) oprogramowania. Można zatem tworzyć rozwiązania bazujące na XML nie ponosząc wielkich nakładów.

Page 42: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Zalety XML

– Sformalizowany zapis informacji

– Uniwersalność

– Duża siła wyrazu

– Elastyczność

– Możliwość zróżnicowanej prezentacji

– Łatwość przetwarzania

– Czytelność

– Dostosowanie do specyfiki przetwarzania w sieci Web

– Internacjonalizacja

– Niewygórowane koszty

– Względna prostotaIdea języków znakowania jest powszechnie znana, a nawet zaawansowane rozwiązania są stosunkowo łatwe do zrozumienia.

Page 43: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Główne wady XML

– Rozwlekłość zapisu

– Ograniczona wydajność przetwarzania

– Niedostatki implementacji standardów XML-owych

Page 44: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Główne wady XML

– Rozwlekłość zapisu

– Ograniczona wydajność przetwarzania

– Niedostatki implementacji standardów XML-owych

Decyduje o niej znaczny „narzut” na znaczniki niosące metainformację. Nie jest to na ogół wadą istotną, np. przy przesyłaniu informacji stosować można kompresję, która jest zwykle bardzo efektywna.

Page 45: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Główne wady XML

– Rozwlekłość zapisu

– Ograniczona wydajność przetwarzania

– Niedostatki implementacji standardów XML-owychWynika zarówno z rozwlekłości plików jak ze stosowania uniwersalnych narzędzi. Dla małych dokumentów ograniczenia wydajności zwykle nie stanowią problemu, dla dokumentów większych stosowanie parserów typu SAX daje na ogół wydajność dostatecznie dobrą.

Page 46: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy XML

• Główne wady XML

– Rozwlekłość zapisu

– Ograniczona wydajność przetwarzania

– Niedostatki implementacji standardów XML-owych

Zwłaszcza niepełna implementacja standardów w przeglądarkach WWW powoduje, że XML nie może wciąż jeszcze być stosowany jako podstawowy język wymiany informacji w sieci Web.

Page 47: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Plan prezentacji

� Co to jest XML

� Dokument w XML

� DTD i encje

� Składniki XML: łączniki, przestrzenie nazw itd.

� Poprawność dokumentu XML

� Zalety i wady XML

� Ważniejsze zastosowania XML

� Rola i pozycja XML

Page 48: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Ważniejsze zastosowania XML

• Tworzenie stron internetowych

– WWW, WAP, e-biznes B2C

– Decydujące zalety: uniwersalność,

zróżnicowana prezentacja, łatwość

przetwarzania, dostosowanie do specyfiki

WWW

– Kluczowe technologie: XSLT

– Przykłady: XHTML, WML

• Multimedia

– Grafika wektorowa, integracja multimediów

itp.

– Decydujące zalety: duża siła wyrazu,

dostosowanie do specyfiki WWW

– Przykłady: SVG, SMIL, Voice-ML

• Reprezentacja informacji

semistrukturalnej

– Informacje o strukturze zmiennej, słabo

ustalonej, częściowo nieistotnej itp.

• reprezentacja złożonych dokumentów

tekstowych

• zapis w bazach danych

– Decydujące zalety: sformalizowany zapis,

duża siła wyrazu, elastyczność

– Kluczowe technologie: DTD/XML-Schema,

XSLT, XSL-FO

Page 49: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Ważniejsze zastosowania XML

• Specjalistyczne struktury danych

– Informacje naukowe, ekonomiczne itp.;

• specjalistyczne dialekty

• komunikacja w sferze publicznej

• struktury ad-hoc

– Decydujące zalety: sformalizowany zapis,

uniwersalność, siła wyrazu, elastyczność,

łatwość przetwarzania

– Kluczowe technologie: DTD/XML-Schema,

XSLT

– Przykłady: MathML, CML

• Elektroniczna wymiana danych (EDI)

– Wymiana danych (zwykle przez Internet)

między systemami informacyjnymi

• e-biznes B2B

• integracja systemów heterogenicznych

– Decydujące zalety: sformalizowany zapis,

siła wyrazu, łatwość przetwarzania,

niewygórowane koszty

– Kluczowe technologie: XML-Schema,

DOM/SAX

– Przykład: XML/EDI, np. ebXML, MS BizTalk

Page 50: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Ważniejsze zastosowania XML

• Konfiguracja oprogramowania

– Pliki konfiguracyjne oprogramowania

– Decydujące zalety: sformalizowany zapis,

łatwość przetwarzania, czytelność, prostota

– Przykład: EJB, XSQL

• Opis zasobów

– Deskryptory zasobów sieciowych,

oprogramowania itp.

– Decydujące zalety: sformalizowany zapis,

elastyczność, łatwość przetwarzania

– Przykłady: RDF, WSDL

• Protokoły komunikacyjne

– Protokoły wymiany komunikatów, zdalnego

wywoływania procedur itp.

– Decydujące zalety: sformalizowany zapis,

łatwość przetwarzania

– Przykłady: SOAP, XML-RPC, Web-DAV

Cechy XML najczęściej istotne dla zastosowań:

• sformalizowany zapis,

• łatwość przetwarzania

Page 51: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Aplikacje XML

• Aplikacje XML = dialekty XML

– Powszechnego użycia, np. WML, SVG, XHTML

– Branżowe/specjalistyczne, np. MathML, CML

– Tworzone ad hoc

Page 52: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Przykłady zastosowań XML

• EDI (Electronic Data Interchange)

– XML wydaje się idealnym narzędziem dla

elektronicznej wymiany danych

• czytelny

• prosty

• łatwy w przetwarzaniu

• powszechnie używany

– Koncepcja XML/EDI:

• semantyka istniejących standardów EDI

• składnia XML

– Wiele propozycji standaryzacyjnych

• Handel elektroniczny (e-commerce)

– XML jest bardzo dobrym narzędziem do

wymiany danych w handlu elektronicznym

• proste i łatwe do wykorzystania

(darmowe oprogramowanie)

• wspierane przez wielkich producentów

systemów ERP

• odpowiednie do użycia także przez

małe firmy

– Zastosowania B2C i B2B

– XML szczególnie cenny w B2B:

• łatwe dalsze przetwarzanie informacji

Page 53: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

EDI – przykład

Przykład:

Projekt komunikatów XML do gromadzenia danych na temat ochrony zdrowia• dane o lekach refundowanych

• szpitalne statystyczne karty choroby

• RUM i jego rozszerzenia

<?xml version="1.0" encoding="windows-1250"?>

<!DOCTYPE mz:komunikat SYSTEM "LEK.dtd" >

<mz:komunikat xmlns:mz="http://www.mz.gov.pl/csioz/START/XML" typ="LEK" wersja="1.00" >

<mz:dokument id="xxxIDAXPRS" nr="xxxIDAIRRS" tryb="C" data="xxxIDAWURS" >

<mz:nadawca >

<mz:podmiot typ="0" symbol="xxxIDA2CVS" />

</mz:nadawca>

<mz:odbiorca >

<mz:podmiot typ="0" symbol="xxxIDA2CVS" />

</mz:odbiorca>

<mz:sprawozdanie symbol="xxxIDAV2RS" data="xxxIDA53RS" >

<mz:okres typ="xxxIDA0ASS" rok="xxxIDAICSS" nr="xxxIDASDSS"

data-od="xxxIDA2ESS" data-do="xxxIDAKGSS" />

<mz:komorka-org regon="xxxIDA1EVS" nr="000" />

</mz:sprawozdanie>

<mz:pozycja id="xxxIDAGNSS" tryb="D" >

<mz:swiadczenie typ="0" >

<mz:zlecenie data="xxxIDADYSS" >

.........

Page 54: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

XML w analizie systemów informacyjnych

• Motywacja– Dotyczy wczesnych etapów analizy

– Brak narzędzi, np. typu CASE

(jeszcze nie wybrane)

– Potrzebne modele

• na ogół bazują na opisie słownym

• ale powinny być możliwie sformalizowane

– Potrzebne różne formy prezentacji

wyników

• tabele

• zestawienia

• różne przekroje tych samych informacji

– Potrzebne eleganckie formatowanie

• raporty drukowane

• strony WWW

• Typowe modele

– Planowanie analizy

• analiza wymagań

• plan działań i podział zadań

• projekt raportu

– Słowniki pojęć, skrótów, instytucji i osób

– Wykazy spotkań i notatki z nich (minutes)

• Budowanie modeli

– Tworzenie specjalizowanych struktur w

XML

– Wielokrotne użycie

• struktur z poprzednich projektów

• struktur „uniwersalnych”

• typowych elementów raportów

Page 55: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

XML w analizie s.i. – przykłady

– Planowanie zadań analizy systemów

informacyjnych

– Analiza procesów biznesowych do celów

eksploracji danych (data mining)

• sformalizowany spis procesów

• spis i ocena zasobów danych

• zależności między danymi a procesami

• ocena „podatności” procesów na eksplorację

danych

• zautomatyzowane tworzenie rankingów

– Analizy wymagań funkcjonalnych i

techniczno-organizacyjnych dla

internetowych systemów informacyjnych

• sformalizowany wykaz wymagań

• warianty i klasyfikacje

• projekty

– systemu promocji eksportu

– sieci innowacyjnej w dziedzinie nowych

technologii

– portalu samorządu gospodarczego

Page 56: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Zautomatyzowane tworzenie dokumentacji- Zaprojektowanie struktur XML- Wypełnienie struktur treścią- Napisanie arkuszy XSL

- formatowanie- zestawienia, wyciągi, rankingi

- Przetwarzanie XSL:- XML → HTML – strony WWW- XML → HTML → RTF – raporty robocze- XML → TEX lub FO – profesjonalne publikacje

<postulat id="TZ.O.3"><nazwa>XML</nazwa><opis>Język XML pozwala prezentować w WWW informację z zachowaniem jej struktury.Informacja pobrana w tej formie jest wyświetlana w sposób podobny do "zwykłych"stron WWW, ale może być łatwo dalej przetwarzana przez komputery, np.umieszczana we własnych bazach danych odbiorcy.

</opis><wersja ref="rek">

W miarę możliwości informacja z repozytorium &czego; powinna być prezentowana wdwóch wersjach: w HTML oraz w XML.

</wersja><wersja ref="max">

Należy założyć, iż w przyszłości -- w miarę popularyzowania się XML -- doprezentowania danych strukturalnych powinien przede wszystkim stosowany językXML, a nie HTML.<P/> Należy także skłonić dostawców danych, by w przyszłości dostarczaliswoje dane w XML.

</wersja></postulat>

XML w analizie s.i. – przykłady, c.d.

Page 57: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Wymiana danych między bazami

Użycie XML do integracji baz• heterogenicznych

• rozproszonych

– Przykład 1: Dealer – dystrybutor

• systemy w tanich technologiach u dealerów

• duża baza zbiorcza u dystrybutora

– Przykład 2: Baza konstrukcji detektora ALICE

• A Large Ion Collider Experiment na LHC (Large Hadron Collider) w CERN

• konstrukcja wielkiego urządzenia pomiarowego

• rozproszona baza danych– w licznych laboratoriach

na całym świecie

– bazy satelickie na oprogramowaniu open source

– baza centralna na Oracle

Centralna

b.d.

Satelickie b.d.

Page 58: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Plan prezentacji

� Co to jest XML

� Dokument w XML

� DTD i encje

� Składniki XML: łączniki, przestrzenie nazw itd.

� Poprawność dokumentu XML

� Zalety i wady XML

� Ważniejsze zastosowania XML

� Rola i pozycja XML

Page 59: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

XML w systemach z bazami danych

• XML w wymianie danych– XML jest bardzo dobrym środkiem

wymiany danych między bazami danych• łatwy w przetwarzaniu

• zawiera metadane

• łatwo rzutować struktury relacyjne na XML

• łatwa kontrola poprawności

– Szczególnie cenny w systemach heterogenicznych

• łatwość transformacji danych

• XML jako format składowania danych– Właściwe rozwiązanie dla danych

semistrukturalnych• bez bardzo złożonych lub bardzo

generycznych struktur relacyjnych

– Odpowiednie np. dla • struktur często zmiennych

• dokumentów tekstowych z wyraźnie określoną strukturą

• Składowanie XML w relacyjnych b.d.– Pełna strukturalizacja do tabel relacyjnych

• sztywna

• łatwe w przeszukiwaniu i przetwarzaniu

– XML jako tekst (CLOB)• elastyczne

• trudne w przeszukiwaniu i przetwarzaniu

– Reprezentacja hybrydowa• kompromis łączący zalety i wady

poprzednich metod

– Specjalny typ dla XML• daje nadzieję na połączenie zalet

poprzednich metod

• Specjalne XML-owe bazy danych– Na razie raczej do zastosowań niszowych

Page 60: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Standaryzacja XML

• Organizacja standaryzacyjna– Standaryzacją XML zajmuje się World Wide Web Consortium (W3C)

– Wydawane są tzw. rekomendacje, stanowiące końcowy wynik procesu standaryzacji

• Stan prac standaryzacyjnych – ważniejsze rekomendacje– XML i DTD

• Extensible Markup Language (XML) 1.0, 1998-2000

– Przestrzenie nazw• Namespaces in XML, 1999

– XML Schema

• XML Schema Parts 0-2: Primer, Structures, Datatypes, 2001

– XSL i FO• XSL Transformations (XSLT) 1.0, 1999

• XML Path Language (XPath) 1.0, 1999

• Associating Style Sheets with XML Documents Version 1, 1999

• Extensible Stylesheet Language (XSL) Version 1.0, 2001

– Łączniki• XML Linking Language (XLink) Version 1.0, 2001

Page 61: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Pozycja i przyszłość XML

• Pozycja XML– Modna technologia

– Stanowi podstawę wielu innych, intensywnie rozwijanych technologii

– Prawdopodobnie będzie w przyszłości podstawowym formatem wymianyinformacji (także w aplikacjach powszechnego użytku)

– Prawdopodobnie wyprze HTML z wielu zastosowań Web-owych

– Pozycja XML wydaje się niezagrożona

• Przyszłość XML– Nowe standardy, np. XQuery

– Coraz lepsze wsparcie w systemach baz danych

– Nowe zastosowania: XHTML, systemy biurowe itd.

Page 62: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Drzewa DOM

Maciej Zakrzewicz

[email protected]

http://www.cs.put.poznan.pl/~mzakrz/

Page 63: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Document Object Model (DOM)

• Document Object Model jest standardem modelowania dokumentów XML przy użyciu struktury drzewa – znaczniki XML i ich zawartość są modelowane przez węzły drzewa; zagnieżdżanie znaczników służy za podstawę do konstruowania hierarchii

• Document Object Model jest wykorzystywany jako forma reprezentacji dokumentów XML w pamięci komputera

• Transformacja dokumentu XML do postaci Document Object Model jest realizowana automatycznie przez parser DOM

• Implementacja, adresowanie i przeszukiwanie drzew Document Object Model mogą być realizowane przy użyciu biblioteki DOM API

Page 64: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

<katalog>

<ksiazka isbn="83-7243-134-5">

<tytul>XML krok po kroku</tytul>

<cena>43</cena>

<autorzy>

<autor>Michael J. Young</autor>

<autor>Katarzyna Tryc</autor>

</autorzy>

<wydawnictwo>Read Me</wydawnictwo>

<rok>2000</rok>

</ksiazka>

...

</katalog>

Przykład struktury drzewa DOM

<katalog>

<ksiazka>

<tytul> <cena> <autorzy>

<autor> <autor>

<wydawnictwo> <rok>

XML krok po kroku

43

Michael J. Young

Katarzyna Tryc

Read Me 2000

isbn="83-7243-134-5"

korzeń

węzeł elementu

węzeł tekstowy

węzeł atrybutu

Page 65: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

W3C DOM API: obiekt Node

• Obiekt klasy/typu Node reprezentuje węzeł w drzewie DOM (węzeł elementu, węzeł tekstowy, itd.)

lewy węzeł sąsiednipreviousSibling

węzeł nadrzędnyparentNode

wartość węzłanodeValue

identyfikator typu węzłanodeType

nazwa węzłanodeName

prawy węzeł sąsiedninextSibling

ostatni węzeł potomnylastChild

pierwszy węzeł potomnyfirstChild

tablica węzłów potomnychchildNodes

tablica atrybutów węzłaattributes

zamienia istniejący węzeł potomny z podanym węzłem

replaceChild(n,n)

usuwa wskazany węzeł potomnyremoveChild(n)

dołącza nowy węzeł jako węzeł potomny przed wskazanym węzłem

insertBefore(n,n)

zwraca prawdę, jeżeli węzeł zawiera węzły potomne

hasChildNodes()

zwraca kopię węzła z/bez węzłami potomnymi

cloneNode(b)

dołącza nowy węzeł jako ostatni węzeł potomny

appendChild(n)

Atrybuty (W3C) Metody (W3C)

Page 66: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

W3C DOM API: obiekt NodeList

• Obiekt klasy/typu NodeList reprezentuje zbiór obiektów typu Node

liczba elementów w zbiorzelength zwraca element i-ty element zbioruitem(i)

Atrybuty (W3C) Metody (W3C)

Page 67: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

W3C DOM API: obiekt Document

• Obiekt klasy/typu Document modeluje całe drzewo DOM; wszystkie węzły drzewa są jego potomkami

DTD lub XML Schema dla dokumentu

doctype

element najwyższego poziomu w dokumencie

documentElement

zwraca zbiór węzłów o podanej nazwie

getElementsByTagName(s)

tworzy nowy węzeł tekstowycreateTextNode(s)

tworzy nowy elementcreateElement(s)

tworzy nowy węzeł komentarzacreateComment(s)

tworzy nowy węzeł atrybutucreateAttribute(s)

Atrybuty (W3C) Metody (W3C)

Page 68: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

W3C DOM API: obiekt Element

• Obiekt klasy/typu Element modeluje węzeł reprezentujący znacznik XML

nazwa węzłatagName

wstawia nowy węzeł atrybutusetAttributeNode(n)

ustawia nową wartość atrybutusetAttribute(s,s)

usuwa podany węzeł atrybuturemoveAttributeNode(n)

usuwa wartość podanego atrybuturemoveAttribute(s)

zwraca zbiór węzłów o podanej nazwiegetElementsByTagName(s)

zwraca węzeł podanego atrybutugetAttributeNode(s)

zwraca wartość podanego atrybutugetAttribute(s)

Atrybuty (W3C) Metody (W3C)

Page 69: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

W3C DOM API: obiekt Attr i Text

• Obiekt klasy/typu Attr reprezentuje atrybut znacznika XML w formie tzw. węzła atrybutu; obiekt Attr posiada ogólne atrybuty i metody klasy/typu Node plus poniższe:

wartość atrybutuvalue

prawda oznacza, że wartość atrybutu jest ustawiona w dokumencie

specified

nazwa atrybutuname

Atrybuty (W3C)

• Obiekt klasy/typu Text reprezentuje treść umieszczoną wewnątrz znacznika XML

Page 70: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Implementacja W3C DOM: Java i PL/SQL

• Wszystkie typy DOM zostały zaimplementowane w języku Java jako interfejsy w pakiecie org.w3c.dom (posiadają nazwy jak w specyfikacji W3C) i jako klasy rzeczywiste w pakiecie oracle.xml.parser.v2 (posiadają nazwy z prefiksem XML)

• Wszystkie typy DOM zostały zaimplementowane w języku PL/SQL jako obiekty pakietu XMLDOM (posiadają nazwy z prefiksem DOM) i DBMS_XMLDOM (od wersji 9.2 DBMS_XMLDOM zaczyna zastępować XMLDOM)

Page 71: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Java: funkcje konstrukcji drzew DOM

• createElement(String) [interfejs Document] – tworzy nowy węzeł, reprezentujący znacznik o podanej nazwie; węzeł ten nie wchodzi jeszcze w skład drzewa dokumentu

• createTextNode(String) [interfejs Document] – tworzy nowy węzeł tekstowy; węzeł ten nie wchodzi jeszcze w skład drzewa dokumentu

• appendChild(Node) [interfejs Node] – dodaje nowy węzeł jako ostatni węzeł potomny

• cloneNode(boolean) [interfejs Node] – wykonuje kopię wskazanego węzła wraz z lub bez jego węzłów potomnych

• removeChild(Node) [interfejs Node] – odpina wskazany węzeł potomny od jego węzła nadrzędnego

• replaceChild(Node, Node) [interfejs Node] – odpina istniejący węzeł potomny i na jego miejscu umieszcza nowy węzeł potomny

• setNodeValue(String) [interfejs Node] – nadaje węzłowi wartość tekstową

Page 72: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Konstrukcja drzewa DOM w języku JavaXMLDocument xmlDoc = new XMLDocument();

Node katalogNode = xmlDoc.createElement("katalog");

xmlDoc.appendChild(katalogNode);

Node ksiazkaNode = xmlDoc.createElement("ksiazka");

katalogNode.appendChild(ksiazkaNode);

Node tytulNode = xmlDoc.createElement("tytul");

ksiazkaNode.appendChild(tytulNode);

Node tytulText = xmlDoc.createTextNode("Zaawansowany XML");

tytulNode.appendChild(tytulText);

Node cenaText = xmlDoc.createTextNode("85");

tytulNode.appendChild(tytulText);

<katalog>

<ksiazka>

<tytul> <cena>

Zaawansowany XML

85

Page 73: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

PL/SQL: funkcje konstrukcji drzew DOM

• xmldom.createElement(DOMDocument, Varchar2) – tworzy nowy węzeł, reprezentujący znacznik o podanej nazwie; węzeł ten nie wchodzi jeszcze w skład drzewa dokumentu

• xmldom.createTextNode(DOMDocument, Varchar2) – tworzy nowy węzeł tekstowy; węzeł ten nie wchodzi jeszcze w skład drzewa dokumentu

• xmldom.appendChild(DOMDocument, DOMNode) – dodaje nowy węzeł jako ostatni węzeł potomny

• xmldom.cloneNode(DOMDocument, boolean) – wykonuje kopię wskazanego węzła wraz z lub bez jego węzłów potomnych

• xmldom.removeChild(DOMDocument, DOMNode) – odpina wskazany węzeł potomny od jego węzła nadrzędnego

• xmldom.replaceChild(DOMDocument, DOMNode, DOMNode) – odpina istniejący węzeł potomny i na jego miejscu umieszcza nowy węzeł potomny

• xmldom.setNodeValue(DOMDocument, Varchar2) – nadaje węzłowi wartość tekstową

• xmldom.makeNode(DOMElement) – konwertuje typ DOMElement do DOMNode

Page 74: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Konstrukcja drzewa DOM w języku PL/SQLdeclare

xmlDoc xmldom.DOMDocument; tmpNode xmldom.DOMNode;

katalogElement xmldom.DOMElement; ksiazkaElement xmldom.DOMElement;

tytulElement xmldom.DOMElement; cenaElement xmldom.DOMElement;

cenaText xmldom.DOMText; tytulText xmldom.DOMText;

tytulNode xmldom.DOMNode; cenaNode xmldom.DOMNode;

begin

xmlDoc := xmldom.newDOMDocument;

katalogElement := xmldom.createElement(xmlDoc, 'katalog');

tmpNode := xmldom.appendChild(xmldom.makeNode(xmlDoc), xmldom.makeNode(katalogElement));

ksiazkaElement := xmldom.createElement(xmlDoc, 'ksiazka');

tmpnode := xmldom.appendChild(tmpNode, xmldom.makeNode(ksiazkaElement));

tytulElement := xmldom.createElement(xmlDoc, 'tytul');

tytulNode := xmldom.appendChild(tmpNode, xmldom.makeNode(tytulElement));

cenaElement := xmldom.createElement(xmlDoc, 'cena');

cenaNode := xmldom.appendChild(tmpNode, xmldom.makeNode(cenaElement));

tytulText := xmldom.createTextNode(xmlDoc, 'Zaawansowany XML');

tmpnode := xmldom.appendChild(tytulNode, xmldom.makeNode(tytulText));

cenaText := xmldom.createTextNode(xmlDoc, '85');

tmpnode := xmldom.appendChild(cenaNode, xmldom.makeNode(cenaText));

end;

<katalog>

<ksiazka>

<tytul> <cena>

Zaawansowany XML

85

Page 75: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Java: funkcje nawigacyjne DOM API

• getDocumentElement() [interfejs Document] – zwraca obiekt węzła reprezentującego znacznik najwyższego poziomu

• getElementsByTagName(String) [interfejs Document] – zwraca tablicę obiektów węzłów reprezentujących podany znacznik XML

• getChildNodes() [interfejs Node] – zwraca tablicę obiektów węzłów potomnych (bez węzłow atrybutowych)

• getAttributes() [interfejs Node] – zwraca tablicę obiektów potomnych węzłów atrybutowych

• getNodeName() [interfejs Node] – zwraca nazwę znacznika dla węzła• getNodeType() [interfejs Node] – zwraca numeryczny identyfikator typu węzła• getNodeValue() [interfejs Node] – zwraca treść węzła (tylko dla węzłów tekstowych)• getFirstChild() [interfejs Node] - zwraca obiekt pierwszego węzła potomnego

(z pominięciem węzłów atrybutowych)• getLastChild() [interfejs Node] - zwraca obiekt ostatniego węzła potomnego

(z pominięciem węzłów atrybutowych)• getNextSibling() [interfejs Node] – zwraca obiekt prawego sąsiada węzła (z pominięciem

węzłów atrybutowych)• getPreviousSibling() [interfejs Node] – zwraca obiekt lewego sąsiada węzła

(z pominięciem węzłów atrybutowych)• getParentNode() [interfejs Node] – zwraca obiekt węzła nadrzędnego

Page 76: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

PL/SQL: funkcje nawigacyjne DOM API

• xmldom.getDocumentElement(DOMDocument) – zwraca obiekt węzła reprezentującego znacznik najwyższego poziomu

• xmldom.getElementsByTagName(DOMDocument) – zwraca tablicę obiektów węzłów reprezentujących podany znacznik XML

• xmldom.getChildNodes(DOMNode) – zwraca tablicę obiektów węzłów potomnych (bez węzłow atrybutowych)

• xmldom.getAttributes(DOMNode) – zwraca tablicę obiektów potomnych węzłów atrybutowych

• xmldom.getNodeName(DOMNode) – zwraca nazwę znacznika dla węzła• xmldom.getNodeType(DOMNode) – zwraca numeryczny identyfikator typu węzła• xmldom.getNodeValue(DOMNode) – zwraca treść węzła (tylko dla węzłów tekstowych)• xmldom.getFirstChild(DOMNode) - zwraca obiekt pierwszego węzła potomnego

(z pominięciem węzłów atrybutowych)• xmldom.getLastChild(DOMNode) - zwraca obiekt ostatniego węzła potomnego

(z pominięciem węzłów atrybutowych)• xmldom.getNextSibling(DOMNode) – zwraca obiekt prawego sąsiada węzła (z

pominięciem węzłów atrybutowych)• xmldom.getPreviousSibling(DOMNode) – zwraca obiekt lewego sąsiada węzła

(z pominięciem węzłów atrybutowych)• xmldom.getParentNode(DOMNode) – zwraca obiekt węzła nadrzędnego

Page 77: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

DOM API: funkcje nawigacyjne

#document D

katalog E

książka E

isbn A

14-2887-...

tytul E

#text T

C++ XML

autorzy E

autor E

#text T

Fabio Arc...

rokwydania E

#text T

2002

wydawnictwo E

#text T

Mikom

cena E

#text T

36

...

getDocumentElement()

getChildNodes()

getChildNodes()getAttributes()

getChildNodes()

D – DOCUMENT_NODE (9)E – ELEMENT_NODE (1)A – ATTRIBUTE_NODE (2)T – TEXT_NODE (3)

getNodeValue()

getNodeName()

Page 78: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Java: prosta nawigacja w drzewie DOM

e=d.getDocumentElement()

c=e.getChildNodes()

f=c.item(i)

f.getNodeName(),

f.getNodeValue(),

f.getNodeType()

Odczytaj węzeł reprezentujący znacznik najwyższego poziomu (np. <katalog>)

Pobierz listę elementów potomnych

XMLDocument d

W pętli odczytuj kolejne węzły z listy (np. <ksiazka>)

g=f.getChildNodes() Pobierz listę elementów potomnych

h=g.item(j) Odczytaj kolejny węzeł z listy (np. <tytul>,<autorzy>,<cena>,<rok>, <wydawnictwo>)

Przetwarzaj węzeł

...

Page 79: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Java: nawigacja w drzewie DOM getChildNodes()

XMLDocument xmlDoc;

...

Node docNode = null, bookNode = null, elementNode = null;

NodeList docNodeList = null, bookNodeList = null;

try {

docNode = xmlDoc.getDocumentElement();

docNodeList = docNode.getChildNodes();

for (int i=0; i<docNodeList.getLength(); i++) {

bookNode = docNodeList.item(i);

bookNodeList = bookNode.getChildNodes();

for (int j=0; j<bookNodeList.getLength(); j++) {

elementNode = bookNodeList.item(j);

if (elementNode.getNodeName().equals("tytul"))

System.out.println(elementNode.getFirstChild().getNodeValue());

}}} catch (Exception e) {System.out.println(e);}

Access 2002. Projektowanie baz danych. Księga eksperta

Access 2002/XP PL dla każdego

ASP.NET. Vademecum profesjonalisty

C++ XML

Dane w sieci WWW

Delphi 6. Praktyka programowania -

tom 1,2

Delphi. Almanach

...

Wyświetl tytuły wszystkich książek opisanych w dokumencie XML

Page 80: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Java: nawigacja w drzewie DOM getAttributes()

XMLDocument xmlDoc;

...

Node docNode = null, bookNode = null, urlNode = null;

NodeList docNodeList = null, bookNodeList = null;

try {

docNode = xmlDoc.getDocumentElement();

docNodeList = docNode.getChildNodes();

for (int i=0; i<docNodeList.getLength(); i++) {

bookNode = docNodeList.item(i);

urlNode = bookNode.getAttributes().item(0);

System.out.println(urlNode.getNodeValue());

}

} catch (Exception e) {System.out.println(e);}

83-7197-669-0

83-7197-786-7

83-7197-691-7

83-7279-215-1

83-7279-149-X

83-7279-214-3

83-7197-469-8

83-7197-377-2

...

Wyświetl wartość pierwszego atrybutu każdego znacznika <ksiazka> w dokumencie XML

Page 81: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Java: nawigacja w drzewie DOM getElementsByTagName()

XMLDocument xmlDoc;

...

Node titleNode = null;

NodeList titleNodeList = null;

try {

titleNodeList = xmlDoc.getElementsByTagName("tytul");

for (int i=0; i<titleNodeList.getLength(); i++) {

titleNode = titleNodeList.item(i);

System.out.println(titleNode.getFirstChild().getNodeValue());

}

} catch (Exception e) {System.out.println(e);}

Access 2002. Projektowanie baz danych. Księga eksperta

Access 2002/XP PL dla każdego

ASP.NET. Vademecum profesjonalisty

C++ XML

Dane w sieci WWW

Delphi 6. Praktyka programowania -tom 1,2

Delphi. Almanach

...

Wyświetl tytuły wszystkich książek opisanych w dokumencie XML

Page 82: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

PL/SQL: prosta nawigacja w drzewie DOM

e=getDocumentElement(d)

c=getChildNodes(makeNode(e))

f=item(c,i)

getNodeName(f),

getNodeValue(f),

getNodeType(f)

Odczytaj węzeł reprezentujący znacznik najwyższego poziomu (np. <katalog>)

Pobierz listę elementów potomnych

DOMDocument d

W pętli odczytuj kolejne węzły z listy (np. <ksiazka>)

g=getChildNodes(f) Pobierz listę elementów potomnych

h=item(g,j) Odczytaj kolejny węzeł z listy (np. <tytul>,<autorzy>,<cena>,<rok>, <wydawnictwo>)

Przetwarzaj węzeł

...

Page 83: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

PL/SQL: nawigacja w drzewie DOM getChildNodes()

declare

xmlDoc xmldom.DOMDocument; xmlElem xmldom.DOMElement; bookNode xmldom.DOMNode;

bookNodeList xmldom.DOMNodeList; innerNode xmldom.DOMNode; innerNodeList xmldom.DOMNodeList;

begin

...

xmlElem := xmldom.getDocumentElement(xmlDoc);

bookNodeList := xmldom.getChildNodes(xmldom.makeNode(xmlElem));

for i in 0..xmldom.getLength(bookNodeList) - 1 loop

bookNode := xmldom.item(bookNodeList, i);

innerNodeList := xmldom.getChildNodes(bookNode);

for j in 0..xmldom.getLength(innerNodeList) - 1 loop

innerNode := xmldom.item(innerNodeList, j);

if (xmldom.getNodeName(innerNode) = 'tytul') then

dbms_output.put_line(xmldom.getNodeValue(xmldom.getFirstChild(innerNode)));

end if;

end loop;

end loop;

xmldom.freeDocument(xmlDoc);

...

end;

Access 2002. Projektowanie baz danych. Księga eksperta

Access 2002/XP PL dla każdego

ASP.NET. Vademecum profesjonalisty

C++ XML

Dane w sieci WWW

Delphi 6. Praktyka programowania - tom 1,2

Delphi. Almanach

...

Wyświetl tytuły wszystkich książek opisanych w dokumencie XML

Page 84: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

PL/SQL: nawigacja w drzewie DOM getAttributes()

declare

xmlDoc xmldom.DOMDocument; xmlElem xmldom.DOMElement;

bookNode xmldom.DOMNode; bookNodeList xmldom.DOMNodeList;

attrNode xmldom.DOMNode;

begin

...

xmlElem := xmldom.getDocumentElement(xmlDoc);

bookNodeList := xmldom.getChildNodes(xmldom.makeNode(xmlElem));

for i in 0..xmldom.getLength(bookNodeList) - 1 loop

bookNode := xmldom.item(bookNodeList, i);

attrNode := xmldom.item(xmldom.getAttributes(bookNode),0);

dbms_output.put_line(xmldom.getNodeValue(attrNode));

end loop;

xmldom.freeDocument(xmlDoc);

...

end;

83-7197-669-0

83-7197-786-7

83-7197-691-7

83-7279-215-1

83-7279-149-X

83-7279-214-3

83-7197-469-8

83-7197-377-2

...

Wyświetl wartość pierwszego atrybutu każdego znacznika <ksiazka> w dokumencie XML

Page 85: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

PL/SQL: nawigacja w drzewie DOM getElementsByTagName()

declare

xmlDoc xmldom.DOMDocument;

titleNode xmldom.DOMNode;

titleNodeList xmldom.DOMNodeList;

begin

...

titleNodeList := xmldom.getElementsByTagName(xmlDoc,'tytul');

for i in 0..xmldom.getLength(titleNodeList) - 1 loop

titleNode := xmldom.item(titleNodeList, i);

dbms_output.put_line(xmldom.getNodeValue(xmldom.getFirstChild(titleNode)));

end loop;

xmldom.freeDocument(xmlDoc);

...

end;

Access 2002. Projektowanie baz danych. Księga eksperta

Access 2002/XP PL dla każdego

ASP.NET. Vademecum profesjonalisty

C++ XML

Dane w sieci WWW

Delphi 6. Praktyka programowania -tom 1,2

Delphi. Almanach

...

Wyświetl tytuły wszystkich książek opisanych w dokumencie XML

Page 86: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Java: konwersja drzewa DOM do pliku XML

...

try {

xmlDoc.print(new FileOutputStream("C:\\katalog.xml"));

} catch (Exception e) {System.out.println(e);}

...<?xml version = '1.0' encoding = 'WINDOWS-1250'?><katalog>

<ksiazka url="http://dot.com/19821.html"><tytul>C++ XML</tytul><autorzy>

<autor>Fabio Arciniegas</autor></autorzy><rokwydania>2002</rokwydania><wydawnictwo>Mikom</wydawnictwo><cena>36</cena>

</ksiazka><ksiazka url="http://dot.com/19854.html">

...

Page 87: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

PL/SQL: konwersja drzewa DOM do pliku XML

...

xmldom.writeToFile(xmlDoc,/mydir/a.xml');

...<?xml version = '1.0' encoding = 'WINDOWS-1250'?><katalog>

<ksiazka url="http://dot.com/19821.html"><tytul>C++ XML</tytul><autorzy>

<autor>Fabio Arciniegas</autor></autorzy><rokwydania>2002</rokwydania><wydawnictwo>Mikom</wydawnictwo><cena>36</cena>

</ksiazka><ksiazka url="http://dot.com/19854.html">

...

Page 88: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Język XPath

Maciej Zakrzewicz

[email protected]

http://www.cs.put.poznan.pl/~mzakrz/

Page 89: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Język XPath

• XPath to specyfikacja języka służącego do adresowania, odczytywania i przeszukiwania drzew DOM dokumentów XML

• XPath odgrywa podobną rolę w stosunku do drzew DOM, jak język SQL w stosunku do relacyjnych baz danych

• XPath stosuje notację przypominającą ścieżki dostępu w systemach plików

• Wynikiem ewaluacji wyrażenia XPath jest zbiór węzłów spełniających warunki selekcji

• XPath pozwala stosować dwa rodzaje zapisu wyrażeń: skrócony i pełny; rodzaje te mogą być mieszane

Page 90: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Przetwarzanie wyrażeń XPath

Wyrażenie XPath

Page 91: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Skrócone wyrażenia XPath (1/3)

• Wybór węzłów w drzewie DOM:– wybierz autorów wszystkich książek

/katalog/ksiazka/autorzy

– wybierz wszystkie wydawnictwa dowolnie zagłębione w drzewie //wydawnictwo

– wybierz wszystkie węzły potomne (dzieci) każdego węzła książka

//ksiazka/*

• Wybór n-tego węzła danego rodzaju:– wybierz pierwszego autora każdej książki

//autorzy/autor[1]

– wybierz drugiego autora pierwszej książki

//ksiazka[1]//autor[2]

– wybierz ostatnią książke

//ksiazka[last()]

Page 92: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Skrócone wyrażenia XPath (2/3)

• Wybór węzłów, które posiadają podany węzeł potomny:– wybierz książki, które posiadają autorów

//ksiazka[autorzy]

– wybierz książki, które napisał Serge Abiteboul

//ksiazka[autorzy/autor="Serge Abiteboul"]

• Alternatywa ścieżek:– wybierz tytuły książek i wydawnictwa

//tytul | //wydawnictwo

– wybierz tytuły książek napisanych przez Serge'a Abiteboula lub Kurta Walla

//tytul[..//autor="Serge Abiteboul"] | //tytul[..//autor="Kurt Wall"]

Page 93: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Skrócone wyrażenia XPath (3/3)

• Wybór węzłów zawierających atrybuty:– wybierz książkę o numerze ISBN "83-7279-149-X"

//ksiazka[@isbn="83-7279-149-X"]

– wybierz wszystkie numery ISBN

//@isbn

– wybierz książki, które posiadają numer ISBN

//ksiazka[@isbn]

• Odczyt treści węzła:– odczytaj treści wszystkich tytułów książek

//ksiazka/tytul/text()

Page 94: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Pełne wyrażenia XPath

• Wyrażenie ścieżkowe XPath składa się z tzw. kroków rozdzielonych ukośnikami

• W pełnym zapisie, każdy z kroków może składać się z:– specyfikatora współrzędnych (axis), służącego do określenia

miejsca w drzewie, począwszy od którego wyszukiwane będą węzły

– testu węzła (node test), służącego do określenia, które węzły są wyszukiwane w obszarze drzewa określonym przez specyfikator współrzędnych

– predykatów, dodatkowo zawężających test węzła, powodujących wybór tylko tych węzłów, które spełniają podany warunek

• Każdy krok pełnego wyrażenia XPath zapisywany jest przy użyciu następującej notacji:

spec_współrzędnych::test_węzła[predykaty]

Page 95: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Specyfikatory współrzędnych

obejmuje bieżący węzełself

obejmuje wszystkie węzły sąsiednie, które w dokumencie następująprzed węzłem bieżącym

preceding-sibling

obejmuje wszystkie węzły, które w dokumencie następują przed węzłem bieżącym

preceding

obejmuje węzeł bezpośrednio nadrzędny bieżącego węzła (ojciec)parent

obejmuje wszystkie węzły sąsiednie, które w dokumencie następują za węzłem bieżącym

following-sibling

obejmuje wszystkie węzły, które w dokumencie następują za węzłembieżącym

following

obejmuje bieżący węzeł plus wszystkie węzły podrzędnedescendant-or-self

obejmuje wszystkie węzły podrzędne (syn, wnuk, itd.) bieżącego węzładescendant

obejmuje wszystkie węzły bezpośrednio podrzędne bieżącego węzła (dzieci)

child

obejmuje wszystkie atrybuty bieżącego węzłaattribute

obejmuje bieżący węzeł plus wszystkie węzły nadrzędneancestor-or-self

obejmuje wszystkie węzły nadrzędne (ojciec, dziadek, itd.) bieżącego węzła

ancestor

Page 96: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Testy węzłów, operatory i funkcje

węzeł o podanej nazwienazwa

dowolny atrybut@*

dowolny element*

węzeł tekstowytext()

dowolny węzełnode()

zwraca fałsz logicznyfalse()

zwraca prawdę logicznątrue()

negacja logicznanot()

liczba porządkowa węzła wybieranego przez wyrażenieposition()

nazwa węzła wybieranego przez wyrażeniename()

liczba porządkowa ostatniego węzła wybieranego przez wyrażenielast()

liczba węzłów wybieranych przez wyrażeniecount()

operatory arytmetyczne+, -, *, div, mod

operatory logiczneor, and

porównania=, !=, <, >, <=, >=

Page 97: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Funkcje - ciąg dalszy

dokonuje zamiany wszystkich wystąpień podanego podciągutranslate()

zwraca ciąg znaków znajdujący się przed wycinanym podciągiemsubstring-before()

zwraca ciąg znaków znajdujący się za wycinanym podciągiemsubstring-after()

ekstrakcja podciągu znakówsubstring()

długość tekstustring-length()

konwersja do tekstustring()

sprawdzenie, czy tekst rozpoczyna się od podanego ciągustarts-with()

test zawierania tekstówcontains()

konkatenacja tekstówconcat()

Funkcje operujące na tekstach

suma zbioru wartości liczbowychsum()

zaokrąglenieround()

konwersja do liczbynumber()

dolne domknięcie całkowitefloor()

górne domknięcie całkowiteceiling()

Funkcje operujące na liczbach

Page 98: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Przykłady wyrażeń XPath (1/2)

• Wybierz książki, których cena nie przekracza 20 zł

//ksiazka[cena<=20]

• Wybierz tytuły książek o cenach w przedziale 30-40 zł

//ksiazka/tytul[../cena>30 and ../cena<40]

• Wybierz książki napisane przez więcej niż dwóch autorów

//ksiazka[count(autorzy/autor)>2]

• Wybierz co drugą książkę

//ksiazka[position() mod 2 = 1]

• Wybierz książki zawierające w tytule słowo XML

//ksiazka[contains(tytul,"XML")]

• Wybierz autorów o imieniu "Stephen"

//autor[starts-with(.,"Stephen")]

• Wybierz tytuły złożone z ponad 20 znaków

//tytul[string-length(.)>20]

Page 99: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Przykłady wyrażeń XPath (2/2)

• Wybierz książki, których numer ISBN spełnia wzorzec ***7197******

//ksiazka[substring(@isbn,4,4) = "7197"]

• Wybierz wszystkie węzły autorzy oraz wszystkie ich węzły potomne

//autorzy/descendant-or-self::*

• Wybierz wszystkie książki, które w dokumencie znajdują się za książką o numerze ISBN "83-7197-786-7"

//ksiazka[@isbn="83-7197-786-7"]/following::ksiazka

• Wybierz wszystkie atrybuty pierwszej książki

//ksiazka[1]/attribute::*

• Wybierz cenę książki pt. "XML dla każdego"

//ksiazka[tytul="XML dla każdego"]/child::cena

Page 100: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Transformacja wyrażeń skróconych do pełnych

//tytul =>

/descendant-or-self::node()

/descendant-or-self::node()

//

//autor/.. =>

//autor/parent::node()

parent::node()..

//tytul[string-length(.)>10] => //tytul[string-length(self::node())>10]

self::node().

//katalog/ksiazka[@isbn= "83-7197-786-7"] => //katalog/child::ksiazka[attribute::isbn= "83-7197-786-7"]

attribute::@

//ksiazka/cena => //ksiazka/child::cena

child::brak

przykładpełneskrócone

Page 101: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Funkcje XPath w DOM API

• selectNodes(String) [interfejs Node] – zwraca tablicę obiektów węzłów spełniających podaną ścieżkę XPath

• selectSingleNode(String) [interfejs Node] – zwraca pierwszy znaleziony obiekt węzła spełniającego podaną ścieżkę XPath

• valueOf(String) [interfejs Node] – zwraca treść pierwszego znalezionego obiektu węzła spełniającego podaną ścieżkę XPath

Java

• xslprocessor.selectNodes(DOMNode, Varchar2) – zwraca tablicę obiektów węzłów spełniających podaną ścieżkę XPath

• xslprocessor.selectSingleNode(DOMNode, Varchar2) – zwraca pierwszy znaleziony obiekt węzła spełniającego podaną ścieżkę XPath

• xslprocessor.valueOf(DOMNode, Varchar2) – zwraca treść pierwszego znalezionego obiektu węzła spełniającego podaną ścieżkę XPath

PL/SQL

Page 102: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Java: zapytania XPath

XMLDocument xmlDoc;

...

Node titleNode = null;

NodeList queryNodeList = null;

try {

queryNodeList = xmlDoc.selectNodes("//ksiazka[rokwydania='2002']/tytul");

for (int i=0; i<queryNodeList.getLength(); i++) {

titleNode = queryNodeList.item(i);

System.out.println(titleNode.getFirstChild().getNodeValue());

}

} catch (Exception e) {System.out.println(e);}

C++ XML

Flash i XML. Techniki zaawansowane

HTML and XML dla początkujących

Programowanie Microsoft SQL Server 2000 z XML

Vademecum XML

XML Kompendium programisty

Wyświetl tytuły wszystkich książek wydanych w roku 2002

Page 103: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Java: zapytania XPath

XMLDocument xmlDoc;

...

Node titleNode = null;

NodeList queryNodeList = null;

try {

queryNodeList =

xmlDoc.selectNodes("//tytul[../autorzy[contains(autor,'Fabio')]]");

for (int i=0; i<queryNodeList.getLength(); i++) {

titleNode = queryNodeList.item(i);

System.out.println(titleNode.getFirstChild().getNodeValue());

}

} catch (Exception e) {System.out.println(e);}

C++ XML

XML Kompendium programisty

Wyświetl tytuły wszystkich książek, których jeden z autorów ma imię "Fabio"

Page 104: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Java: zapytania XPath

try {

System.out.println(xmlDoc.valueOf("//ksiazka[tytul='Java i XML']//autor"));

} catch (Exception e) {System.out.println(e);}

Brett McLaughlin

Wyświetl nazwisko pierwszego autora książki pt. "Java i XML"

Page 105: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

PL/SQL: zapytania XPath

declare

xmlDoc xmldom.DOMDocument;

titleNode xmldom.DOMNode;

queryNodeList xmldom.DOMNodeList;

begin

...

queryNodeList := xslprocessor.selectNodes(xmldom.makeNode(xmlDoc),

'//ksiazka[rokwydania=''2002'']/tytul');

for i in 0..xmldom.getLength(queryNodeList) - 1 loop

titleNode := xmldom.item(queryNodeList, i);

dbms_output.put_line(xmldom.getNodeValue(xmldom.getFirstChild(titleNode)));

end loop;

xmldom.freeDocument(xmlDoc);

...

end;

Wyświetl tytuły wszystkich książek wydanych w roku 2002

C++ XML

Flash i XML. Techniki zaawansowane

HTML and XML dla początkujących

Programowanie Microsoft SQL Server 2000 z XML

Vademecum XML

XML Kompendium programisty

Page 106: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

PL/SQL: zapytania XPath

declare

xmlDoc xmldom.DOMDocument;

titleNode xmldom.DOMNode;

queryNodeList xmldom.DOMNodeList;

begin

...

queryNodeList := xslprocessor.selectNodes(xmldom.makeNode(xmlDoc),

'//tytul[../autorzy[contains(autor,''Fabio'')]]');

for i in 0..xmldom.getLength(queryNodeList) - 1 loop

titleNode := xmldom.item(queryNodeList, i);

dbms_output.put_line(xmldom.getNodeValue(xmldom.getFirstChild(titleNode)));

end loop;

xmldom.freeDocument(xmlDoc);

...

end;

Wyświetl tytuły wszystkich książek, których jeden z autorów ma imię "Fabio"

C++ XML

XML Kompendium programisty

Page 107: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

PL/SQL: zapytania XPath

declare

xmlDoc xmldom.DOMDocument;

begin

...

dbms_output.put_line( xslprocessor.valueOf(xmldom.makeNode(xmlDoc),

'//ksiazka[tytul=''Java i XML'']//autor'));

...

end;

Brett McLaughlin

Wyświetl nazwisko pierwszego autora książki pt. "Java i XML"

Page 108: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Schematy XML

Tomasz Traczyk

[email protected]://www.ia.pw.edu.pl/~ttraczyk/

Page 109: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

� Dlaczego schematy?

� Przykład schematu

� XML Schema – nieco szczegółów

� Rola schematów XML

Plan prezentacji

Page 110: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Problemy z DTD

• Zalety DTD– Prostota

– Zgodność z SGML

• DTD a przetwarzanie danych– Do wyświetlania zwykle wystarczy

poprawność well formed

– Do przetwarzania postuluje się poprawność valid

– DTD wystarcza do definiowania dokumentów „tekstowych”

– DTD nie wystarcza do definiowania złożonych struktur danych, np. w

• EDI

• handlu elektronicznym B2B i B2C

– DTD nie daje możliwości sprawdzania poprawności typów danych za pomocą standardowych narzędzi

• Niedostatki DTD– Brak definicji typów danych dla zawartości

elementów i dla atrybutów• możliwe ograniczenia to tylko:

– wyliczanie dopuszczalnych wartości atrybutu

– zasady tworzenia nazw i identyfikatorów

• zawartość elementu: zawsze tekst

– Ograniczone możliwości sformalizowanej rozbudowy

• encje parametryczne

– Brak możliwości efektywnego wyrażenia identyczności kilku części dokumentu

• encje w DTD rozwijane przed analizą dokumentu

– Brak dobrego wykorzystania przestrzeni nazw

• przedrostki wpisane „na sztywno” do DTD

– Język zapisu DTD• zupełnie różny od XML

• nie daje możliwości przetwarzania narzędziami XML-owymi

Page 111: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Idea schematów

• Co to jest schemat?

– Definicja składni dokumentu XML

– Stosowana zamiast (lub obok) DTD

– Zapisana w XML, z użyciem przestrzeni nazw

• XML Schema

– Definicja składni dokumentu

• nie mająca w/w wad

• spełniająca dodatkowe n/w postulaty

– Standard W3C (rekomendacja)

– Sposób definiowania dokumentów, który prawdopodobnie zastąpi DTD

Page 112: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Cechy schematów

• Postulowane cechy schematu

– Precyzyjne deklarowanie typów danych

• z wykorzystaniem rozbudowanego słownika

typów elementarnych

• z możliwością definiowania własnych typów

– Mechanizmy jednokrotnego definiowania

powtarzających się fragmentów modelu

(np. typów, grup elementów i atrybutów) i

wielokrotnego odwoływania się do takich

definicji

– Możliwość definiowania zbiorów

elementów, w których liczba wystąpień

każdego elementu jest kontrolowana, ale

kolejność jest dowolna

– Możliwość deklarowania niepowtarzalności

wybranych wartości w określonej części

dokumentu, np. definiowanie kluczy i

odwołań do nich

– Możliwość deklarowania wielu elementów o

takiej samej nazwie, ale innym położeniu w

dokumencie i innej budowie

– Mechanizmy pozwalające na kontrolowane

rozszerzanie i uszczegóławianie modeli

dokumentów; korzystanie z wielu

schematów w jednym dokumencie

– Uwzględnienie przestrzenie nazw;

komponowanie nowych modeli z kilku

przestrzeni nazw

Page 113: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Wady schematów

• Stałe

– Większa długość od

odpowiadającego DTD

– Znacznie bardziej skomplikowana

składnia

– Brak możliwości definiowania encji

• Przejściowe

– Niewielka popularność

– Niewielu ekspertów umiejących

wykorzystywać schematy

– Narzędzia nie zawierające wsparcia

dla schematów

Page 114: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Plan prezentacji

� Dlaczego schematy?

� Przykład schematu

� XML Schema – nieco szczegółów

� Rola schematów XML

Page 115: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

<?xml version="1.0" encoding="ISO-8859-2"?><?xml-stylesheet type="text/xsl" href="konspekty.xsl"?><eres_konspekty

xmlns="http://www.elka.pw.edu.pl/eres"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.elka.pw.edu.pl/eres konspekty.xsd">

<przedmiot id="KBD2" wersja="1"><slowo_kluczowe>bazy danych</slowo_kluczowe><slowo_kluczowe>Oracle</slowo_kluczowe><konspekt><czesc_konspektu id="Streszczenie"><P>Monograficzny przedmiot poświęcony bazie danych i narzędziom Oracle.</P>

</czesc_konspektu><czesc_konspektu id="Treść"><P>Omawiane są podstawowe zagadnienia związane z wykorzystaniem RDBMSOracle8 i Oracle8<I>i</I>, w tym możliwości wykorzystania języka XML.</P><P>Przedstawiane są także narzędzia Oracle:</P><UL><LI> Oracle Forms, </LI><LI> Oracle Reports, </LI><LI> Oracle XDK. </LI>

</UL></czesc_konspektu>

</konspekt></przedmiot>

</eres_konspekty>

Przykład dokumentu

Page 116: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

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

<?xml-stylesheet type="text/xsl" href="konspekty.xsl"?>

<eres_konspekty

xmlns="http://www.elka.pw.edu.pl/eres"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.elka.pw.edu.pl/eres konspekty.xsd">

<przedmiot id="KBD2" wersja="1">

<slowo_kluczowe>bazy danych</slowo_kluczowe>

<slowo_kluczowe>Oracle</slowo_kluczowe>

<konspekt>

<czesc_konspektu id="Streszczenie">

<P>Monograficzny przedmiot poświęcony bazie danych i narzędziom Oracle.</P>

</czesc_konspektu>

<czesc_konspektu id="Treść">

<P>Omawiane są podstawowe zagadnienia związane z wykorzystaniem RDBMS

Oracle8 i Oracle8<I>i</I>, w tym możliwości wykorzystania języka XML.</P>

<P>Przedstawiane są także narzędzia Oracle:</P>

<UL>

<LI> Oracle Forms, </LI>

<LI> Oracle Reports, </LI>

<LI> Oracle XDK. </LI>

</UL>

</czesc_konspektu>

</konspekt>

</przedmiot>

</eres_konspekty>

Domyślna przestrzeń nazw

• Nie wymaga prefiksów w dokumencie

• Jest zgodna z przestrzenią docelową schematu

Przykład dokumentu, c.d.

Page 117: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

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

<?xml-stylesheet type="text/xsl" href="konspekty.xsl"?>

<eres_konspekty

xmlns="http://www.elka.pw.edu.pl/eres"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.elka.pw.edu.pl/eres konspekty.xsd">

<przedmiot id="KBD2" wersja="1">

<slowo_kluczowe>bazy danych</slowo_kluczowe>

<slowo_kluczowe>Oracle</slowo_kluczowe>

<konspekt>

<czesc_konspektu id="Streszczenie">

<P>Monograficzny przedmiot poświęcony bazie danych i narzędziom Oracle.</P>

</czesc_konspektu>

<czesc_konspektu id="Treść">

<P>Omawiane są podstawowe zagadnienia związane z wykorzystaniem RDBMS

Oracle8 i Oracle8<I>i</I>, w tym możliwości wykorzystania języka XML.</P>

<P>Przedstawiane są także narzędzia Oracle:</P>

<UL>

<LI> Oracle Forms, </LI>

<LI> Oracle Reports, </LI>

<LI> Oracle XDK. </LI>

</UL>

</czesc_konspektu>

</konspekt>

</przedmiot>

</eres_konspekty>

Przestrzeń nazw XML Schema

• Definiuje atrybut xsi:schemaLocation

Przykład dokumentu, c.d.

Page 118: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

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

<?xml-stylesheet type="text/xsl" href="konspekty.xsl"?>

<eres_konspekty

xmlns="http://www.elka.pw.edu.pl/eres"

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

xsi:schemaLocation="http://www.elka.pw.edu.pl/eres konspekty.xsd"><przedmiot id="KBD2" wersja="1">

<slowo_kluczowe>bazy danych</slowo_kluczowe>

<slowo_kluczowe>Oracle</slowo_kluczowe>

<konspekt>

<czesc_konspektu id="Streszczenie">

<P>Monograficzny przedmiot poświęcony bazie danych i narzędziom Oracle.</P>

</czesc_konspektu>

<czesc_konspektu id="Treść">

<P>Omawiane są podstawowe zagadnienia związane z wykorzystaniem RDBMS

Oracle8 i Oracle8<I>i</I>, w tym możliwości wykorzystania języka XML.</P>

<P>Przedstawiane są także narzędzia Oracle:</P>

<UL>

<LI> Oracle Forms, </LI>

<LI> Oracle Reports, </LI>

<LI> Oracle XDK. </LI>

</UL>

</czesc_konspektu>

</konspekt>

</przedmiot>

</eres_konspekty>

Określenie schematu

• Dwa parametry:

- nazwa URI przestrzeni nazw

- URL lub nazwa pliku ze schematem

Przykład dokumentu, c.d.

Page 119: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

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

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

targetNamespace="http://www.elka.pw.edu.pl/eres"

xmlns="http://www.elka.pw.edu.pl/eres"

elementFormDefault="qualified"

version="1.1">

<xsd:include schemaLocation="teksty.xsd"/>

<xsd:element name="eres_konspekty">

...

</xsd:element>

<xsd:element name="przedmiot">

...

</xsd:element>

<xsd:element name="czesc_konspektu">

...

</xsd:element>

<xsd:attributeGroup name="identyfikatory">

...

</xsd:attributeGroup>

</xsd:schema>

Przykład schematu

Page 120: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

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

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

targetNamespace="http://www.elka.pw.edu.pl/eres"

xmlns="http://www.elka.pw.edu.pl/eres"

elementFormDefault="qualified"

version="1.1">

<xsd:include schemaLocation="teksty.xsd"/>

<xsd:element name="eres_konspekty">

...

</xsd:element>

<xsd:element name="przedmiot">

...

</xsd:element>

<xsd:element name="czesc_konspektu">

...

</xsd:element>

<xsd:attributeGroup name="identyfikatory">

...

</xsd:attributeGroup>

</xsd:schema>

Element główny schematu

• Odwołanie do przestrzeni nazw xsd

• Określenie docelowej przestrzeni nazw dla dokumentu

• Określenie domyślnej przestrzeni nazw dla schematu

• Żądanie kwalifikowania wszystkich elementów dokumentu

prefiksem przestrzeni nazw

Przykład schematu, c.d.

Page 121: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

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

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

targetNamespace="http://www.elka.pw.edu.pl/eres"

xmlns="http://www.elka.pw.edu.pl/eres"

elementFormDefault="qualified"

version="1.1">

<xsd:include schemaLocation="teksty.xsd"/>

<xsd:element name="eres_konspekty">

...

</xsd:element>

<xsd:element name="przedmiot">

...

</xsd:element>

<xsd:element name="czesc_konspektu">

...

</xsd:element>

<xsd:attributeGroup name="identyfikatory">

...

</xsd:attributeGroup>

</xsd:schema>

Włączenie schematu

• Włącza schemat zawierający typowe deklaracje i

definicje, powtarzające się w innych schematach

• Tak włączany schemat musi nie określać docelowej

przestrzeni nazw lub określać ją tak samo jak

schemat włączający

Przykład schematu, c.d.

Page 122: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

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

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

targetNamespace="http://www.elka.pw.edu.pl/eres"

xmlns="http://www.elka.pw.edu.pl/eres"

elementFormDefault="qualified"

version="1.1">

<xsd:include schemaLocation="teksty.xsd"/>

<xsd:element name="eres_konspekty">

...

</xsd:element>

<xsd:element name="przedmiot">

...

</xsd:element>

<xsd:element name="czesc_konspektu">

...

</xsd:element>

<xsd:attributeGroup name="identyfikatory">

...

</xsd:attributeGroup>

</xsd:schema>

Deklaracje i definicje zawartości

• Deklaracje określają budowę dokumentu

• Definicje określają obiekty pomocnicze, np. typy,

powtarzalne grupy itp. – wykorzystywane w

deklaracjach

Przykład schematu, c.d.

Page 123: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

<xsd:element name="eres_konspekty"><xsd:annotation><xsd:documentation>Przykład</xsd:documentation>

</xsd:annotation>

<xsd:complexType><xsd:sequence><xsd:element ref="przedmiot"

minOccurs="1" maxOccurs="unbounded"/></xsd:sequence>

</xsd:complexType>

<xsd:key name="id_wersji"><xsd:selector xpath="przedmiot"/><xsd:field xpath="@id"/><xsd:field xpath="@wersja"/>

</xsd:key></xsd:element>

<xsd:element name="przedmiot"><!-- Definicja wywoływana po nazwie -->...

</xsd:element>

Dokumentacja

• Opisy w specjalnej strukturze

• Zwykłe komentarze XML (trudniejsze do przetwarzania!)

Deklarowanie elementów

Page 124: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

<xsd:element name="eres_konspekty"><xsd:annotation><xsd:documentation>Przykład</xsd:documentation>

</xsd:annotation>

<xsd:complexType><xsd:sequence><xsd:element ref="przedmiot"

minOccurs="1" maxOccurs="unbounded"/></xsd:sequence>

</xsd:complexType>

<xsd:key name="id_wersji"><xsd:selector xpath="przedmiot"/><xsd:field xpath="@id"/><xsd:field xpath="@wersja"/>

</xsd:key></xsd:element>

<xsd:element name="przedmiot"><!-- Definicja wywoływana po nazwie -->...

</xsd:element>

Definicje struktur

• Typy złożone służą do definiowania struktur

zagnieżdżonych

• Element sequence pozwala definiować następstwo

• Można ściśle określić krotności

Deklarowanie elementów, c.d.

Page 125: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

<xsd:element name="przedmiot"><xsd:complexType><xsd:sequence><xsd:element name="slowo_kluczowe" type="xsd:string"

minOccurs="0" maxOccurs="unbounded"/><xsd:element name="konspekt"><xsd:complexType><xsd:sequence><xsd:element ref="czesc_konspektu”

minOccurs="1" maxOccurs="unbounded"/></xsd:sequence>

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

</xsd:sequence><xsd:attributeGroup ref="identyfikatory"/><xsd:attribute name="wersja"><xsd:simpleType><xsd:restriction base="xsd:unsignedByte"><xsd:maxExclusive value="10"/>

</xsd:restriction></xsd:simpleType>

</xsd:attribute></xsd:complexType>...

</xsd:element>

<xsd:element name="czesc_konspektu">...

</xsd:element>

Metody deklarowania

• Bezpośrednia (inline)

• Z użyciem definicji i odwołań przez nazwę

Deklarowanie elementów, c.d.

Page 126: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

<xsd:element name="przedmiot"><xsd:complexType><xsd:sequence><xsd:element name="slowo_kluczowe" type="xsd:string"

minOccurs="0" maxOccurs="unbounded"/><xsd:element name="konspekt"><xsd:complexType><xsd:sequence><xsd:element ref="czesc_konspektu"

minOccurs="1" maxOccurs="unbounded"/></xsd:sequence>

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

</xsd:sequence><xsd:attributeGroup ref="identyfikatory"/><xsd:attribute name="wersja"><xsd:simpleType><xsd:restriction base="xsd:unsignedByte"><xsd:maxExclusive value="10"/>

</xsd:restriction></xsd:simpleType>

</xsd:attribute></xsd:complexType>...

</xsd:element>

<xsd:element name="czesc_konspektu">...

</xsd:element>

Definicje typów

• Do określania typów/atrybutów należy użyć typów prostych

• Typ prosty bazuje na jednym z typów wbudowanych

• Typ może być uściślony przez różne ograniczenia (aspekty)

Deklarowanie atrybutów

Page 127: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

<xsd:element name="przedmiot"><xsd:complexType><xsd:sequence>...

</xsd:sequence><xsd:attributeGroup ref="identyfikatory"/><xsd:attribute name="wersja"><xsd:simpleType><xsd:restriction base="xsd:unsignedByte"><xsd:maxExclusive value="10"/>

</xsd:restriction></xsd:simpleType>

</xsd:attribute></xsd:complexType>...

</xsd:element>

<xsd:element name="czesc_konspektu"><xsd:complexType><xsd:group ref="tekst" minOccurs="1" maxOccurs="unbounded"/><xsd:attributeGroup ref="identyfikatory"/>

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

<xsd:attributeGroup name="identyfikatory"><xsd:attribute name="id" type="xsd:Name" use="required"/>

</xsd:attributeGroup>

Metody deklarowania

• Bezpośrednio

• Z użyciem definicji i odwołania przez nazwę

- grupa atrybutów definiuje powtarzalne

atrybuty

Deklarowanie atrybutów, c.d.

Page 128: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

<xsd:element name="przedmiot"><xsd:complexType><xsd:sequence><xsd:element name="slowo_kluczowe" type="xsd:string"

minOccurs="0" maxOccurs="unbounded"/><xsd:element name="konspekt"><xsd:complexType><xsd:sequence><xsd:element ref="czesc_konspektu"

minOccurs="1” maxOccurs="unbounded"/></xsd:sequence>

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

</xsd:sequence><xsd:attributeGroup ref="identyfikatory"/><xsd:attribute name="wersja">...

</xsd:attribute></xsd:complexType><xsd:key name="id_czesci"><xsd:selector xpath="konspekt/czesc_konspektu"/><xsd:field xpath="@id"/>

</xsd:key></xsd:element>

<xsd:attributeGroup name="identyfikatory"><xsd:attribute name="id" type="xsd:Name" use="required"/>

</xsd:attributeGroup>

Definicja klucza

• Nazwa klucza (może służyć do

budowy odwołań)

• Selektor: które elementy są

unikalnie identyfikowane przez

klucz

• Pole: składnik klucza (może być

kilka)

• Używa się wyrażeń XPath

• Zakres unikalności: element

nadrzędny w stosunku do

deklaracji

Klucze

Page 129: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Plan prezentacji

� Dlaczego schematy?

� Przykład schematu

� XML Schema – nieco szczegółów

� Rola schematów XML

Page 130: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Budowa schematu XML Schema

• Rodzaje elementów schematu

– Deklaracje: określają elementy i atrybuty

dokumentu

– Definicje: określają elementy pomocnicze,

używane w deklaracjach: typy, grupy itp.

• Elementy globalne

– Elementy schematu bezpośrednio należące

do elementu głównego schema

– Tworzą nazwane definicje, do których

można odwoływać się w definicjach i

deklaracjach

• Typy– Służą do określania

• nazw elementów i atrybutów, następstwa, zawierania

• typów danych i zakresów wartości dla atrybutów i zawartości elementów

– Rodzaje• proste: bez zagnieżdżeń

(np. dla atrybutów)

• złożone: zawierają zagnieżdżone elementy

• Dokumentacja– Elementy annotation służą do

umieszczania dodatkowych informacji

• element documentation może zawierać

dokumentację w języku naturalnym

• element appInfo może zawierać

informacje dla aplikacji przetwarzających

Page 131: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Złożone typy danych

• Budowanie złożonych typów danych

– Element complexType służy do

definiowania typów złożonych

– Grupowanie elementów w ramach typu

• sequence wyznacza ścisłe następstwo

• choice wyznacza wybór z kilu możliwości

• all wyznacza zbiór elementów i liczbę

powtórzeń, ale bez określenia kolejności

• grupowania te można zagnieżdżać

– Liczba powtórzeń elementu lub grupy

• ściśle określana za pomocą atrybutów

minOccurs i maxOccurs

– Elementy mieszane (tekst + znaczniki)

• definiuje się jak zwykłe typy złożone

• atrybut mixed określa, że znaczniki mogą

być przeplecione tekstem

• Atrybuty

– Deklaracje atrybutów podaje się na końcu

definicji złożonego typu danych

– Atrybut use="required" deklaracji

wymusza obowiązkowość

– Atrybut default deklaracji określa

wartość domyślną

– Atrybut fixed deklaracji narzuca

wartość stałą

Page 132: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Proste typy danych

• Typy wbudowane

– Typy elementarne

– Podtypy – typy pochodne

• Budowanie nowych typów prostych– Ograniczenie (restriction)

• wzorce (wyrażenia regularne)

• ograniczenia długości

• określenie liczby cyfr dziesiętnych

• ograniczenia wartości

– Wyliczenie (enumeration)

– Połączenie (union)

• Listy

– Wartość atrybutu lub elementu może być

listą wartości prostego typu, rozdzielonych

białymi znakami

– Do deklarowania typu lista służy

konstrukcja

<xsd:list itemType="typ-

prosty"/>

Page 133: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Proste typy danych, c.d.

Typy wbudowane (wybór)

Nazwa typu Opis Przykładowe podtypy

string Napis normalizedString, language, Name

boolean Wartości true i false

decimal Liczba stałoprzecinkowa integer, negativeInteger,

nonPositiveInteger, int, short,

byte, unsignedInt

float, double Liczba zmiennoprzecinkowa

duration Długość okresu czasu

dateTime Data i czas

date, time Data, czas

Page 134: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Unikalność i klucze

• Unikalność

– Element unique deklaruje

niepowtarzalność

• Klucze

– Element key: podobny do unique,

definiuje klucz złożony z niepustych

składników

– Odwołania można deklarować za pomocą

elementu keyref

• Budowa klucza

– Element selector podaje jaki zbiór

elementów ma zawierać niepowtarzalne

klucze

– Element(y) field określa(ją) składnik(i)

klucza

– Zakres niepowtarzalności określa się przez

umieszczenie deklaracji unique lub key

na końcu definicji odpowiedniego elementu

Page 135: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Schematy a przestrzenie nazw

• Przestrzenie nazw w schematach– Schematy w pełni wykorzystują możliwości

przestrzeni nazw (namespaces)

– Schemat określa znaczniki w konkretnej przestrzeni nazw

• Docelowa przestrzeń nazw– Znaczniki znajdą się w docelowej

przestrzeni nazw podanej w atrybucie targetNamespace

– Znaczniki w dokumencie muszą być w tej samej docelowej przestrzeni nazw

• Kilka przestrzeni nazw– Dokument może korzystać z kilku

przestrzeni nazw – każdej powiązanej z innym schematem

• Kwalifikowanie znaczników– Atrybut elementFormDefault:

reguły kwalifikowania prefiksem przestrzeni nazw

• wartość qualified – kwalifikować

wszystkie znaczniki

• wartość unqualified – kwalifikować

tylko elementy globalne – w przestrzeni nazw znajdują się tylko

elementy globalne

– ich elementy podrzędne (lokalne) przynależą do przestrzeni pośrednio

– można tworzyć różne elementy lokalne o tych samych nazwach w różnych miejscach schematu bez konfliktu w przestrzeni nazw

• Rozszerzanie XML Schema

– Zapis schematu można rozszerzyć o własne elementy

– Umieścić je trzeba w innej przestrzeni nazw

Page 136: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Wielokrotne użycie

• Grupowanie

– Definicja powtarzalnej grupy

• elementów: group

• atrybutów: attributeGroup

– Odwołanie: po nazwie grupy

• Włączanie schematów

– include włącza schemat do schematu

– redefine włącza schemat, umożliwiając

przedefiniowanie wybranych elementów,

atrybutów i typów włączanego schematu

• Włączanie a przestrzenie nazw

– include działa jeśli

• włączany schemat nie określa przestrzeni

nazw

– znaczniki włączane przypisywane są do

przestrzeni docelowej schematu

włączającego

• włączany schemat określa tę samą

przestrzeń nazw co włączający

– import włącza schemat z

pozostawieniem jego przestrzeni nazw

• stosowane w przypadku, gdy włączany

schemat określa inną przestrzeń nazw

• w definiowanym dokumencie pozostają dwie

różne przestrzenie nazw

Page 137: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Rozszerzanie schematów

• Zastępowanie (substitution)– Można określić zbiór elementów mogących

zastąpić dany element

– Definiowanie

• atrybut substitutionGroupwskazuje element zastępowany (bazowy)

• typ elementów ten sam albo pochodny od typu elementu bazowego

– Wykorzystanie w dokumencie • element typu bazowego może być

zastąpiony elementem typu zastępującego

• przykład: nazwy w kilku językach

• Typy pochodne (derived types)– Dla typów prostych: ograniczenie,

wyliczenie, połączenie

– Dla typów złożonych• ograniczenie

– zawężenie zakresu wartości

– ograniczenie liczności elementów

• rozszerzenie: dodanie nowych elementów lub atrybutów do typu bazowego

• Ograniczanie rozszerzalności– Specjalne atrybuty pozwalają określić

dopuszczone mechanizmy wyprowadzania

typów

– Definicje elementów i typów

abstrakcyjnych

• nie mogą być bezpośrednio wykorzystane w

deklaracjach

• służą do zastępowania lub wyprowadzania

nowych definicji

• Zezwolenie na rozszerzenia użytkownika

– any, anyAttribute i anyType

pozwalają użyć

elementów/atrybutów/typów

nie zdefiniowanych w schemacie

Page 138: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

XML Schema w narzędziach

• Narzędzia firmy Microsoft

– MS XML SDK 4.0 wspiera specyfikację XML

Schema (XSD)

• parser DOM waliduje dokumenty z użyciem

XSD

• obiekt XMLSchemaCache służy do

ładowania schematów

– Narzędzia Microsoft zawierają także

wsparcie dla firmowych specyfikacji XML-

Data i XML-Data Reduced

• Narzędzia firmy Oracle

– Najnowsze wersje XDK (XML Developer

Kit) zawierają Oracle XML Schema

Processor for Java

– Procesor ten jest wykorzystywany przez

parser typu DOM

– Walidacja na podstawie schematu

• ładowanego automatycznie na podstawie

zawartości dokumentu

• ładowanego programowo

– Walidacja z linii komendy

oraxml –schema

nazwa_pliku_XML

Page 139: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Plan prezentacji

� Dlaczego schematy?

� Przykład schematu

� XML Schema – nieco szczegółów

� Rola schematów XML

Page 140: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Rola schematów XML

• Zastosowania schematów XML– W przetwarzaniu

• walidacja na podstawie schematu pozwala uniknąć sprawdzeń poprawności struktury w czasie przetwarzania

– W wymianie danych• walidacja na podstawie schematu pozwala pod razu odrzucać błędne komunikaty, bez ich

szczegółowej analizy

– W ładowaniu do baz danych• schemat może być użyty do automatycznego utworzenia odpowiedniej struktury danych i

sterowania wczytywaniem informacji do tej struktury

– W tworzeniu dokumentacji• schemat można uzupełnić o elementy opisowe i automatycznie generować dokumentację

struktur XML (za pomocą XSL)

• Przyszłość schematów XML– Wszystko wskazuje na to, że schematy całkowicie wyprą DTD w zastosowaniu do

definiowania struktur dokumentów i walidacji

– Zastosowaniem DTD pozostanie definiowanie encji

Page 141: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT

Marek Wojciechowski

[email protected]

http://www.cs.put.poznan.pl/~marek/

Page 142: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Formatowanie dokumentów XML

• Język XML opisuje strukturę i semantykę, nie opisuje formatowania– Nie ma w XML znaczników opisujących formatowanie

– Ze znacznikami XML nie jest związany domyślny sposób prezentacji

• Sposób prezentacji dokumentu XML (formatowanie) dodaje się poprzez dołączenie arkuszu stylów– CSS – Cascading Style Sheets (Level 1 i Level 2)

• Opracowany z myślą o HTML

– XSL – Extensible Stylesheet Language• Opracowany dla dokumentów XML

• Bardziej złożony, oferujący więcej możliwości niż CSS

Page 143: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Formatowanie XML za pomocą CSS

• CSS umożliwia formatowanie elementów, ale nie pozwala na modyfikację struktury drzewa dokumentu

produkt {display: block}

nazwa {display: inline;

font-weight: bold}

symbol {display: none}

cena {display: inline;

font-style: italic}

<?xml version="1.0" encoding="windows-1250" ?>

<?xml-stylesheet type="text/css" href="produkty.css"?>

<cennik>

<produkt kod="67653829370">

<nazwa>Antena dachowa</nazwa>

<symbol>1709765</symbol>

<cena>85</cena>

</produkt>

<produkt kod="56486294304">

<nazwa>Radioodtwarzacz CAR 2001</nazwa>

<symbol>3209765</symbol>

<cena>525</cena>

</produkt>

<produkt kod="78488297102">

<nazwa>Zestaw głośnomówiący LOUD 2</nazwa>

<symbol>4409724</symbol>

<cena>330</cena>

</produkt>

</cennik>

produkty.xml produkty.css

Page 144: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

XSL – Extensible Stylesheet Language

• Język do definiowania arkuszy stylów

• Obejmuje 2 części:– XSL Transformations (XSLT) – język przekształceń

• Wykorzystuje XPath

– XSL Formatting Objects (XSL-FO) – język opisu formatu

• W porównaniu z CSS:– XSL oferuje bardziej rozbudowane mechanizmy formatowania

– Umożliwia transformację struktury drzewa dokumentu (!)

– Arkusze XSL są dokumentami XML (!)

• XSLT może być wykorzystywany w połączeniu z XSL-FO do formatowania dokumentów XML, ale może również być wykorzystywany niezależnie jako uniwersalny język transformacji dokumentów XML

Page 145: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

XSLT – Język przekształceń

• Zawiera elementy służące do definiowania reguł opisujących sposób przekształcania jednego dokumentu XML na inny dokument

• Wykorzystuje język wyrażeń XPath do wyboru przetwarzanych elementów

• Przekształcony dokument może mieć znaczniki (i DTD) dokumentu oryginalnego lub używać innego zestawu znaczników

• Przykłady typów konwersji dokumentów XML:– Konwersja do dokumentu XML zawierającego obiekty formatujące

XSL

– Konwersja do dokumentu HTML (np. korzystającego z arkusza stylów CSS)

Page 146: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Transformacja XSLT

Dokument XML

Arkusz stylistyczny XSL

XSLTDokument XML

(lub HTML, WML, itp.)

Automatyczna konwersja dokumentu XML do formatu HTML, WML, itp. lub innego dokumentu XML

Page 147: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

<?xml version="1.0" encoding="windows-1250"?>

<xsl:stylesheet

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

version="1.0">

<xsl:template match="cennik">

<HTML><BODY><H1>Cennik akcesoriów</H1>

<xsl:for-each select="produkt">

<B><xsl:value-of select="nazwa"/></B> -

<I><xsl:value-of select="cena"/></I> PLN

<BR/>

</xsl:for-each>

</BODY></HTML>

</xsl:template>

</xsl:stylesheet>

Przykład transformacji XSLT

<?xml version="1.0"

encoding="windows-1250" ?>

<?xml-stylesheet type="text/xsl"

href="produkty.xsl"?>

<cennik>

<produkt kod="67653829370">

<nazwa>Antena dachowa</nazwa>

<symbol>1709765</symbol>

<cena>85</cena>

</produkt>

<produkt kod="56486294304">

<nazwa>Radioodtwarzacz CAR 2001</nazwa>

<symbol>3209765</symbol>

<cena>525</cena>

</produkt>

<produkt kod="78488297102">

<nazwa>Zestaw głośnomówiący LOUD 2

</nazwa>

<symbol>4409724</symbol>

<cena>330</cena>

</produkt>

</cennik>

produkty.xml produkty.xsl

Efekt transformacji do HTML wykonanej po stronie przeglądarki

Wyrażenia XPath wybierająceprzetwarzane elementy

Page 148: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Metody transformacji XSLT

• Programista przygotowuje arkusz stylistyczny XSL, opisujący sposób transformacji oryginalnego dokumentu XML

• Transformacja może być opisana w sposób rekurencyjny, proceduralny lub mieszany

• Za transformację dokumentu XML odpowiada procesor XSLT

• Procesory XSLT mogą być dostępne w postaci:– Samodzielnych produktów

– Modułów wchodzących w skład większych produktów• Przeglądarek internetowych (np. Microsoft Internet Explorer)

• Serwerów WWW

– Modułów bibliotecznych np. bibliotek Java

Page 149: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Co widzi procesor XSLT?

• Procesor XSLT widzi drzewo dokumentu XML

• XSLT zakłada, że drzewo składa się z 7 rodzajów węzłów:– Korzeń

– Elementy

– Tekst

– Atrybuty

– Przestrzenie nazw

– Instrukcje przetwarzania

– Komentarze

• DTD i deklaracja typu dokumentu nie są włączane do drzewa (ale mogą powodować dodanie do niektórych elementów atrybutów domyślnych i stałych)

Page 150: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Domyślne reguły transformacji• XSL zawiera definicje kilku domyślnych reguł niejawnie dołączonych do

wszystkich arkuszy stylów– Domyślna reguła elementów

• Zapewnia, że wszystkie węzły będą przetworzone gdy nie ma jawnych reguł

– Domyślna reguła węzłów tekstowych i atrybutów• Kopiuje tekst i atrybuty na wyjście

– Domyślna reguła instrukcji przetwarzania i komentarzy• Pomija instrukcje przetwarzania i komentarze

• Domyślne reguły mają niższy priorytet niż wyspecyfikowane jawnie (tzn. obowiązują jeśli nie zostaną przesłonięte)

• Dzięki powyższym regułom "pusty" arkusz stylów spowoduje przekopiowanie danych tekstowych na wyjście

<?xml version="1.0" encoding="windows-1250"?>

<xsl:stylesheet

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

version="1.0">

</xsl:stylesheet>

Page 151: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Transformacja rekurencyjna (1/2)Przykład: Reguły transformacji

1) Każde wystąpienie znacznika <cennik>*</cennik> zamień na:

<HTML><BODY><H1>Cennik akcesoriów</H1>*</BODY></HTML>

a następnie spróbuj dopasować reguły do zawartości znacznika

2) Każde wystąpienie znacznika <produkt>*</produkt> zamień na:

*<BR/>

a następnie spróbuj dopasować reguły do zawartości znacznika

3) Każde wystąpienie znacznika <nazwa>*</nazwa> zamień na:

<B>*</B> -

4) Każde wystąpienie znacznika <cena>*</cena> zamień na:

<I>*</I> PLN

5) Pomiń znacznik <symbol>*</symbol>

Page 152: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Transformacja rekurencyjna (2/2)Przykład: Arkusz stylistyczny XSL

<?xml version="1.0" encoding="windows-1250"?>

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

<xsl:template match="cennik">

<HTML><BODY><H1>Cennik akcesoriów</H1><xsl:apply-templates/></BODY></HTML>

</xsl:template>

<xsl:template match="produkt">

<xsl:apply-templates/><BR/>

</xsl:template>

<xsl:template match="nazwa">

<B><xsl:value-of select="text()"/></B> -

</xsl:template>

<xsl:template match="symbol">

</xsl:template>

<xsl:template match="cena">

<I><xsl:value-of select="text()"/></I> PLN

</xsl:template>

</xsl:stylesheet>

Wybiera węzeł tekstowy

Page 153: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Transformacja proceduralna (1/2)Przykład: Pseudokod transformacji

wyświetl "<HTML><BODY><H1>Cennik akcesoriów</H1>";

dla każdego znacznika <produkt> {

wyświetl "<B>";

wyświetl zawartość znacznika <nazwa>;

wyświetl "</B> -";

wyświetl "<I>";

wyświetl zawartość znacznika <cena>;

wyświetl "</I> PLN<BR/>";

}

wyświetl "</BODY></HTML>";

Page 154: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Transformacja proceduralna (2/2)Przykład: Arkusz stylistyczny XSL

<?xml version="1.0" encoding="windows-1250"?>

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

<xsl:template match="cennik">

<HTML><BODY><H1>Cennik akcesoriów</H1>

<xsl:for-each select="produkt">

<B><xsl:value-of select="nazwa"/></B> -

<I><xsl:value-of select="cena"/></I> PLN

<BR/>

</xsl:for-each>

</BODY></HTML>

</xsl:template>

</xsl:stylesheet>

Page 155: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Dostęp do atrybutów, dodawanie atrybutów

<?xml version="1.0" encoding="windows-1250" ?>

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

<xsl:template match="/">

<HTML>

<HEAD><TITLE>Cennik</TITLE></HEAD>

<BODY>

<H1>Cennik akcesoriów</H1>

<TABLE>

<xsl:attribute name="BORDER">4</xsl:attribute><TR> <TH>Kod</TH><TH>Symbol</TH>

<TH>Nazwa</TH><TH>Cena</TH> </TR>

<xsl:for-each select="cennik/produkt">

<TR>

<TH><xsl:value-of select="@kod"/></TH><TD><xsl:value-of select="symbol"/></TD>

<TD><xsl:value-of select="nazwa"/></TD>

<TD><xsl:value-of select="cena"/></TD>

</TR>

</xsl:for-each>

</TABLE>

</BODY>

</HTML>

</xsl:template>

</xsl:stylesheet>

Dostęp do atrybutu KODelementu cennik/produkt

Dodanie atrybutu BORDER z wartością 4do elementu<TABLE>(<TABLE BORDER="4"> też OK.)

Page 156: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Transformacja warunkowa w XSLT

<xsl:for-each select="cennik/produkt"><xsl:if test="symbol='1709765'"><TR>

<TD><xsl:value-of select="symbol"/></TD>

<TD><xsl:value-of select="nazwa"/></TD>

<TD><xsl:value-of select="cena"/></TD>

</TR>

</xsl:if>

</xsl:for-each>

<xsl:for-each select="cennik/produkt">

<TR>

<xsl:attribute name="BGCOLOR"><xsl:choose><xsl:when test="symbol='1709765'">green</xsl:when><xsl:when test="symbol='4409724'">yellow</xsl:when><xsl:otherwise>red</xsl:otherwise>

</xsl:choose></xsl:attribute>

<TD><xsl:value-of select="symbol"/></TD>

<TD><xsl:value-of select="nazwa"/></TD>

<TD><xsl:value-of select="cena"/></TD>

</TR>

</xsl:for-each>

Page 157: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Sortowanie w XSLT<xsl:for-each select="cennik/produkt"><xsl:sort select="cena" data-type="number" order="descending"/><TR>

<TD><xsl:value-of select="symbol"/></TD>

<TD><xsl:value-of select="nazwa"/></TD>

<TD><xsl:value-of select="cena"/></TD>

</TR>

</xsl:for-each>

<xsl:for-each select="cennik/produkt"><xsl:sort select="nazwa" lang="pl" data-type="text" order="ascending"/><xsl:sort select="symbol" data-type="number" order="ascending"/><TR>

<TD><xsl:value-of select="symbol"/></TD>

<TD><xsl:value-of select="nazwa"/></TD>

<TD><xsl:value-of select="cena"/></TD>

</TR>

</xsl:for-each>

Page 158: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Automatyczne numerowanie w XSLT

• Domyślnie xsl:number zlicza sąsiadujące węzły węzła źródłowego

• Możliwości zmiany domyślnego zachowania:– <xsl:number value="4"/>: wartość wyrażenia

– <xsl:number level="any"/>: numeracja elementów danego typu w dokumencie

– <xsl:number ... format="I"/>: I-rzymskie, i-rzymskie małe, a/A - litery

– ...

<xsl:for-each select="cennik/produkt">

<TR><TD><xsl:number/></TD><TD><xsl:value-of select="symbol"/></TD>

<TD><xsl:value-of select="nazwa"/></TD>

<TD><xsl:value-of select="cena"/></TD>

</TR>

</xsl:for-each>

Page 159: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Metody wyprowadzania wyniku• Dostępne metody: xml, html, text

• Metodę określa element xsl:output np. <xsl:output method=”xml”>

• Domyślnie xml, chyba że element główny dokumentu wynikowego to <HTML></HTML>

• Przy generacji HTML metodą xml dokument musi być well-formed:– Znaczniki muszą być zamykane; np. <P>...</P>; znaczniki puste w notacji

XML; np. <BR/>

– Znaczniki nie mogą się nakładać; np. <B> raz <I> dwa </B> trzy </I>

jest błędem

– Wielkość liter istotna; np. <B><i> raz </I></B> jest błędem

– Wartości atrybutów w cudzysłowach

– Cały dokument zawarty w <HTML>..</HTML>

<?xml version="1.0" encoding="windows-1250"?>

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

<xsl:output method="html" encoding="windows-1250"/>

<xsl:template match="cennik">

<HTML> ... </HTML>

</xsl:template>

</xsl:stylesheet>

Page 160: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Łączenie kilku arkuszy stylów

• Importowanie – xml:import– Może wystąpić tylko w elemencie głównym – xsl:stylesheet –

przed innymi elementami

– Reguły z importowanego arkusza mają niższy priorytet niż reguły zdefiniowane lokalnie

• Włączanie – xml:include– Może wystąpić gdziekolwiek w elemencie głównym po ostatnim

elemencie xsl:import

– Reguły z włączanego arkusza mają taki sam priorytet jak reguły zdefiniowane lokalnie – są traktowane tak jak gdyby były zdefiniowane w miejscu włączenia

<?xml version="1.0" encoding="windows-1250"?>

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

<xsl:import href="importowany1.xsl"/>

<xsl:import href="importowany2.xsl"/>

...

<xsl:include href="wlaczany.xsl"/>

...

</xsl:stylesheet>

Page 161: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Obiekty formatujące w języku XSL

Tomasz Traczyk

[email protected]://www.ia.pw.edu.pl/~ttraczyk/

Page 162: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

� Czym są obiekty formatujące?

� Podstawy XSL-FO

� Elementy XSL-FO

� Narzędzia

� Wykorzystanie XSL-FO w systemach z bazami danych

� Pozycja XSL-FO

Plan prezentacji

Page 163: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Czym są obiekty formatujące?

• XSL (Extensible Stylesheet Language)– Służy do prezentacji zawartości

dokumentów XML

– Części XSL• język transformacji (XSLT)

• język obiektów formatujących (XSL-FO)

• XSL-FO– Zbiór elementów XML pozwalających opisać wygląd (prezentację) dokumentu

– Zawiera cechy niezbędne do składania profesjonalnych publikacji

– Wiele rozwiązań wspólnych z CSS 2

• Standard XSL-FO (W3C)– Pełna rekomendacja XSL, zawierająca FO, ukazała się dopiero w październiku 2001

– Pojawiają się pierwsze implementacje

Page 164: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Po co obiekty formatujące?

• Obecna praktyka– Transformacja XML → HTML

– Wyświetlenie w przeglądarce

• Wady obecnej praktyki– Brak zaawansowanych możliwości formatowania tekstu

(problem częściowo rozwiązany przez CSS 2)

– Słabo uwzględnione zagadnienia stronicowania

– Brak funkcji typowych dla wydawnictw książkowych, np.• żywa pagina

• spis treści

• odsyłacze

• Rozwiązanie– Transformacja XML → XSL-FO

– Prezentacja albo generowanie pliku, np. PDF

Page 165: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Plan prezentacji

� Czym są obiekty formatujące?

� Podstawy XSL-FO

� Elementy XSL-FO

� Narzędzia

� Wykorzystanie XSL-FO w systemach z bazami danych

� Pozycja XSL-FO

Page 166: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Podstawy XSL-FO

• Formatowanie XSL– Rozbiór dokumentu XML

• drzewo wejściowe odpowiada strukturze

wejściowego dokumentu XML

– Transformacja XSLT

• drzewo wynikowe składa się z

elementów XSL-FO

– Serializacja

• powstaje obraz (prezentacja)

• lub plik

– .fo

– albo PDF, PS itp.

• Dokument XSL-FO

– Odpowiada drzewu wynikowemu FO

– Poprawny dokument XML (w sensie valid)

– Znaczniki w przestrzeni nazw fo

• Budowa dokumentu– Element główny root

• definicja stronicowania

• ciągi stron layout-master-set– strumienie tekstu flow

» bloki block

Dokument XML

Rozbiór gramatyczny

Transformacja

XSLT Serializacja

Drzewo wejściowe

Drzewo wynikowe

FO

Prezentacja

Page 167: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Tekst w XSL-FO

• Strumień tekstu– Formatowany tekst „wlewa się” w kolejne

strony• łamie się automatycznie na linie i strony

– Podział na akapity itp. – wymuszony znakowaniem FO

• Cechy tekstu– Rodzaje

• wizualne– czcionki

– podkreślenia itp.

– kolory

– tło

• inne– język

– automatyczne dzielenie wyrazów

– wcięcia

• itd.

– Wartości• domyślne

• określone przez atrybuty FO

• Dziedziczenie

– Cechy są dziedziczone w hierarchii

obiektów formatujących

• elementy podrzędne (zagnieżdżone)

dziedziczą od nadrzędnych (obejmujących)

– Cechy dziedziczone można lokalnie

przykryć

– Na „czubku” hierarchii są cechy domyślne

– Element wrapper służy jako

„przezroczysty” dodatkowy poziom

hierarchii na którym można przykryć cechy

dziedziczone

Page 168: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Przykład<?xml version="1.0" encoding="windows-1250"?>

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

<fo:layout-master-set>

<fo:simple-page-master master-name="prosta-strona"

page-height="10cm" page-width="10cm"

margin-top="1cm" margin-bottom="1cm"

margin-left="1cm" margin-right="1cm"

>

<fo:region-body/>

</fo:simple-page-master>

</fo:layout-master-set>

<fo:page-sequence master-reference="prosta-strona">

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

<fo:block text-align="center"

text-decoration="underline" space-after="1cm"

>

Przykład XSL-FO

</fo:block>

<fo:block>

To jest banalny przykład XSL-FO.

</fo:block>

</fo:flow>

</fo:page-sequence>

</fo:root>

Page 169: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Przykład, c.d.<?xml version="1.0" encoding="windows-1250"?>

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

<fo:layout-master-set>

<fo:simple-page-master master-name="prosta-strona"

page-height="10cm" page-width="10cm"

margin-top="1cm" margin-bottom="1cm"

margin-left="1cm" margin-right="1cm"

>

<fo:region-body/>

</fo:simple-page-master>

</fo:layout-master-set>

<fo:page-sequence master-reference="prosta-strona">

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

<fo:block text-align="center"

text-decoration="underline" space-after="1cm"

>

Przykład XSL-FO

</fo:block>

<fo:block>

To jest banalny przykład XSL-FO.

</fo:block>

</fo:flow>

</fo:page-sequence>

</fo:root>

Budowa dokumentu

• Element główny fo:root

• Definicja stronicowania fo:layout-master-set

• Właściwy strumień tekstu fo:flow,

wlewany w ciąg stron fo:page-sequence

¼

Page 170: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Przykład, c.d.<?xml version="1.0" encoding="windows-1250"?>

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

<fo:layout-master-set>

<fo:simple-page-master master-name="prosta-strona"

page-height="10cm" page-width="10cm"

margin-top="1cm" margin-bottom="1cm"

margin-left="1cm" margin-right="1cm"

>

<fo:region-body/>

</fo:simple-page-master>

</fo:layout-master-set>

<fo:page-sequence master-reference="prosta-strona">

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

<fo:block text-align="center"

text-decoration="underline" space-after="1cm"

>

Przykład XSL-FO

</fo:block>

<fo:block>

To jest banalny przykład XSL-FO.

</fo:block>

</fo:flow>

</fo:page-sequence>

</fo:root>

Przestrzeń nazw

• Zwyczajowo używany prefiks fo

• Zdefiniowana przez URL do W3C

Page 171: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Przykład, c.d.<?xml version="1.0" encoding="windows-1250"?>

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

<fo:layout-master-set>

<fo:simple-page-master master-name="prosta-strona"

page-height="10cm" page-width="10cm"

margin-top="1cm" margin-bottom="1cm"

margin-left="1cm" margin-right="1cm"

>

<fo:region-body/>

</fo:simple-page-master>

</fo:layout-master-set>

<fo:page-sequence master-reference="prosta-strona">

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

<fo:block text-align="center"

text-decoration="underline" space-after="1cm"

>

Przykład XSL-FO

</fo:block>

<fo:block>

To jest banalny przykład XSL-FO.

</fo:block>

</fo:flow>

</fo:page-sequence>

</fo:root>

Bloki

• Tekst podzielony jest na bloki, odpowiadające

np. akapitom

Page 172: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Plan prezentacji

� Czym są obiekty formatujące?

� Podstawy XSL-FO

� Elementy XSL-FO

� Narzędzia

� Wykorzystanie XSL-FO w systemach z bazami danych

� Pozycja XSL-FO

Page 173: Wprowadzenie do XML - PLOUG · Co to jest XML? • Extensible Markup Language – Metajęzyk • umożliwia definiowanie języków znakowania • służy do zapisu różnorodnych

Model strony

• Model strony– Strona „fizyczna”

• z marginesami niezapisywalnymi

– Strona „logiczna”• ciało

• marginesy zapisywalne

• obszary na zapisywalnych marginesach(na nagłówki, stopki itp.)

• Kierunki

– Bezwzględne – związane z nośnikiem

• left – right, top – bottom

– Względne – związane z kierunkiem pisania

(zależnym np. od języka)

• start – end, before – after

margin-top

region-before

region-after

region-start re

gion-end