background image

XML 

eXtensible Markup Language

 Rafał KASPRZYK

background image

Rafał KASPRZYK

Przyczyna powstania XML

- ewolucja Internetu

czas

człowiek

człowiek

człowiek

aplikacja

aplikacja

człowiek

aplikacja

aplikacja

dzisiaj

start

2

background image

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

background image

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ść.

background image

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

background image

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...)

background image

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>

background image

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.

background image

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

background image

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 
…)

background image

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

background image

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.

background image

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.

background image

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)

background image

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/>

background image

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">

background image

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>

background image

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)

background image

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

background image

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> &lt; zostanie zastąpione lewym nawiasem kątowym 
</tag>

Pięć encji predefiniowanych: 

&lt; 

&gt; 

&apos; 

&quot; 

&amp;

Inne znaki można cytować podając ich numer np. &#80;

Encje mogą być wykorzystane do cytowania fragmentu tekstu

<!ENTITY adres „rkasprzyk@wat.edu.pl">

20

background image

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>

background image

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

background image

Rafał KASPRZYK

Projektowanie struktury dokumentów

wiersz

autor

tytul

zwrotka

*

wers

*

23

background image

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.

background image

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* ) >

background image

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

 >

background image

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)>

background image

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)>

background image

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> 

background image

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

background image

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

background image

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

>

background image

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

background image

Rafał KASPRZYK

Typy proste

Wbudowane typy proste:

string,

boolean,

integer,

float,

dateTime,

ID, IDREF, CDATA,

...

34

background image

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.

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

>

background image

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

>

background image

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. 

background image

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, ...).

background image

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

background image

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 

background image

Rafał KASPRZYK

47

...i to by było na tyle


Document Outline