background image

Mariusz Chmielewski - ISI WAT

1

por. mgr inż. Mariusz Chmielewski

Instytut Systemów Informatycznych

Wydział Cybernetyki

Wojskowa Akademia Techniczna

Techniki Internetowe

background image

Mariusz Chmielewski - ISI WAT

2

Plan wykładu

Plan wykładu

• Geneza języka
• Główne cechy XML
• Elementy XML
• Praktyczne uwagi – konstrukcje języka
• Języki oparte na XML
• Parsery XML – strategie, narzędzia, 

zasady działania

• DTD – Document Type Definiton 
• XML Schema

background image

Mariusz Chmielewski - ISI WAT

3

Języki znaczników

Języki znaczników

• Język znaczników (ang. markup 

language) - format dokumentu, który 
obok treści zawiera także opisujące ją 
informacje. Informacje te dotyczą 
danych na temat znaczenia lub wyglądu 
dokumentu i są wyrażane poprzez 
umieszczone w tekście znaczniki. 

• Języki znaczników są także 

wykorzystywane w przemyśle publikacji 
do wymiany dokumentów pomiędzy 
autorami, redaktorami oraz drukarniami.

background image

Mariusz Chmielewski - ISI WAT

4

Języki znacznikowe - SGML

Języki znacznikowe - SGML

• SGML (ang. Standard Generalized Markup Language) - 

uogólniony język znaczników ujednolicający struktury 

i format różnego typu danych. Pozwala zapisać je w 

formie dokumentu tekstowego i w związku z tym jest 

łatwo przenoszalny renderowalny w różnych 

systemach elektronicznego przekazu danych.

• SGML w przeciwieństwie od języków znaczników 

dedykowanych (takich jak np. HTML):

– nie jest określonym zbiorem znaczników i reguł ich 

użytkowania,

– nadrzędnym językiem służącym do definiowania dowolnych 

znaczników i ustalania zasad ich poprawnego użytkowania.

• Języka SGML używa się praktycznie do dwóch celów:

– precyzyjnego definiowania zbiorów znaczników 

przeznaczonych do konkretnych zastosowań – przykładem 

jest język HTML; 

– ujednolicania zasad pisania i przekazywania dokumentów 

tekstowych w obrębie dużych firm lub instytucji. 

background image

Mariusz Chmielewski - ISI WAT

5

Języki znacznikowe - SGML

Języki znacznikowe - SGML

• W obydwu przypadkach dokument w języku SGML 

składa się z trzech części:

– deklaracji dokumentu, która definiuje ogólne reguły 

stosowane w zapisie dokumentu

– np. maksymalna długość nazwy elementu, znak 

używany jako początek znacznika (domyślnie jest to 

znak < ); 

– DTD – definicji typu dokumentu, czyli definicji 

wszystkich znaczników i reguł ich stosowania; 

– właściwego dokumentu – tekst wraz ze znacznikami. 

• SGML jest złożonym językiem, co jest powodem bardzo 

mało narzędzi implementuje pełen standard. Zwykle 

edytory SGML obsługują większość powszechnie 

używanych elementów języka i interpretują jedynie część 

pliku deklaracyjnego. 

background image

Mariusz Chmielewski - ISI WAT

6

Języki znacznikowe - SGML

Języki znacznikowe - SGML

• W związku z trudnościami implementacyjnymi 

powstał język i standard XML będący początkowo 
podzbiorem reguł SGML (pierwsza wersja powstała 
w 2000 roku). 

• Standard XML można obsługiwać narzędziami 

SGML-owymi modyfikując odpowiednio plik 
deklaracyjny.

• Ponieważ w praktyce zarówno deklaracja 

dokumentu SGML jak i DTD "zaszyte" są najczęściej 
w oprogramowaniu (np. w przypadku języka HTML 
w przeglądarkach i programach do pisania stron 
WWW), użytkownicy końcowi, nie mają 
bezpośredniej styczności z DTD tej odmiany języka 
SGML, z której właśnie korzystają.

background image

Mariusz Chmielewski - ISI WAT

7

Definicja języka XML

Definicja języka XML

• www.w3.org/XML

“XML is a simple, very flexible text format 

derived from SGML. Originally designed to 

meet the challenges of large-scale electronic 

publishing, XML is also playing an 

increasingly important role in the exchange 

of a wide variety of data on the Web and 

elsewhere”

• XML definiuje strukturę dokumentu, 

pozostawiając interpretację znaczenia 

elementów tej struktury programiście;

• XML jest sposobem meta-opisu, dowolnej 

innej struktury danych;

background image

Mariusz Chmielewski - ISI WAT

8

Definicja 

Definicja 

Wikipedia

Wikipedia

• XML (ang. Extensible Markup Language, w 

wolnym tłumaczeniu Rozszerzalny Język 
Znaczników) to uniwersalny język formalny 
przeznaczony do reprezentowania różnych 
danych w ustrukturalizowany sposób. XML jest 
niezależny od platformy, co umożliwia łatwą 
wymianę dokumentów pomiędzy różnymi 
systemami i znacząco przyczyniło się do 
popularności tego języka w dobie Internetu. 
XML jest podzbiorem języka SGML, tj. każdy 
dokument XML jest też dokumentem SGML. 
XML jest rekomendowany oraz specyfikowany 
przez organizację W3C.

