Techniki internetowe W3 XML

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


Wyszukiwarka

Podobne podstrony:
Techniki internetowe kontakt, zaliczenie
TECH INT lab8 2014, Studia - Politechnika Opolska, Semestr 6, Techniki Internetowe
TECH INT lab12 2014, Studia - Politechnika Opolska, Semestr 6, Techniki Internetowe
TECH INT lab6 2014, Studia - Politechnika Opolska, Semestr 6, Techniki Internetowe
TECH INT lab7 2014, Studia - Politechnika Opolska, Semestr 6, Techniki Internetowe
TECH INT lab9 2014, Studia - Politechnika Opolska, Semestr 6, Techniki Internetowe
Techniki internetowe W1 Internet
praca dyplomowa wytyczne 2011 03 02, Studia - Politechnika Opolska, Semestr 6, Techniki Internetowe
Z Wykład 16.03.2008, Zajęcia, II semestr 2008, Techniki Internetowe
IT Techniki Internetu
Techniki internetowe W1
Praca Dyplomowa technikum internet, Informatyka
Techniki internetowe W2 HTML
Techniki internetowe kontakt, zaliczenie
Technika Frame Relay jako metoda połączenia przedsiębiorstw do sieci WAN i do internetu, PREZENTACJA
Zaawansowane techniki projektowania serwisów Internetowych, 2431, Prace, Informatyka
Org. bud.- z Internetu, Specyfikacja techniczn inst elektr Urzad Gminy DabrowaT, SPECYFIKACJA TECHN
Masę solną można barwić za pomocą barwników naturalnych, prace techniczne, masa solna i inne robótki

więcej podobnych podstron