XML
eXtensible Markup Language
Rafał KASPRZYK
Rafał KASPRZYK
Przyczyna powstania XML
- ewolucja Internetu
czas
człowiek
człowiek
człowiek
aplikacja
aplikacja
człowiek
aplikacja
aplikacja
dzisiaj
start
2
Rafał KASPRZYK
3
Wymiana danych
We współczesnych systemach informatycznych dane przechowywane są
w wielu niekompatybilnych formatach.
Przy próbie integracji SI jednym z najbardziej czasochłonnych zadań do
wykonania jest opracowanie metod (procedur) wymiany danych.
Próba integracji N systemów wymaga
opracowania procedur wymiany
danych
Wykorzystanie formatu pośredniego
pozwala na ograniczenie ich liczby do
N
Rafał KASPRZYK
4
Wymiana danych
Historia informatyki zna wiele formatów wymiany danych, niektóre z
nich popularne są do dnia dzisiejszego
pliki tekstowe (z wyróżnionymi separatorami pól i rekordów)
pliki baz danych w formacie dBase, Paradox
pliki MS Office (Word, Excell)
dokumenty .pdf
mechanizm ODBC
...
Wraz z rozwojem Internetu (sieci WWW) standardowym formatem
publikowania informacji stał się język HTML (HyperText Markup
Language - Język Odnośników Hipertekstowych).
Pozwolił on na konstrukcję złożonych interaktywnych witryn bogatych
zarówno w formę jak i treść.
Rafał KASPRZYK
5
Czym jest HTML ?
HTML
jest językiem opisu strony służącym do konstruowania
dokumentów przeznaczonych do prezentacji w Internecie.
Dokumenty HTML są zwykłymi plikami tekstowymi (z rozszerzeniem .htm
lub .html) które mogą być redagowane w dowolnym edytorze np. Notatniku
Windows.
Zawierają one tekst (właściwą treść dokumentu) i znaczniki (zwane
również
tagami
) czyli ujęte w nawiasy kątowe litery, mające ściśle
zdefiniowany wpływ na interpretację przez przeglądarkę tekstu znajdującego
się w pliku.
Ogólna składnia znaczników wygląda następująco:
<TAG parametr="wartość"> tekst </TAG>
Przeglądarka interpretuje zawartość pliku i przekształca go na postać
graficzną.
Specyfikacja standardu języka HTML opracowywana jest przez World Wide
Web Consortium (W3C). Obecnie standardem jest zatwierdzona pod koniec
grudnia 1997 roku specyfikacja HTML 4.0
Rafał KASPRZYK
6
Osnowa dokumentu HTML
<!DOCTYPE HTML PUBLIC "- //W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
nagłówek dokumentu
</HEAD>
<BODY>
treść dokumentu
</BODY>
</HTML>
prolog - informacja o wersji HTML używanej w dokumencie
HTML - zakres dokumentu
HEAD - nagłówek dokumentu
informacje o dokumencie (strona kodowa, tytuł dokumentu...)
BODY - ciało dokumentu
publikowana treść dokumentu (formatowany tekst, obrazki,
odsyłacze itp...)
Rafał KASPRZYK
7
Przykład dokumentu HTML
<!DOCTYPE HTML PUBLIC "- //W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>
Bolesław Leśmian - ***
</title>
</head>
<body>
<div align="center">
<H2>Bolesław Leśmian</H2>
<font size="+1">
***
</font>
<p>
Zmienionaż po rozłące? O, nie, niezmieniona!
<br>
Lecz jakiś kwiat z twych włosów zbiegł do stóp ołtarzy,
<br>
A choć brak tego zbiega nie skalał twej twarzy,
<br>
Serce me w tajemnicy przed twym sercem kona...
</p>
<p>
Dusza twoja śmie marzyć, że w gwiezdne zamiecie
<br>
Wdumana, będzie trwała raz jeszcze i jeszcze -
<br>
Lecz ciało? Któż pomyśli o nim we wszechświecie,
<br>
Prócz mnie, co tak w nie wierzę i kocham i pieszczę?
</p>
</body>
</html>
Rafał KASPRZYK
8
HTML a wymiana danych
HTML pomimo zasług w dziedzinie publikacji danych, jakie poniósł na
wczesnym etapie rozwoju WWW, posiada cechy, które uniemożliwiają
zastosowanie go jako formatu wymiany danych.
HTML został zaprojektowany do prezentacji danych.
HTML posiada własności pozwalające stworzyć strony bogate zarówno
w treść jak i atrakcyjne w formie, ale chociaż wykonane przy jego pomocy
dokumenty prezentują się atrakcyjnie dla człowieka, to nie nadają się do
automatycznego (zalgorytmizowanego) przetwarzania.
Na przykład odczytanie informacji o kursie poszczególnych walut
zamieszczone na witrynie banku centralnego jest dla człowieka
stosunkowo łatwe. Napisanie aplikacji, która wykonywałaby to samo
działanie jest już złożonym problemem.
Rafał KASPRZYK
9
SGML
W 1969 roku w ośrodku badawczym IBM Almaden panowie Goldfarb,
Mosher i Lorie opracowali język pozwalający na edycję, formatowanie i
wyszukiwanie informacji w dużych zbiorach tekstowych w oparciu o formalną
definicję typu dokumentu.
Oparty na ich rozwiązaniu SGML (Standard Generalized Markup Language)
jest od 1986 opracowaną normą ISO 8879:1986. SGML jest metajęzykiem.
Mimo wielu zastosowań SGML nadal nie jest technologią popularną. Barierę
stanowią tu duży stopień komplikacji i wysokie koszty wdrażania. Z tych
samych przyczyn nie został bezpośrednio wykorzystany w Internecie (chociaż
HTML jest przecież językiem SGML-owym).
Idea SGML:
-
Stworzenie najodpowiedniejszego modelu dla indywidualnych potrzeb
-
Oddzielenie znaczenia tekstu od sposobu prezentacji
Rafał KASPRZYK
10
Czym jest XML ?
Wychodząc naprzeciw rosnącemu zapotrzebowaniu na standard
formatu wymiany danych konsorcjum W3C opracowało (meta)język XML
(eXtensible Markup Language - Rozszerzalny Język Znaczników).
XML jest uproszczoną wersją SGML. Wg. twórców XML zachował on
90% możliwości i 10% skomplikowania swojego protoplasty.
XML został zaprojektowany do opisu danych
Pierwszą wersję XML zaprezentowano w grudniu 1996 roku. Obecnie
obowiązuje rekomendacja opublikowana przez konsorcjum W3C 6
października 2000 roku (XML 1.0 Second Edition).
Poza tym na stronach W3C można znaleźć rekomendacje standardów
związanych z XML (jak XSL, XSLT, XML Schema, XPath, MathML, XHTML
…)
Rafał KASPRZYK
11
Przykład dokumentu XML *
<?xml version="1.0" encoding="ISO-8859-2"?>
<?xml-stylesheet type="text/xsl" href="utwor.xsl"?>
<utwor typ="wiersz">
<autor>
Bolesław Leśmian
</autor>
<tytul>
***
</tytul>
<zwrotka><wers>
Zmienionaż po rozłące? O, nie, niezmieniona!
</wers>
<wers>
Lecz jakiś kwiat z twych włosów zbiegł do stóp ołtarzy,
</wers>
<wers>
A choć brak tego zbiega nie skalał twej twarzy,
</wers>
<wers>
Serce me w tajemnicy przed twym sercem kona...
</wers>
</zwrotka>
<zwrotka><wers>
Dusza twoja śmie marzyć, że w gwiezdne zamiecie
</wers>
<wers>
Wdumana, będzie trwała raz jeszcze i jeszcze -
</wers>
<wers>
Lecz ciało? Któż pomyśli o nim we wszechświecie,
</wers>
<wers>
Prócz mnie, co tak w nie wierzę i kocham i pieszczę?
</wers>
</zwrotka>
</utwor>
* Przykład zaczerpnięty z artykułu Andrzeja Dmocha „XML i XSL czyli treść i forma” - Webmaster 12/99
Rafał KASPRZYK
12
Cechy XML
jest językiem znaczników tak jak i HTML i tak samo nie został
zaprojektowany do wykonywania czegokolwiek, jest językiem opisu strony
(nie jest językiem algorytmicznym)
jest między-platformowym niezależnym od oprogramowania i sprzętu
narzędziem do wymiany informacji
jest metajęzykiem - nie zawiera predefiniowanych znaczników, pozwala
na ich samodzielne zdefiniowanie. Języki zbudowane na podstawie XML to
tzw. aplikacje XML.
XML używa DTD (Document Type Definition) do opisu struktury danych
(składni języka), wraz z nim jest samo opisujący się (ang. self-decriptive)
XML został zaprojektowany do przechowywania, przenoszenia i wymiany
danych. Nie został zaprojektowany do wyświetlania danych.
Pozwala skonstruować programy wymieniające się danymi (edytory
tekstu, arkusze kalkulacyjne) bez konieczności konstruowania narzędzi
konwertujących.
Rafał KASPRZYK
13
Zalety XML
Konwersja danych do XML pozwala zredukować koszt i złożoność tych
operacji wymiany danych oraz umożliwić korzystanie z danych przez
wiele różnych aplikacji
XML może być również użyty do składowania (przechowywania)
danych, dzięki czemu mogą one być przetwarzane przez ogólne (nie
specjalizowane) aplikacje.
Ponieważ XML jest niezależny od platformy (sprzętowej, systemowej)
można mieć do niego dostęp poprzez przeglądarkę internetową.
Oprogramowanie klienckie może korzystać z XML jak z źródeł danych, tak
jak to jest w przypadku baz danych.
Rafał KASPRZYK
14
Rodzina XML
W celu wyświetlenia (przetworzenia) dokumentu XML zazwyczaj
wymagane jest analiza 3 typów dokumentów.
właściwy dokument XML zawierający dane
dokument określający strukturę aplikacji XML (gramatykę języka) -
najczęściej korzystający z DTD (Document Type Definition) lub
XMLSchema
arkusz stylów - opisujący reguły formatowania (sposobu wyświetlania)
elementów podczas prezentacji w przeglądarce (dzięki niemu możliwa
jest zmiana wyglądu dokumentu bez zmiany jego treści) - najczęściej jest
to dokument XSL (eXTensible Stylesheets Language) lub CSS (Cascading
StyleSheets)
Rafał KASPRZYK
15
Składnia XML
Reguły składniowe XML są proste do nauczenia i użycia. W
przeciwieństwie do HTML składnia XML jest bardzo restrykcyjna.
pierwsza (obowiązkowa) linia dokumentu określa wersję xml oraz
stronę kodową
<?xml version="1.0" encoding="ISO-8859-2"?>
komentarze powinny znajdować się pomiędzy znacznikami <!-- i -->
<!-- To jest komentarz -->
w XML wszystkie znaczniki muszą być zamknięte
możliwe jest definiowanie elementów pustych
<el-pusty> </el-pusty>
jest równoznaczne z
<el-pusty/>
Rafał KASPRZYK
16
Składnia XML
w przeciwieństwie do HTML spacje nie są ignorowane
HTML
<tag> Rafał Kasprzyk </tag>
traktowane jest jako Rafał Kasprzyk
XML
<tag> Rafał Kasprzyk </tag>
traktowane jest jako Rafał Kasprzyk
znakiem końca wiersza (nowej linii) jest LF (a nie Windows'owe CR/LF)
znaczniki mogą posiadać atrybuty, składające się z nazwy atrybutu i
jego wartości ujętej w cudzysłowy lub apostrofy
nieprawidłowo
<utwor typ=wiersz>
prawidłowo
<utwor typ="wiersz">
Rafał KASPRZYK
17
Składnia XML
w dokumentach XML rozróżnialna jest wielkość liter:
znaczniki
<Name>
i
<NAME>
są rozpoznawane jako różne
nazwy znaczników:
mogą zawierać litery, cyfry i inne znaki
nie mogą zaczynać się cyfrą lub kropką
nie mogą zaczynać się ciągiem znaków "xml"
nie mogą zawierać spacji
zaleca się unikanie znaków - . , :
znaczniki powinny być prawidłowo zagnieżdżone (nie może dojść do
"przeplotu" znaczników)
nieprawidłowe zagnieżdżenie
<B><I>
Formatowany tekst
</B></I>
prawidłowe zagnieżdżenie
<B><I>
Formatowany tekst
</I></B>
Rafał KASPRZYK
18
Składnia XML
dokument XML powinien posiadać element będący korzeniem, pozostałe
elementy powinnny być wzajemnie zagnieżdżone (dokument XML posiada
strukturę drzewiastą)
<root>
<element>
<podelement>......</podelement>
</element>
</root>
XML wspiera standard kodowania znaków narodowych Unicode (możliwy
zapis pojedynczego znaku przy pomocy dwóch bajtów danych)
Dokument spełniający powyższe reguły składniowe określany jest jako
dobrze sformułowany (ang. well-formed)
Rafał KASPRZYK
CDATA i instrukcje przetwarzania
Pozwalają włączyć do dokumentu tekst, który ma być
zignorowany podczas automatycznej analizy. Jedyne, co można z
tą sekcją zrobić to przekazać jej zawartość (wyświetlić).
<![CDATA[Hej! to & jest <właśnie> sekcja cdata.]]>
Instrukcje przetwarzania są pokrewne sekcjom CDATA, ale lepiej
nadają się do „przemycania” w dokumentach XML np. skryptów.
<?javascript alert("To jest <tylko> przykład."); ?>
<?php function printsum($a, $b) {
echo $a + $b;
}
?>
<?xml-stylesheet type="text/xml" href="default.xsl"?>
<?xml-stylesheet type="text/css" href="arkusz.css"?>
19
Rafał KASPRZYK
Encje tekstowe
Encje te są czymś w rodzaju szablonów tekstu. To również
sposób na umieszczaniu w tekście niedozwolonych znaków
<tag> < zostanie zastąpione lewym nawiasem kątowym
</tag>
Pięć encji predefiniowanych:
<
,
>
,
'
,
"
,
&
Inne znaki można cytować podając ich numer np. P
Encje mogą być wykorzystane do cytowania fragmentu tekstu
<!ENTITY adres „rkasprzyk@wat.edu.pl">
20
Rafał KASPRZYK
21
Element XML
Elementem XML jest wszystko co znajduje się pomiędzy znacznikiem
początkowym i końcowym.
Elementy ze względu na przechowywaną zawartość dzielimy na:
elementy puste
<utwor typ="wiersz"> </utwor>
elementy proste
<nazwisko>
Kowalski
</nazwisko>
elementy złożone - zawierające inne elementy
<osoba>
<imie>
Jan
</imie>
<nazwisko>
Kowalski
</nazwisko>
</osoba>
elementy mieszane - element złożony zawiarający dodatowo treść
<osoba>
<imie>
Jan
</imie>
<nazwisko>
Kowalski
</nazwisko>
VIP
</osoba>
Rafał KASPRZYK
Poprawność dokumentów
Dokument XML poprawny składniowo (ang. well-
formed):
każdy element musi być zamknięty,
nie ma nakładających się elementów,
wartości atrybutów w apostrofach lub cudzysłowach,
...
Dokument XML poprawny strukturalnie (ang. valid):
struktura dokumentu zgodna ze strukturą zdefiniowaną w definicji typu
dokumentu,
obecne wszystkie wymagane atrybuty.
22
Rafał KASPRZYK
Projektowanie struktury dokumentów
wiersz
autor
tytul
zwrotka
*
wers
*
23
Rafał KASPRZYK
24
DTD
DTD (Document Type Definition) - opisuje gramatykę dokumentu XML
(zasady zagnieżdżania elementów)
DTD może być zawarte bezpośrednio w w dokumencie XML lub w
osobnym pliku
<
!DOCTYPE
utwor [
<
!ELEMENT
utwor (autor, tytul, zwrotka+)>
<
!ATTLIST
utwor typ CDATA #REQUIRED>
<
!ELEMENT
autor (#PCDATA)>
<
!ELEMENT
tytul (#PCDATA)>
<
!ELEMENT
zwrotka (wers+)>
<
!ELEMENT
wers (#PCDATA)>
]>
Dzięki DTD możliwa jest kontrola poprawności (walidacja) dokumentu.
Rafał KASPRZYK
25
Zasady konstrukcji DTD
Zawartość elementu opisywana jest poprzez znacznik:
<
!ELEMENT
nazwa_elementu definicja_typu>
Definiując typ elementu możemy użyć wyrażeń:
ANY
- dowolana zawartość
EMPTY
- element pusty
#PCDATA
- ciąg tekstowy
ujęta w nawiasy
()
sekwencja oddzielonych przecinkiem nazw elementów
|
- alternatywa (lub) wystąpienia elementów
Typy elementów mogą być uzupełnione o specjalne znaki
brak znaku
- podelement musi wystąpić dokładnie jeden raz
+
- podelement musi wystąpić co najmniej raz (1,N)
?
- podelement może wystąpić raz lub wcale (0,1)
*
- dowolna liczba wystąpień, również brak (0,N)
Przykład:
<!ELEMENT
osoba ( imie, nazwisko, ( pesel | nip )? , data_ur?, dziecko* ) >
Rafał KASPRZYK
26
Zasady konstrukcji DTD
Możliwość wystąpienia atrybutów elementu deklaruje się poprzez znacznik:
<
!ATTLIST
nazwa_elementu nazwa_atrybutu typ_lub_lista_możliwych_wartości)
modyfikator 'wartosc_domyslna' >
dostępne predefinowane typy danych to
CDATA
- dane tekstowe
ID
- unikalny identyfikator
IDREF, IDREFS
- wskazanie na unikalny identyfikator, lista wskazań
ENTITY, ENTITIES
- wskaźnik encji zewnętrznej, lista wskazań
modyfikator
#REQUIRED
- atrybut musi wystąpić i mieć nadana wartość
#IMPLIED
- procesor XML musi poinformować o braku atrybutu
#FIXED
- wartość atrybutu musi pokrywać się z wartościa domyślną
Przykład:
<
!ATTLIST
osoba plec (mezczyzna | kobieta) 'mezczyzna'
#REQUIRED
>
Rafał KASPRZYK
27
DTD - przykład
<
!ELEMENT
faktury (faktura+)>
<
!ELEMENT
faktura (klient, data,wiersz+)>
<
!ELEMENT
klient (k_nazwa, miasto, logo) >
<
!ELEMENT
k_nazwa (#PCDATA)>
<
!ELEMENT
miasto (#PCDATA)>
<
!ELEMENT
logo EMPTY>
<
!ATTLIST
logo src>
<
!ELEMENT
data (#PCDATA)>
<
!ELEMENT
wiersz (towar, ilosc)>
<
!ELEMENT
towar (t_nazwa, jm, vat)>
<
!ELEMENT
t_nazwa (#PCDATA)>
<
!ELEMENT
cena (#PCDATA)>
<
!ELEMENT
jm (#PCDATA)>
<
!ELEMENT
vat (#PCDATA)>
<
!ELEMENT
ilosc (#PCDATA)>
Rafał KASPRZYK
28
Konflikty nazw
Ponieważ XML projektowany był z myślą o zastosowaniach internetowych
pozwala na łączenie danych poprzez umieszczanie w treści dokumentu zamiast
danych - jedynie odnośników (adresów) do dokumentów zawierających dane.
Sposób użycia odnośników wewnątrz kodu opisują dwa języki zaliczane w skład
XML:
XLink
i
XPointer
.
Może się jednak zdarzyć, że łączone w ten sposób dokumenty budowane
były w oparciu o różne DTD. Komplikacje zaczynają się gdy owe DTD zawierają
definicje elemetów o tych samych nazwach.
Przykład:
Bardzo prawdopodobne jest zdefiniowanie przez 2 różnych projektantów elementu o
nazwie <cena> przy czym każdy może posiadać inną definicję:
<!ELEMENT cena (#PCDATA)>
lub
<!ELEMENT cena (kwota, waluta)>
<!ELEMENT kwota (#PCDATA)>
<!ELEMENT waluta (#PCDATA)>
Rafał KASPRZYK
29
Przestrzenie nazw
Przestrzenie nazw
(ang. namespaces) są specjalnym mechanizmem
pozwalającym na unikanie problemów wynikających z możliwości
ewentualanych konfliktów nazw elementów.
Rozwiązaniem jest dodanie kodu definiującego przestrzeń nazw, który
wg. zaleceń W3C jest po prostu URL twórcy gramatyki.
<ceny
xmlnm:fk=
"http://www.firma-krzak.com.pl" >
Dzięki tej definicji w treści dokumentów możemy posługiwać się przed nazwą
elementu prefiksem określającym przestrzeń nazw do której on przynależy
<fk:cena>
<fk:kwota>13.10</fk:kwota>
<fk:waluta>PLN</fk:waluta>
</fk:cena>
Rafał KASPRZYK
30
XML Schema
DTD pozwala zdefiniować gramatykę dokumentu XML, ale zawiera
liczne ograniczenia. Między innymi nie pozwala na dokładną kontrolę
typów elementów, liczności występowania elementów itd.
Dodatkowo dokument DTD nie jest dokumentem XML więc kontrola
jego poprawności wymaga dodatkowego parsera.
Niewystarczające możliwości DTD spowodowały powstanie standardu
tzw. schematów które pozwalają dokładniej kontrolować strukturę
dokumentu XML. Niestety istnieje wiele niezgodnych wersji schematów.
Najpopularniejsze to:
XML-Data
- firmy Microsoft
XMLSchema (XSD)
- konsorcjum W3C
Biz Talk Schema
Rafał KASPRZYK
31
XML Schema
XMLSchema jest aplikacją XML tzn. że
jego gramatyka została zdefiniowana w
DTD
inne aplikacje XML mogą z kolei przy
definiowaniu własnej gramatyki korzystać z
XML Schema
aplikacja XML
XML Schema
DTD
Rafał KASPRZYK
32
Przykład XML Schema
<?xml version="1.0" encoding="UTF-8"?>
<
xs:schema
xmlns:xs
="
http://www.w3.org/2001/XMLSchema
"
elementFormDefault
="
qualified
">
<
xs:element
name
="
autor
"
type
="
xs:string
"/>
<
xs:element
name
="
tytul
"
type
="
xs:string
"/>
<
xs:element
name
="
utwor
">
<
xs:complexType
>
<
xs:sequence
>
<
xs:element
ref
="
autor
"/>
<
xs:element
ref
="
tytul
"/>
<
xs:element
name
="
zwrotka
"
type
="
zwrotkaType
"
maxOccurs
="
unbounded
"/>
</
xs:sequence
>
<
xs:attribute
name
="
typ
"
type
="
xs:string
"
use
="
required
"/>
</
xs:complexType
>
</
xs:element
>
<
xs:element
name
="
wers
"
type
="
xs:string
"/>
<
xs:complexType
name
="
zwrotkaType
">
<
xs:sequence
>
<
xs:element
ref
="
wers
"
maxOccurs
="
unbounded
"/>
</
xs:sequence
>
</
xs:complexType
>
</
xs:schema
>
Rafał KASPRZYK
Definiowanie elementów i atrybutów
<
xsd:element
name="osoba">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="imie" type="xsd:string"/>
<xsd:element name="nazwisko"
type="xsd:string"/>
<xsd:element name="plec" type="xsd:string"/>
<xsd:element name="wiek" type="xsd:string"/>
</xsd:sequence>
<
xsd:attribute
name="id" type="xsd:ID"/>
<xsd:attribute name="NIP" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
33
Rafał KASPRZYK
Typy proste
Wbudowane typy proste:
string,
boolean,
integer,
float,
dateTime,
ID, IDREF, CDATA,
...
34
Rafał KASPRZYK
35
Typy proste
Tworzenie własnych typów prostych przy
pomocy aspektów/stron (facets):
minInclusive, maxInclusive, minExclusive, maxExclusive,
pattern,
enumeration,
list,
union,
length, minLength, maxLength.
Rafał KASPRZYK
Przykłady
<xsd:element name="wiek">
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<
xsd:minInclusive
value="0"/>
<
xsd:maxInclusive
value="120"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:attribute name="NIP">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<
xsd:pattern
value="\d{3}-\d{3}-\d{2}-\d{2}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
36
Rafał KASPRZYK
Typy złożone
Możliwość definiowania typów
złożonych:
sequence,
choice,
group,
all.
Kontrola użycia podelementów:
minOccurs,
maxOccurs.
Kontrola użycia atrybutów:
atrybut use o dopuszczalnych wartościach: required, optional lub
prohibited.
37
Rafał KASPRZYK
Kontrola użycia elementów i
atrybutów
<xsd:element name="osoba">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="imie" type="xsd:string"
minOccurs="1" maxOccurs="2"
/>
<xsd:element name="nazwisko"
type="xsd:string"/>
<xsd:element name="plec" type="xsd:string"/>
<xsd:element name="wiek" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:ID"
use="required"
/>
<xsd:attribute name="NIP" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
38
Rafał KASPRZYK
39
XSL - wyświetlanie XML
XSL - eXtensible Stylesheet Language - jest aplikacją XML definiującą
sposób wyświetlania znaczników XML.
XSL składa się z trzech podjęzyków:
XSLT (XSL - Transformations)
- język przekształceń znaczników XML
XPath
- język wzorców (ścieżek dostępu do elementów)
XML Formatting Objects
- definiowanie wyglądu znaczników XML
Rafał KASPRZYK
40
XSLT
definiowanie wzrców
<
xsl:template
match
="
/
">
- definicja wzorca dla "korzenia" dokumentu
<
xsl:template
match
="
SONG
">
- definicja wzorca dla elementu "SONG"
przekształcanie treści znacznika w pętli
<
xsl:for-each
select
="
CD
">
- dla każdego elementu "CD"
<
xsl:for-each
select
="
SONG/SONG_TITLE
">
- dla każdego tytułu
wstawianie wartości znacznika
<
xsl:value-of
select
="
TITLE
"/>
- znacznik wstawiający wartość znacznika TITLE
sortowanie zawartości
<
xsl:sort
select
="
ARTIST
"/> -
znacznik sortujący bieżąca treść wg. znacznika
ARTIST
<
xsl:sort
select
="
PRICE
"
order
="
descending
"/>
- sortowanie malejące wg ceny
Rafał KASPRZYK
41
XSLT
wstawianie znaczników i ich atrybutów
<
xsl:element
name
="
a
">
<
xsl:attribute
name
="
href
">
http:\\www.sklep.pl
</
xsl:attribute
>
Odwiedź
nas
</
xsl:element
>
deklarowanie i użycie zmiennych
<
xsl:variable
name
="
adres
">
<
xsl:value-of
select
="
adres
"/>
</
xsl:variable
>
<
td
><
a
href
="
{$adres}
"><
xsl:value-of
select
="
$adres
"/></
a
></
td
>
Rafał KASPRZYK
42
XSLT
instrukcje warunkowe
<
xsl:if
test
="
@available='no'
">
<
b
>
brak
</
b
>
</
xsl:if
>
<
xsl:choose
>
<
xsl:when
test
="
@available='no'
">
<
font
color
="
green
"
size
="
4
">
brak !!!
</
font
>
</
xsl:when
>
<
xsl:otherwise
>
<
font
color
="
red
"
size
="
4
">
<
xsl:value-of
select
="
PRICE
"/>
zł
</
font
>
</
xsl:otherwise
>
</
xsl:choose
>
Rafał KASPRZYK
43
XPath
XPath
definiuje składnię "zapytań" filtrujących dane w dokumencie XML.
Wykorzystać go można zarówno w dokumentach XSL (atrybut
select
występujący w wielu znacznikach) jak i przy przetwarzaniu dokumentów XML
przy pomocy parserów.
Zapytanie XPath określa ścieżkę dostępu do danego elementu - jego
wzorzec
CATALOG
- identyfikuje element katalog
CATALOG/CD
- identyfikuje wszystkie elementy CD w dokumencie
CATALOG/CD[@available="yes"]
- identyfikuje wszystkie elementy CD w dokumencie
których atrybut @available ma wartośc "yes"
CATALOG/CD[@available="yes"]/SONG/SONG_TITLE
- identyfikuje tytuły wszystkich
utworów elementów CD których atrybut @available ma wartośc "yes"
CATALOG/CD[@available="yes"][2]/SONG[2]/SONG_TITLE
- tytuł drugiego utworu na
drugiej dostępnej płycie
Następcą XPath jest język
XQuery
który pozwala na zadawanie zapytań o bardziej
zaawansowanej składni.
Rafał KASPRZYK
44
Przetwarzanie XML
XML nie został zaprojektowany z myślą o przetwarzaniu dokumentów przez
człowieka. Twórcy zakładali, że sprawdzenie poprawności dokumentów oraz
przetwarzanie będą wykonywane automatycznie.
Użytkownicy (programiści) nie są zmuszeni do samodzielnej implementacji
procedur odczytywania i analizy XML. Mogą posłużyć się jednym z istniejących
darmowych parserów XML (np. MSXML dostarczany wraz z MSIE).
Parser oferuje kompletne API do manipulacji (wstawianie, usuwanie,
modyfikacja, przetwarzanie) zawartością dokumentu.
Parsery XML w zależności od udostępnianego API można podzielić na dwie
grupy
parsery DOM
- bazujące na specyfikacji Document Object Model. Oferują
wygodniejszy dla programisty interfejs, gdyż budują w pamięci drzewo obiektów.
Pochłaniają jednak więcej zasobów.
parsery SAX
- bazujące na specyfikacji Simple Api for XML. Trudniejsze do
oprogramowania, mają jednak mniejsze wymagania odnośnie zasobów. Pozwalają
dopisać procedury obsługi zdarzeń wynikających z przetwarzania dokumentu
(napotkano początek znacznika, koniec znacznika, zawartość znacznika, ...).
Rafał KASPRZYK
45
Bazy danych XML
Obecnie na rynku dostępne są następujące rozwiązania:
pure relational
- struktura dokumentu XML jest sprowadzana do struktury
relacyjnej (schematu tabel), dane są defragmentowane przy zapisie i scalane przy
odczycie
post relational
- istnieje możliwość definiowania typu kolumn jako dokument XML
(dokumenty przechowywane w całości jako BLOB) (np. Oracle, MS SQL Server)
native XML
- dane przechowywane są w postaci dokumentów XML (np. Tamino)
Dwa pierwsze rozwiązania wymagają istnienia dodatkowej warstwy oprogramowania
konwertującej (tłumaczącej) dane przy odczycie/zapisie, co oczywiście spowalnia
przetwarzanie.
Rozwiązanie trzecie - "czysta" baza XML-owa niesie ze sobą ograniczenia związane z
analizą danych rozproszonych pomiędzy wiele dokumentów.
Wybór typu bazy danych zależy od sposobu w jaki chcemy te dane
przetwarzać:
podejście
data-centric
podejście
document-centric
Rafał KASPRZYK
46
Aplikacje XML
Specjalizowane dialekty XML to m.in.:
MathML (Mathematical Markup Language) – przeznaczony do
prezentowania wzorów matematycznych
XHTML – język HTML 4.0 uzupełniony o dodatkowe ograniczenia
wynikające z wymagań specyfikacji XML
SMIL (Standarized Multimedia Integration Language) – język
pozwalający w nowy sposób umieszczać na stronach WWW elementy
multimedialne
CML (Chemical Markup Language) – umożliwia graficzne
przedstawianie związków chemicznych
AML (Astronomy Markup Language) – język przeznaczony dla
zastosowań w astronomii
BSML (Biosequence ML) – język opracowany na potrzeby genetyków
XBRL (Extensible Business Reporting Language)– promowany przez
największe instytucje i firmy nowy standard wymiany danych finansowych w
Internecie
Rafał KASPRZYK
47
...i to by było na tyle