background image

Mariusz Chmielewski - ISI WAT

9

Struktura i znaczenie dokumentu

Struktura i znaczenie dokumentu

<?xml version="1.0" encoding="UTF-8" ?>

<person identity-nr=„cc335539">

    <birth-date year="1990" month=„3" day=„10" />

    <first-name>Harry</first-name>

    <surname>Corner</surname>

</person>

<?xml version="1.0" encoding="UTF-8" ?>

<xxxxxx xxxxxxxx-xx="xxxxxxxx">

    <xxxxx-xxxx xxxx="xxxx" xxxxx="x" xxx="xx" />

    <xxxxx-xxxx>xxxxx</xxxxx-xxxx>

    <xxxxxxx>xxxxx</xxxxxxx>

</xxxxxx>

Meaning

Structure only

background image

Mariusz Chmielewski - ISI WAT

10

Struktura i znaczenie dokumentu

Struktura i znaczenie dokumentu

<?xml version="1.0" encoding="UTF-8"?>
<książka-telefoniczna 

kategoria="bohaterowie książek">

  

<!-- komentarz -->

  <osoba charakter="dobry">
    <imię>Ambroży</imię>
    <nazwisko>Kleks</nazwisko>
    <telefon>123-456-789</telefon>
  </osoba>

  <osoba charakter="zły">
    <imię>Alojzy</imię>
    <nazwisko>Bąbel</nazwisko>
    <telefon/>
  </osoba>

</książka-telefoniczna>

background image

Mariusz Chmielewski - ISI WAT

11

Struktura i znaczenie dokumentu

Struktura i znaczenie dokumentu

• XML powstał jako „uproszczenie” 

standardu SGML

• Standard Generalized Markup Language 

(~1960/70), standard ISO 

• SGML jest bardzo rozbudowany, kosztowny 

w implementacji i długotrwały w 
opanowaniu

• XML – podzbiór SGML, 1998 (specyfikacja 

tylko ok. 20 stronicowa)

• XML szybko się rozprzestrzenił, powstają 

parsery dla wielu języków

background image

Mariusz Chmielewski - ISI WAT

12

Cechy XML

Cechy XML

• jest między-platformowym niezależnym od 

oprogramowania i sprzętu narzędziem do 

wymiany danych

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

Celem XML jest przechowywanie, przenoszenie i 

wymiana danych. XML nie został 

zaprojektowany do wyświetlania danych.

background image

Mariusz Chmielewski - ISI WAT

13

Zalety języka XML

Zalety języka XML

• Konwersja danych 

– pozwala redukować koszt i złożoność operacji wymiany 

danych 

– umożliwia 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.

• Dostępność z wykorzystaniem technologii 

internetowych 

– ponieważ XML jest niezależny od platformy (sprzętowej, 

systemowej) 

– oprogramowanie klienckie może korzystać z XML jak z 

źródeł danych, tak jak to jest w przypadku baz danych.

background image

Mariusz Chmielewski - ISI WAT

14

Dokument XML

Dokument XML

<bookstore>

<book category="COOKING">
<title lang="en">Everyday 

Italian</title>
<author>Giada De 

Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning 

XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>

</bookstore> 

background image

Mariusz Chmielewski - ISI WAT

15

Odpowiadająca struktura 

Odpowiadająca struktura 

background image

Mariusz Chmielewski - ISI WAT

16

Elementy języka: prolog

Elementy języka: prolog

• XML jest plikiem tekstowym 

rozpoczynającym się od prologu

<?xml version=”1.0” encoding=”UTF-8”?>

• Wszystkie parsery muszą wspierać 

przynajmniej dwa standardy 
kodowania UTF-8 i UTF-16

• Prolog jest opcjonalny, powinien być 

wyspecyfikowany

background image

Mariusz Chmielewski - ISI WAT

17

Elementy języka:

Elementy języka:

 

 

tagi

tagi

• Struktura jest zdefiniowana przez 

tagi (ang. markup)

– Tag to sekwencja alfanumerycznych 

znaków zawartych między '<' i '>'

• Tag otwierający: <person>
• Tag zamykający: </person>
• Tag pusty (bez ciała): <person />

– Przykłady:

• <fee>129</fee>
• <age>79</age>
• <marital-status>married</marital-status>

background image

Mariusz Chmielewski - ISI WAT

18

Elementy języka: atrybuty

Elementy języka: atrybuty

• Atrybuty są częścią struktury i pozwalają na 

związanie z tagami par nazwa-wartość

– Jedynie tagi otwierające mogą posiadać 

atrybuty

– Nazwa atrybutu jest unikalna w obrębie jednego 

tagu

• niepoprawny przykład: <person age=”79” age=”50” 

/>

• Przykłady

– <fee currency=”usd”>129</fee>
– <person marital-status=”married” age=”79” />

background image

Mariusz Chmielewski - ISI WAT

19

Elementy języka: instrukcje sterujące

Elementy języka: instrukcje sterujące

• Instrukcje sterujące nie są częścią 

dokumentu, ale są wykrywane i 
sygnalizowane przez parsery XML

• Instrukcja sterująca wygląda 

następująco:

<?my processing instruction is here ?>

• Prolog w XML jest przykładem 

instrukcji sterującej

background image

Mariusz Chmielewski - ISI WAT

20

Elementy języka: komentarze

Elementy języka: komentarze

• Komentarze to bloki tekstowe występujące 

między sekwencjami znaków: '<!--' i '-->'

• Przykłady:

<person>

    

<!-- here goes definition of a person -->

    <surname>Weiss

<!-- who is this guy? -->

</surname>

</person>

– Komentarze nie mogą być deklarowane w 

definicji tagów

– W komentarzach nie może pojawić się sekwencja 

„--”

background image

Mariusz Chmielewski - ISI WAT

21

Elementy języka: tekst

Elementy języka: tekst

<poem>

    <author>

<surname>

Białoszewski

</surname>

<first-name>

Miron

</first-name>

    </author>

    <title>

Być to...

</title>

    <contents>

    być

    to źle

    a nie?

    

</contents>

</poem>

<poem>

    <author>

<surname>

Białoszewski

</surname>

<first-name>

Miron

</first-name>

    </author>

    <title>

Być to...

</title>

    <contents>

 

    być

    to źle

    a nie?

    

</contents>

</poem>

Blok 

tekstu

Blok 

tekstu 

zawierając

y znaki 

białe

background image

Mariusz Chmielewski - ISI WAT

22

Elementy języka: tekst

Elementy języka: tekst

• Znaki białe mogą być, na życzenie 

programisty, zignorowane przez 
parsery XML

• Jeśli zachodzi potrzeba umieszczenia 

znaków specjalnych (<>&), należy 
posłużyć się albo encjami, albo 
blokiem CDATA

– Wszystkie znaki w bloku CDATA są 

przekazywane do parsera XML 
dokładnie tak, jak zostały zapisane

background image

Mariusz Chmielewski - ISI WAT

23

Blok 

Blok 

CDAT

CDAT

A

A

<poem>

    <author>

<surname>

Białoszewski

</surname>

<first-name>

Miron

</first-name>

    </author>

    <title>

Namuzowywanie

<title>

    <contents>

<![CDATA[

Muzo

Natchniuzo

   tak

ci

końcówkuję

z niepisaniowości

natreść

      mi

ości

   i

uzo

]]>

</contents>

</poem>

Text block within CDATA

CDATA start

CDATA end

background image

Mariusz Chmielewski - ISI WAT

24

Kodowanie znaków w XML

Kodowanie znaków w XML

• Prolog mówi parserowi (narzędziom 

przetwarzania) jakiego kodowania należy 
użyć w interpretacji dokumentu

– Nazwy stron kodowych: IETF RFC 1766
– Domyślna 'UTF-8' (Unicode)

• Przykład: plik XML zawierający znak 

diakrytyczny „ą”

• Kodowanie UTF-16 (ą=0x0105)

<?xml version="1.0" encoding="UTF-16"?>

<tag>

ą

</tag>

background image

Mariusz Chmielewski - ISI WAT

25

Kodowanie znaków w XML

Kodowanie znaków w XML

• Kodowanie ISO8859-2 (ą = 0xB1)

<?xml version="1.0" encoding="iso8859-2"?>

<tag>

ą

</tag>

background image

Mariusz Chmielewski - ISI WAT

26

Encje w treści dokumentu

Encje w treści dokumentu

• Niektóre znaki ('<', '&', '>') mają dla 

parsera specjalne znaczenie, trzeba je 
albo zakodować, albo umieścić w bloku 
CDATA

• Encje: '&' + entity_name + ';'
• Przykład:

<?xml version="1.0" encoding="UTF-8"?>

<tag>

&#169;

 Java Verified 

&amp; 

Java Certified 

</tag>

© Java Verified & Java Certified

Numeric entiry (character value)

Predefined entity

background image

Mariusz Chmielewski - ISI WAT

27

Praktyczne uwagi – konstrukcje języka

Praktyczne uwagi – konstrukcje języka

• w XML wszystkie znaczniki muszą być zamknięte
• możliwe jest definiowanie elementów pustych

<element_pusty> </element_pusty> 

jest równoznaczne z 

<element_pusty/>

• 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

<samochod typ=osobowy>

prawidłowo

<samochod typ="osobowy">

background image

Mariusz Chmielewski - ISI WAT

28

Praktyczne uwagi – konstrukcje języka

Praktyczne uwagi – konstrukcje języka

• 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 -, . , : 

background image

Mariusz Chmielewski - ISI WAT

29

Praktyczne uwagi – konstrukcje języka

Praktyczne uwagi – konstrukcje języka

• Dokument XML musi posiadać element 

będący korzeniem, pozostałe elementy 

powinny być zagnieżdżone odwzorowując 

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

Mariusz Chmielewski - ISI WAT

30

Element XML

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

<samochod typ="sportowy"> </samochod>

– elementy proste

<nazwisko> Kowalski </nazwisko>

– elementy złożone - zawierające inne elementy

<osoba>

 <imie> Artur </imie>
 <nazwisko> Kowal </nazwisko>

</osoba>

– elementy mieszane - element złożony zawierający 

dodatkowo treść

<osoba>

<imie> Artur </imie>
<nazwisko> Kowal </nazwisko>

</osoba>

background image

Mariusz Chmielewski - ISI WAT

31

Rodzina języków XML

Rodzina języków XML

• OpenDocument - OASIS Open Document Format for 

Office Applications, dokumenty biurowe

• SMIL - Synchronized Multimedia Integration 

Language, opis prezentacji multimedialnych

• SVG - Scalable Vector Graphics, grafika wektorowa

• MathML - Mathematical Markup Language, opis 

formuł matematycznych

• XAML - Extensible Application Markup Language, 

GUI w .NET począwszy od wersji 3.0

• XHTML - Extensible HyperText Markup Language, 

strony WWW

• XSL - Extensible Stylesheet Language, 

przekształcanie XML-i

• XSLT - XSL Transformations, Przekształcenia 

Rozszerzalnego Języka Arkuszy Stylów

• XUL - XML-based User-interface Language, GUI

background image

Mariusz Chmielewski - ISI WAT

32

OpenDocument

OpenDocument

• OpenDocument (znany również jako ODF oraz 

ISO/IEC 26300, pełna nazwa: OASIS Open 

Document Format for Office Applications) to 

otwarty standard ISO formatu plików pakietów 

biurowych. Obejmuje dokumenty tekstowe, 

arkusze kalkulacyjne, wykresy i prezentacje 

multimedialne. 

• Pierwsza wersja formatu bazowała na XML-

owym formacie pakietu OpenOffice.org. 

Obecnie OpenDocument jest rozwijany przez 

niezależną organizację OASIS (Organization 

for the Advancement of Structured 

Information Standards).

background image

Mariusz Chmielewski - ISI WAT

33

OpenDocument

OpenDocument

• OpenDocument jest alternatywą dla zamkniętych 

formatów dokumentów, kontrolowanych najczęściej 

przez firmy, które je opracowały - przede 

wszystkim dla formatów DOC, XLS i PPT, 

używanych w pakiecie biurowym Microsoft Office. 

• Użytkownicy dokumentów zgodnych ze standardem 

OpenDocument mają do nich dostęp z programów 

różnych producentów, co łamie monopol 

dotychczasowych producentów oprogramowania i 

dysponentów formatów dokumentów. 

• Możliwy staje się wybór bądź zmiana 

oprogramowania biurowego bez konieczności 

zmiany formatu używanych dokumentów (co 

zwiększałoby ryzyko utraty części informacji z 

dokumentów). 

background image

Mariusz Chmielewski - ISI WAT

34

Synchronized Multimedia Integration Language

Synchronized Multimedia Integration Language

• SMIL ("smail", ang. Synchronized 

Multimedia Integration Language) jest 
standardem zalecanym przez W3C do 
opisu prezentacji multimedialnych z 
wykorzystaniem XML.

• SMIL określa m.in. znaczniki 

synchronizacji, układu, animacji, przejść 
obrazu oraz zagnieżdżania. Pozwala na 
wstawianie obrazu, animacji, muzyki 
oraz filmów i umożliwia synchronizację 
tych elementów multimedialnych.

background image

Mariusz Chmielewski - ISI WAT

35

SVG – Scalable Vector Graphics

SVG – Scalable Vector Graphics

• SVG (ang. Scalable Vector Graphics) – uniwersalny format 

dwuwymiarowej, statycznej i animowanej grafiki 

wektorowej, nieobwarowany licencjami i patentami, 

stworzony w 1999 roku przez W3C z myślą o zastosowaniu 

go na stronach WWW.

• Używany również jako niezależny od platformy 

systemowej format grafiki. SVG należy do rodziny języków 

XML.

• W roku 2001 format SVG uzyskał status rekomendacji 

W3C. Jego obsługa jest zaimplementowana w 

przeglądarce Amaya, której rozwój wspiera W3C, oraz w 

przeglądarkach Mozilla Firefox, od wersji 1.5, Konqueror i 

Opera, począwszy od wersji 8 beta 3.

• SVG obsługiwany jest w przeglądarkach internetowych z 

reguły po przez rozszerzenie np. firmy Adobe. 

• Pliki SVG mogą być przetwarzane w szeregu programów 

niezwiązanych z przeglądarkami.

background image

Mariusz Chmielewski - ISI WAT

36

Mathematical Markup Language

Mathematical Markup Language

• MathML (ang. Mathematical Markup Language, 

matematyczny język znaczników) to język będący 

zastosowaniem XML-a, służący do opisywania wzorów 

i symboli matematycznych.

• Specyfikacje języka MathML opracowywane są przez 

W3C. Aktualną wersją jest MathML 2.0. W wersji tej 

wprowadzono podział na znaczniki prezentacyjne, 

opisujące sposób renderowania wzorów, oraz 

znaczniki semantyczne, opisujące matematyczne 

znaczenie wzorów i mogące być wykorzystywane do 

obliczeń.

• MathML jest na coraz szerszą skalę wykorzystywany 

do prezentacji wzorów w Internecie na stronach 

WWW. Znaczniki MathML można umieścić zarówno w 

osobnym dokumencie (z rozszerzeniem .mml), jak i 

włączyć do dokumentu XHTML.

background image

Mariusz Chmielewski - ISI WAT

37

Mathematical Markup Language

Mathematical Markup Language

<math>

<mrow>

<msup>
    <mfenced>

<mrow>
  <mi>x</mi>
  <mo>+</mo>
  <mi>y</mi>
</mrow>

    </mfenced>
    <mn>4</mn>
</msup>

</mrow>

</math>

przykład obrazuje 

zapis 

x + y^4. 

background image

Mariusz Chmielewski - ISI WAT

38

eXtensible Application Markup Language

eXtensible Application Markup Language

• XAML (wym. "zammel", ang. eXtensible 

Application Markup Language) jest językiem 

opisu interfejsu użytkownika wykorzystywanym w 

technologii Windows Presentation Foundation, 

która jest elementem platformy .NET Framework 

począwszy od wersji 3.0.

• XAML jest językiem opartym na języku XML 

zoptymalizowanym do opisu bogatych, 

wizualnych interfejsów, takich jak tworzone w 

Adobe Flash.

• SVG, LZX czy XUL są przykładami podobnych 

języków interfejsu użytkownika rozprowadzonymi 

na warunkach wolnego oprogramowania.

background image

Mariusz Chmielewski - ISI WAT

39

eXtensible Application Markup Language

eXtensible Application Markup Language

• W użyciu pliki XAML tworzone są ręcznie lub przy 

pomocy wizualnych narzędzi, takich jak Microsoft 

Expression Studio. 

• Wynikowy kod XML interpretowany jest przez 

podsystem systemu operacyjnego odpowiedzialny 

za wyświetlanie danych, co zastępuje warstwę 

GDI z poprzednich wersji Windows. 

• Elementy XAML mapowane są do obiektów 

Common Language Runtime, natomiast atrybuty 

do właściwości lub zdarzeń tych obiektów.

• XAML został stworzony w celu zapewnienia 

wsparcia klasom i metodom w architekturze .NET, 

które wykorzystywane są do obsługi interakcji z 

użytkownikiem, zwłaszcza wyświetlaniem.

background image

Mariusz Chmielewski - ISI WAT

40

eXtensible Application Markup Language

eXtensible Application Markup Language

background image

Mariusz Chmielewski - ISI WAT

41

Extensible HyperText Markup Language

Extensible HyperText Markup Language

• XHTML (ang. Extensible HyperText Markup Language, 

rozszerzalny hipertekstowy język znaczników) – język 

służący do tworzenia stron WWW. XHTML jest 

następcą języka HTML, a specyfikacje XHTML 

przygotowuje organizacja W3C.

• W odróżnieniu od HTML-a (który jest aplikacją języka 

SGML), dokumenty pisane w XHTML są zgodne z 

oficjalną specyfikacją XML. Dokumenty w XHTML są 

poprawnymi dokumentami XML i dzięki temu można 

je łatwo generować z innych dokumentów XML przy 

pomocy transformacji XSLT, a także automatycznie 

przekształcać w inne formy XML-a.

• Jedną z największych zalet XHTML jest możliwość 

łączenia z innymi językami zgodnymi z XML, np. 

MathML czy SVG. Odbywa się to dzięki wykorzystaniu 

mechanizmu przestrzeni nazw XML.

background image

Mariusz Chmielewski - ISI WAT

42

Extensible HyperText Markup Language

Extensible HyperText Markup Language

• Obecnie przeglądarki, Firefox, Opera, w pełni 

obsługują XHTML. Zgodność ze standardem jest 
jednak pomijana w przypadku np. Internet 
Explorer’a 

• W praktyce zmusza to wytwórców technologii do 

stosowania dla dokumentów XHTML starego 
HTML-owego typu zawartości – dzięki temu, że 
XHTML w wersji 1.0 "symuluje" HTML 4 (tzn. 
posiada praktycznie taki sam zestaw elementów i 
atrybutów)

background image

Mariusz Chmielewski - ISI WAT

43

Extensible Stylesheet Language

Extensible Stylesheet Language

• XSL (ang. Extensible Stylesheet Language, w wolnym 

tłumaczeniu Rozszerzalny Język Arkuszy Stylów) – 

funkcyjny język programowania opisujący sposób 

prezentacji i przekształceń dokumentów zapisanych w 

XML. W języku tym operuje się na znacznikach i ich 

ewaluacji, na podobnej zasadzie, co we wszystkich 

językach operujących na makrach.

• Rodzina XSL według starego podziału składa się z 3 

części:

– XSL Transformations (XSLT) – język dla 

przekształceń dokumentów XML, 

– XML Path Language (XPath) – język opisujący dostęp 

lub odwołanie do fragmentów dokumentów XML, 

– XSL Formatting Objects (XSL-FO) – słownik opisujący 

formatowanie. 

background image

Mariusz Chmielewski - ISI WAT

44

Extensible Stylesheet Language

Extensible Stylesheet Language

• Nowy podział zakłada istnienie:

– XSL Transformations (XSLT) – język dla przekształceń 

dokumentów XML, 

– XML Path Language (XPath) – język opisujący dostęp 

lub odwołanie do fragmentów dokumentów XML, 

– Extensible Stylesheet Language (XSL) – dawny XSL-

FO, słownik opisujący formatowanie, 

– XML Query Language – (XQuery) – język zapytań. 

• Pliki XSL są poprawnymi dokumentami XML, a cecha ta 

jest wykorzystywana do tworzenia rekurencyjnych 

konstrukcji. Można też zaryzykować twierdzenie, że 

XSL jest rozszerzalnym makroprocesorem.

• Istnieje wiele różnych działających implementacji XSLT 

1.0. - XSLT 2.0 i XPath 2.0 oraz XSL 1.1.

background image

Mariusz Chmielewski - ISI WAT

45

Extensible Stylesheet Language Transformations

Extensible Stylesheet Language Transformations

• XSLT (ang. XSL Transformations, Extensible Stylesheet 

Language Transformations, w wolnym tłumaczeniu 

Przekształcenia Rozszerzalnego Języka Arkuszy Stylów) jest 

opartym na XML-u językiem transformacji dokumentów 

XML.

• Pozwala na przekształcenie dokumentów zapisanych w 

jednym formacie XML na dowolny inny format zgodny ze 

składnią XML-a (np. na stronę WWW XHTML, wzór 

matematyczny MathML lub dokument biurowy ODF), jak 

również na zwykły HTML i czysty tekst.

• Dzięki dużej sile wyrazu, łatwości implementacji i 

powszechnemu stosowaniu XML-a jako standardu dla 

zapisu informacji XSLT jest uniwersalnym narzędziem 

znajdującym zastosowanie w wielu rodzajach 

oprogramowania.

• Najbardziej popularne to generowanie stron WWW w 

serwisach internetowych oraz konwersja pomiędzy 

alternatywnymi formatami np. w pakietach biurowych.

background image

Mariusz Chmielewski - ISI WAT

46

Extensible Stylesheet Language Transformations

Extensible Stylesheet Language Transformations

• XSLT jest rozwijany przez W3C jako część rodziny języków XSL 

(obok XPath i XSL-FO). Powstał pod wpływem języków funkcyjnych 
oraz języków opartych na dopasowywaniu wzorców (ang. pattern 
matching)

• Jego bezpośrednim poprzednikiem jest DSSSL, odpowiednik XSLT 

dla SGML-a.

• Aktualnie obowiązującą wersją XSLT jest 2.0.

background image

Mariusz Chmielewski - ISI WAT

47

XML-based User-interface Language

XML-based User-interface Language

• XUL (wym. "zul", ang. XML-based User-

interface Language) jest językiem 

zgodnym z XML używanym do opisu 

interfejsu WEB oraz GUI, wykorzystywanym 

między innymi w programach 

– Mozilla Suite, Mozilla Firefox, Mozilla 

Thunderbird, Nvu itp.

• XUL nie jest jeszcze standardem 

powszechnym pomimo, że używa wielu 

istniejących standardów i technologii, 

włączając takie technologie jak CSS, 

JavaScript, DTD oraz RDF.

background image

Mariusz Chmielewski - ISI WAT

48

Przetwarzanie dokumentów XML - Parsery

Przetwarzanie dokumentów XML - Parsery

• Parser - moduł programowy, które 

umożliwia interpretację plików XML

• Dwie strategie: DOM i SAX [pull/ push]

– DOM (Document Object Model)

• Obiektowa reprezentacja dokumentu
• Łatwiejsza w obsłudze, wymaga jednak większej 

zajętosci pamięci i przetwarzania całego 
dokumentu XML

– SAX (Simple API for XML)

• Interfejs oparty na zdarzeniach
• Interpretacja ‘w locie’; zdarzenia są przekazywane 

do kodu programu, przetworzona część pliku nie 
jest pamiętana

background image

Mariusz Chmielewski - ISI WAT

49

Poprawność dokumentu

Poprawność dokumentu

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

background image

Mariusz Chmielewski - ISI WAT

50

Document Type Definition

Document Type Definition

DTD (Document Type Definition) - opisuje gramatykę 

dokumentu XML (zasady zagnieżdżania elementów)

DTD zawarte może być bezpośrednio 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)> 

]>

DTD umożliwia kontrolę poprawności (walidację) 

dokumentu.

background image

Mariusz Chmielewski - ISI WAT

51

Document Type Definition - zasady

Document Type Definition - zasady

• Zawartość elementu opisywana jest poprzez znacznik:

<!ELEMENT nazwa_elementu definicja_typu>

• Definiując typ elementu możemy użyć wyrażeń:

– ANY - dowolna zawartość
– EMPTY - element pusty
– #PCDATA - ciąg tekstowy
– ujęta w nawiasy () sekwencja oddzielonych przecinkiem nazw 

elementów

– | - alternatywa (lub) wystąpienia elementów

• Nazwy 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

Mariusz Chmielewski - ISI WAT

52

Document Type Definition - zasady

Document Type Definition - zasady

Możliwość wystąpienia atrybutów elementu deklaruje 

się poprzez znacznikowi:

<!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ścią 

domyślną

Przykład:

<!ATTLIST osoba plec (mezczyzna | kobieta) 'mezczyzna' #REQUIRED >

background image

Mariusz Chmielewski - ISI WAT

53

Document Type Definition - przykład

Document Type Definition - 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

Mariusz Chmielewski - ISI WAT

54

Document Type Definition – przykład 2

Document Type Definition – przykład 2

<!ELEMENT element-name category>

or

<!ELEMENT element-name (element-content)>

<people>

    <person id=„mc102">

        <first-name>Mariusz</first-name>

        <surname>Chmielewski</surname>

        <age>29</age>

    </person>

    <person id=„dc103">

        <first-name>Dariusz</first-name>

        <surname>Chmielewski</surname>

        <age>27</age>

    </person>

</people>

<!ELEMENT people (person*) >

background image

Mariusz Chmielewski - ISI WAT

55

Document Type Definition – przykład 2

Document Type Definition – przykład 2

<!ELEMENT people (person*) >
<!ELEMENT person (first-name,

surname, age) >

<people>

    <

person

 id=„mc102">

        <first-name>Mariusz</first-name>

        <surname>Chmielewski</surname>

        <age>29</age>

    </

person

>

    <

person

 id=„dc103">

        <first-name>Dariusz</first-name>

        <surname>Chmielewski</surname>

        <age>27</age>

    </

person

>

</people>

<!ELEMENT element-name category>

or

<!ELEMENT element-name (element-content)>

background image

Mariusz Chmielewski - ISI WAT

56

Document Type Definition – przykład 2

Document Type Definition – przykład 2

<!ELEMENT people (person*) >
<!ELEMENT person (first-name,

surname, age) >

<!ELEMENT first-name (#PCDATA) >
<!ELEMENT surname (#PCDATA) >
<!ELEMENT age (#PCDATA) >

<people>

    <person 

id=„mc102"

>

        <first-name>Mariusz</first-name>

        <surname>Chmielewski</surname>

        <age>29</age>

    </person>

    <person 

id=„dc103"

>

        <first-name>Dariusz</first-name>

        <surname>Chmielewski</surname>

        <age>27</age>

    </person>

</people>

<!ELEMENT element-name category>

or

<!ELEMENT element-name (element-content)>

background image

Mariusz Chmielewski - ISI WAT

57

Document Type Definition – przykład 2

Document Type Definition – przykład 2

<people>

    <person 

id=„mc102"

>

        <first-name>Mariusz</first-name>

        <surname>Chmielewski</surname>

        <age>29</age>

    </person>

    <person 

id=„dc103"

>

        <first-name>Dariusz</first-name>

        <surname>Chmielewski</surname>

        <age>27</age>

    </person>

</people>

<!ELEMENT element-name category>

or

<!ELEMENT element-name (element-content)>

<!ELEMENT people (person*) >
<!ELEMENT person (first-name,

surname, age) >

<!ATTLIST person id ID #REQUIRED>

<!ELEMENT first-name (#PCDATA) >
<!ELEMENT surname (#PCDATA) >
<!ELEMENT age (#PCDATA) >

background image

Mariusz Chmielewski - ISI WAT

58

DTD

DTD

 załączone z dokumentem

 załączone z dokumentem

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE people [

  <!ELEMENT people (person*) >

  

  <!ELEMENT person (first-name, surname, age) >

  <!ATTLIST person id ID #REQUIRED>

  

  <!ELEMENT first-name (#PCDATA) >

  <!ELEMENT surname (#PCDATA) >

  <!ELEMENT age (#PCDATA) >

]>

<people>

    <person id=„mc102">

        <first-name>Mariusz</first-name>

        <surname>Chmielewski</surname>

        <age>29</age>

    </person>

    <person id=„dc103">

        <first-name>Dariusz</first-name>

        <surname>Chmielewski</surname>

        <age>27</age>

    </person>

</people>

background image

Mariusz Chmielewski - ISI WAT

59

DTD wskazane jako plik w systemie

DTD wskazane jako plik w systemie

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE people SYSTEM "people.dtd" >

<people>

    <person id=„mc102">

        <first-name>Mariusz</first-name>

        <surname>Chmielewski</surname>

        <age>29</age>

    </person>

    <person id=„dc103">

        <first-name>Dariusz</first-name>

        <surname>Chmielewski</surname>

        <age>27</age>

    </person>

</people>

background image

Mariusz Chmielewski - ISI WAT

60

DTD wskazane jako „publiczny” zasób

DTD wskazane jako „publiczny” zasób

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE article

  PUBLIC "-//PP//DTD EXAMPLE1//PL"

  "http://www.xxx.pl/example.dtd"

<people>

    <person id=„mc102">

        <first-name>Mariusz</first-name>

        <surname>Chmielewski</surname>

        <age>29</age>

    </person>

    <person id=„dc103">

        <first-name>Dariusz</first-name>

        <surname>Chmielewski</surname>

        <age>27</age>

    </person>

</people>

background image

Mariusz Chmielewski - ISI WAT

61

Konflikty nazw

Konflikty nazw

• XML projektowany był z myślą o zastosowaniach 

internetowych.

• XML 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 elementów o tych samych nazwach.

background image

Mariusz Chmielewski - ISI WAT

62

Konflikty nazw

Konflikty nazw

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

Mariusz Chmielewski - ISI WAT

63

Przestrzenie nazw

Przestrzenie nazw

• Przestrzenie nazw (ang. namespaces) są specjalnym 

mechanizmem pozwalającym na unikanie problemów 

wynikających z możliwości ewentulanych konfliktów 

nazw elementów. 

• Rozwiązaniem jest dodanie w DTD kodu definiującego 

przestrzeń nazw, który wg. zaleceń W3C jest po prostu 

URL twórcy gramatyki.

<ceny 

xmlnm=

"http://www.firma-krzak.com.pl" 

xmlnm:fk

="www.firma-krzak.com.pl/xml/faktura.dtd" ?>

• 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

Mariusz Chmielewski - ISI WAT

64

XML Schema

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.

background image

Mariusz Chmielewski - ISI WAT

65

XML Schema

XML Schema

• Niewystarczające możliwości DTD 

spowodowały powstanie standardu tzw. 
schematów, które pozwalają dokładniej 
kontrolować strukturę dokumentu XML.

• Niestety nie istnieje jeden standard przez co 

występują niezgodności schematów. 

• Najpopularniejsze to:

– XML-Data - firmy Microsoft 
– XMLSchema (XSD) - konsorcjum W3C
– Biz Talk Schema

background image

Mariusz Chmielewski - ISI WAT

66

XML Schema

XML Schema

• Argumenty przeciwko DTD

– Nie jest wystarczająco precyzyjny

• XML Schema jest „jak DTD”, lecz 

specyfikowane w języku XML

– Wspiera typy danych
– Wspiera warunki na wartości atrybutów
– Wspiera dziedziczenie typów

• Argumenty przeciwko XML Schema

– Jest trudniejszy do nauczenia

background image

Mariusz Chmielewski - ISI WAT

67

XML Schema i związek DTD 

XML Schema i związek DTD 

• Schemat XML jest tworzony na bazie 

definicji zbioru typów i ich wystąpień. 

• Schematy XML zapisywane są w formacie 

XML, jako poprawne dokumenty XML.

• W przypadku DTD mieliśmy do czynienia z 

osobną notacją i składnią określania reguł.

• Istnieją dwie grupy typów stosowanych 

XML Schema - proste oraz złożone. 

– Przydzielając dla elementu typ prosty określa 

się, że może on zawierać jedynie dane 

znakowe, bez atrybutów i elementów 

potomnych.

– Typy złożone mogą zawierać dowolne 

elementy, dane znakowe i atrybuty.

background image

Mariusz Chmielewski - ISI WAT

68

T

T

ypy proste

ypy proste

 XML Schema

 XML Schema

• string, boolean, float, double, decimal, 

timeInstant, timeDuration, recurringInstant, 
binarym uri-reference, ID, IDREF, 
ENTITY,NOTATION, language, IDREFS, ENTTIES, 
NMTOKEN, NMTOKENS, Qname, NCName, 
integer, non-positive-integer, negative-integer, 
long, int, byte, non-negative-integer, unsigned-
int, insigned-long, umsigned-short, unsigned-
byte, positive-integer, date, time. 

– Wśród typów prostych znajdują się również nazwy 

odpowiadające typom atrybutów w DTD. 

– Ułatwia to konwersję definicji DTD na schemat XML.

background image

Mariusz Chmielewski - ISI WAT

69

Cechy XML Schema

Cechy XML Schema

• Wśród cech związanych z XML Schema można 

wskazać:

– deklarowanie typów zawartości elementów i atrybutów 

jest znacznie bardziej precyzyjne niż w przypadku DTD;

– w dokładniejszy sposób można kontrolować liczbę 

elementów, która może wystąpić w dokumencie XML 
(liczbę wystąpień elementu można podawać m.in. w 
formie zakresu);

– można deklarować niepowtarzalność danych  w części 

dokumentu;

– można deklarować wiele elementów o tej samej nazwie, 

a różnej składni w różnych miejscach dokumentu;

– XML Schema obsługuje przestrzenie nazw.

background image

Mariusz Chmielewski - ISI WAT

70

Przykład – XML - DTD

Przykład – XML - DTD

background image

Mariusz Chmielewski - ISI WAT

71

Przykład – XML - DTD

Przykład – XML - DTD

background image

Mariusz Chmielewski - ISI WAT

72

Odwołania do DTD w XML

Odwołania do DTD w XML

background image

Mariusz Chmielewski - ISI WAT

73

XML Schema - przykład

XML Schema - przykład

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<xs:element name="people">

<xs:complexType>

<xs:sequence>

<xs:element ref="person" minOccurs="0" maxOccurs="unbounded"/>

</xs:sequence>

</xs:complexType>

</xs:element>

<xs:element name="person">

<xs:complexType>

<xs:sequence>

<xs:element ref="first-name"/>

<xs:element ref="surname"/>

<xs:element name="age">

<xs:simpleType>

<xs:restriction 

base="xs:int"

>

<xs:minInclusive value="0"/>

<xs:maxInclusive value="150"/>

</xs:restriction>

</xs:simpleType>

</xs:element>

</xs:sequence>

<xs:attribute name="id" type="xs:ID" use="required"/>

</xs:complexType>

</xs:element>

<xs:element name="first-name" type="xs:string"/>

<xs:element name="surname" type="xs:string"/>

</xs:schema>


Document Outline