02 xmlid 3920 ppt

background image

Bazy danych XML

Wydział Informatyki EWSIE
mgr inż. Piotr Greniewski

Wykład: Bazy danych II – język XML

background image

2

Literatura

XML Vademecum Profesjonalisty – Steven
Holcer

Projektowanie baz danych XML – Mark Graves

XML Almanach - Elliote R. Harold, W. Scott
Means

background image

3

Co to jest XML

XML jest językiem utworzonym przez World Wide
Web Consortium (W3C, http://www.w3c.org),

Przedstawię język XML i sposób jego użycia.

W XML można tworzyć własne znaczniki tworząc
nowe języki. Dzięki temu XML jest nadzbiorem
innych języków znacznikowych, takich jak HTML.

W HTML wszystkie znaczniki były narzucone
i często po prostu pewnych znaczników
brakowało. Tak naprawdę XML jest
metajęzykiem znaczników, gdyż pozwala tworzyć
nowe języki znacznikowe.

background image

4

Języki znacznikowe

Wszystkie języki znacznikowe opisują postać
dokumentu, czyli sposób jego interpretacji. Język
znacznikowy najpowszechniej dzisiaj używany to
oczywiście HTML używany do tworzenia stron www.

Oto taka przykładowa strona:

<HTML>
<HEAD>
<TITLE>Witaj w HTML</TITLE>
</HEAD>
<BODY>
<CENTER>
<H1>
Witaj w HTML
</H1>
</CENTER>
Witaj w pokręconym świecie HTML.
</BODY>
</HTML

background image

5

Interpretacja pliku przez przeglądarkę

background image

6

Standardy i umiejscowienie XML

HTML i XML są ze sobą spokrewnione – oba

oparte są na Standardowym uogólnionym języku

znaczników (SGML).

Zgodnie ze swoją nazwą SGML jest językiem

bardzo ogólnym o ogromnych możliwościach.

Jednak nie ma nic za darmo: ceną za tę

uniwersalność jest złożoność tego języka, co

utrudnia jego naukę i jest powodem, dla którego

język ten nie zyskał popularności.

XML jest podzbiorem SGML, łatwiej go używać,

natomiast HTML formalnie jest aplikacją SGML.

Więcej informacji o związkach między SGML

i XML znajdziesz pod adresem

www.w3.org/TR/NOTE-sgml-xml.

background image

7

Języki do opisu przetwarzania danych

Jeśli o języku znacznikowym myślisz jako o sposobie
opisu przetwarzania danych, to nietrudno zauważyć
dookoła wiele różnych języków znacznikowych.

Jeśli na przykład w procesorze tekstu zapisujesz
dokument jako RTF, to znajdziesz w nim sporo
znaczników.

background image

8

Znaczniki potrzebne do opisu danych w
sieci

Najpowszechniej obecnie znany język znaczników

to HTML, ale nietrudno zauważyć, że pozwala on

właściwie tylko na tworzenie typowych stron

sieciowych.

HTML 1.0 zawierał zaledwie około tuzina

znaczników, natomiast najnowsza wersja 4.01

zawiera ich już niemal 100.

Jeśli policzyć jeszcze inne znaczniki używane

w poszczególnych przeglądarkach, liczba ta zbliży

się do 120.

Jeśli jednak trzeba znakować różnorodne dane

dostępne w Sieci, to oczywiste jest, że 120

znaczników nie starczy (zresztą każda inna liczba

też będzie zbyt mała).

background image

9

Znaczniki dostosowane dziedzinowo

Załóżmy, że Twoim hobby jest budowanie modeli okrętów

i chciałbyś wymieniać się z innymi modelarzami danymi

na ten temat.

HTML nie zawiera znaczników takich jak

<SZEROKOŚĆKADŁUBA>, <WYSOKOŚĆBEZANMASZTU>,

<ZANURZENIE>, <KLASAOKRĘTU> i innych.

A jeśli pracowałbyś w dużym banku i chciałbyś wymieniać

dane z innymi przedsiębiorstwami, to czy wolałbyś znaczniki

<B>, <UL> i <FONT>, czy <ROKPODATKOWY>,

<NUMERKONTA> i <TRANSFER>?

Tak naprawdę zresztą takie języki są tworzone, między

innymi Rozszerzalny język raportowania biznesowego

(Extensible Business Reporting Language). umożliwiający

użytkownikom konfigurację przeglądarek, dodawanie

pasków przewijania, pasków narzędziowych i innych tego

typu elementów.

background image

10

Dalej o znacznikach

Firma Netscape opracowała taki język
na bazie XML, jest to Język interfejsu
użytkownika (User Interface Language)

Wniosek może być tylko jeden: istnieje tyle
powodów tworzenia nowych języków, ile jest
sposobów obsługiwania danych, czyli
nieskończenie wiele.

Tutaj właśnie jest miejsce dla XML:
metaznacznikowej specyfikacji umożliwiającej
tworzenie własnych języków znacznikowych.

background image

11

Jak wygląda XML

Jak zatem XML wygląda i jak działa? Oto
przykład podobny do pokazanego wcześniej
kodu HTML:

<?xml version="1.0" encoding="iso-8859-2"?>
<DOKUMENT>
<POZDROWIENIA>
Witaj w XML
</POZDROWIENIA>
<KOMUNIKAT>
Witaj w pokręconym świecie XML.
</KOMUNIKAT>
</DOKUMENT>

background image

12

Strona kodowa dokumentu XML

zaczynamy od instrukcji przetwarzania <?xml
version="1.0" encoding="iso-8859-2"> (wszystkie
instrukcje XML zaczynają się <? i kończą ?>)
mówiącej, że używamy wersji 1.0 języka XML oraz
systemu kodowania znaków ISO 8859‑2.

Ten zestaw znaków wybrano z uwagi
na konieczność zakodowania polskich liter.
Możesz użyć też UTF‑8 (encoding="UTF-8"),
natomiast niedozwolone jest stosowanie strony
kodowej Windows 1250, co może stanowić pewien
problem w systemach Windows 95 i 98.

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

background image

13

Elementy XML

Po tej instrukcji przetwarzania tworzymy nowy znacznik

<DOKUMENT>. Jak już powiedziano, możesz użyć dowolnej

nazwy znacznika, byle tylko zaczynała się od litery lub

podkreślenia i dalej zawierała jedynie litery, cyfry,

podkreślenia, kropki i myślniki. Znaczniki XML zawsze

zaczynają się znakiem mniejszości i kończą znakiem

większości.

Dokumenty XML składają się z elementów XML. Podobnie jak

w HTML, element tworzy się zapisując jego znacznik

początkowy. Dalej może być treść elementu (nieobowiązkowa)

– dowolny tekst i inne elementy, w końcu jest znacznik

końcowy zaczynający się od </, na przykład </DOKUMENT>.

Istnieją jeszcze specjalne zasady dotyczące tylko elementów

bez treści, ale zajmiemy się nimi w następnym rozdziale. Cały

dokument poza instrukcjami przetwarzania musi być

zamknięty w pojedynczym elemencie nazywanym elementem

głównym; w naszym wypadku jest to element DOKUMENT

background image

14

Element główny

Cały dokument poza instrukcjami

przetwarzania musi być zamknięty

w pojedynczym elemencie nazywanym

elementem głównym; w naszym wypadku jest

to element DOKUMENT

<?xml version="1.0" encoding="iso-8859-2"?>
<DOKUMENT>
.
.
.
</DOKUMENT>

background image

15

Nowy element

Teraz dodamy nowy element,
POZDROWIENIA, zawierający treść tekstową
(u nas jest to Witaj w XML):

<?xml version="1.0" encoding="iso-8859-2"?>
<DOKUMENT>
.
<POZDROWIENIA>
Witaj w XML
</POZDROWIENIA>
.
</DOKUMENT>

background image

16

I jeszcze jeden nowy element

Teraz możemy dodać następny element,
KOMUNIKAT, także zawierający tekst:

<?xml version="1.0" encoding="iso-8859-2"?>
<DOKUMENT>
<POZDROWIENIA>
Witaj w XML
</POZDROWIENIA>
<KOMUNIKAT>
Witaj w pokręconym świecie XML.
</KOMUNIKAT>
</DOKUMENT>

background image

17

Dokument w przeglądarce

Zatem nasz element główny DOKUMENT zawiera

dwa inne elementy: POZDROWIENIA

i KOMUNIKAT. Każdy z tych ostatnich zawiera

jakiś tekst, i tak oto stworzyliśmy dokument XML.

Zwróć uwagę na podobieństwo do pokazywanej

wcześniej strony HTML, choć tam wszystkie

znaczniki są predefiniowane i przeglądarka potrafi

je obsłużyć, natomiast nasze elementy

DOKUMENT, POZDROWIENIA i KOMUNIKAT

dopiero powstały. Jak można takiego dokumentu

używać? Co ma zrobić przeglądarka z nowymi

znacznikami?

Warto przypomnieć, że w HTML przeglądarki

gwarantują, że nieznane sobie znaczniki pominą.

background image

18

Dokument w Internet Explorer

background image

19

Dokument w Google Chrome

background image

20

Dokument XML w przeglądarkach

Okazuje się, że przeglądarki takie, jak Microsoft

Internet Explorer i mogą wyświetlać kod XML

bezpośrednio.

 Przeglądarki mogą różnie interpretować dokument

Cały dokument XML widać na poprzednich slajdach,

ale brak tutaj jakiegokolwiek formatowania. Skoro

zatem stworzyliśmy elementy, to jak je teraz

wyświetlić?

Wiele osób piszących dokumenty XML twierdzi, że

tworzenie nowych języków znacznikowych jest

bardzo frustrujące – bo co z gotowym językiem

można właściwie zrobić?

Okazuje się, że to autor musi swoim elementom

przypisać wygląd, można to zrobić na dwa sposoby.

background image

21

Dokument XML w przeglądarkach

Po pierwsze można użyć arkusza stylów, który
powie przeglądarce, jak stworzone elementy
mają być formatowane.

Druga metoda to użycie języka programowania
(PHP, Java) do obsługi kodu XML. W tej książce
omawiać będziemy zastosowanie drugiej
metody, gdyż pierwsza dokładnie omówiona
została w innych pozycjach o XML.

krótko omówimy obie metody formatowania –
zaczniemy od dodania do stworzonego
elementu arkusza stylów

background image

22

Arkusze stylów CSS

Istnieją dwa podstawowe języki definiowania
stylów dla XML: Kaskadowe arkusze stylów
(CSS) oraz Rozszerzalny język znaczników
(XSL).

Zaczniemy od arkusza CSS wstawianego
za pomocą instrukcji <?xml-stylesheet
type="text/css" href="greeting.css"?>, która
mówi przeglądarce, że do wyświetlania
naszego dokumentu XML ma użyć arkusza
stylów greeting.css:

background image

23

Deklaracja używanego arkusza css

<?xml version="1.0" encoding="iso-8859-2"?>
<?xml-stylesheet type="text/css" href="greeting.css"?>
<DOKUMENT>
<POZDROWIENIA>
Witaj w XML
</POZDROWIENIA>
<KOMUNIKAT>
Witaj w pokręconym świecie XML.
</KOMUNIKAT>
</DOKUMENT>

background image

24

Zawartość arkusza css

Poniżej pokazano zawartość pliku greeting.css.

Element POZDROWIENIA wyświetlany jest

pośrodku na czerwono, czcionką o wielkości 36

punktów.

Element KOMUNIKAT wyświetlany jest czarną,

18‑punktową czcionką. Część display:block

wskazuje, że elementy te mają być wyświetlane

jako bloki tekstu, co w tym wypadku oznacza

wyświetlanie ich w osobnych wierszach

POZDROWIENIA {display:block; font-size:36pt;

color:#FF0000; text-align:center}

KOMUNIKAT {display:block; font-size:18pt;

color:#000000}

background image

25

Wygląd sformatowanego za pomocą css
dokumentu

background image

26

Dlaczego używamy języka XML?

XML jest popularny z wielu powodów, niektóre
z nich teraz omówię. Zdaniem Autora
najważniejsze z nich to łatwość obsługi
i wymiany danych za pośrednictwem XML.

Ułatwiona wymiana danych

Tworzenie języków znacznikowych

Samo opisujące się dane

Strukturalnie zintegrowane dane

background image

27

Ułatwiona wymiana danych

Jednym z największych problemów dających się

zaobserwować w środowisku informatycznym jest stałe

zwiększanie się liczby stosowanych formatów danych.

Dawniej wymiana danych między programami nie była

skomplikowana, gdyż dane były zapisywane w postaci

tekstu, dziś jednak konieczne jest stosowanie specjalnych

modułów umożliwiających konwersję danych między

programami.

Stosowane formaty są tak złożone, że zdarza się, że

niektóre wersje programu nie potrafią odczytać danych

tego samego programu w wersjach wcześniejszych.

W XML dane i znaczniki przechowywane są w postaci

tekstu, którego postać można określić. Do tworzenia

dokumentów XML możesz używać edytorów XML, ale jeśli

tylko coś jest nie tak, zawsze można zajrzeć bezpośrednio

do dokumentu.

Dane nie są też kodowane w żaden sposób objęty patentami

czy innymi ograniczeniami, więc są łatwiej dostępne.

background image

28

Ułatwiona wymiana danych

Mogłoby się wydawać, że formaty binarne będą
wydajniejsze, gdyż umożliwiają przechowywanie danych
w bardziej zwartej postaci, ale to nie takie proste.
Na przykład Microsoft doskonale znany jest z tego, że
nawet dość proste dane przechowywane są w wielkich
plikach.

Jeśli zapiszesz w dokumencie MS Word 97 trzy litery „abc”,
możesz być zaskoczony, kiedy się okaże, że dokument ma
około 20 kB. Podobny plik XML miałby 30 lub 40 bajtów.
Nawet duże ilości danych nie zawsze są efektywnie
zapisywane, na przykład Microsoft Excel standardowo
tworzy pliki około pięciokrotnie większe od zawartego
w nich tekstu.

Zobaczymy jeszcze, że XML umożliwia bardzo wydajne
przechowywanie większości typów danych.

background image

29

Tworzenie języków znacznikowych

Jak już wspomniano, stosując XML można tworzyć

specjalizowane języki znacznikowe, co stanowi

o ogromnych jego możliwościach. Jeśli duża grupa ludzi

zgodzi się używać jednego takiego języka, można tworzyć

obsługujące taki język specjalizowane przeglądarki i inne

aplikacje. Powstały już setki takich języków, są między

nimi:

BITS – Język technologii bankowych

IFX – Wymiana danych finansowych

BIPS – Bankowy system płatności internetowych

TIM – Znaczniki wymiany danych telekomunikacyjnych

SIF – Szkielet współpracy międzyszkolnej

CBL – Biblioteka biznesowa

ebXML – XML dla przemysłu elektronicznego

PDML – Znacznikowy język opisu produktów

FIX – Protokół wymiany danych finansowych

TEI – Program kodowania tekstu

background image

30

Tworzenie języków znacznikowych

Niektóre języki znacznikowe, takie jak CML
(Chemiczny język znaczników) umożliwiają graficzną
prezentację złożonych cząsteczek, co pokażemy dalej
w tym rozdziale. Łatwo też sobie wyobrazić, jak
użyteczny dla architektów byłby język potrafiący
pokazać w przeglądarce projekty budynków.

XML umożliwia nie tylko tworzenie nowych języków,
ale także rozszerzanie języków istniejących. Tak
właśnie jest teraz z Rozszerzalnym HTML (XHTML)
– jeśli używasz tego języka do zakodowania stron,
przeglądarka będzie w stanie wyświetlić takie
dokumenty jak zwykły HTML.

background image

31

Samo opisujące się dane

Dokumenty XML same się opisują. Przyjrzyj się poniższemu

fragmentowi:

Opierając się tylko na nazwach nadanych poszczególnym elementom

możemy się domyślić, o co tutaj chodzi: jest to dokument

z pozdrowieniami zawierający dodatkową wiadomość.

Jeśli wrócisz po roku do tego dokumentu, i tak nie będziesz miał

problemu z przypomnieniem sobie jego znaczenia. Oznacza to, że

dokumenty XML w znacznej mierze same się dokumentują (niezależnie

od tego możliwe jest wstawianie do plików XML komentarzy).

<?xml version="1.0" encoding="iso-8859-2"?>
<DOKUMENT>
<POZDROWIENIA>
Witaj w XML
</POZDROWIENIA>
<KOMUNIKAT>
Witaj w pokręconym świecie XML.
</KOMUNIKAT>
</DOKUMENT>

background image

32

Strukturalne zintegrowane dane

Kolejną zaletą XML jest fakt, że możesz określić nie tylko same dane, ale też

ich strukturę i sposób umieszczania jednych elementów w innych.

Jest to ważne szczególnie wtedy, gdy masz do czynienia ze złożonymi,

ważnymi danymi. Można na przykład długą transakcję bankową zapisać

jako HTML, ale w XML można także zapisać reguły semantyczne opisujące

strukturę dokumentu, aby można było sprawdzić poprawność takiego

dokumentu.

<?xml version="1.0" encoding="iso-8859-2"?>
<SZKOŁA>
<WYKŁAD typ="seminarium">
<WYKŁAD_TYTUŁ>XML w zastosowaniach</WYKŁAD_TYTUŁ>
<WYKŁAD_NUMER>6.031</WYKŁAD_NUMER>
<DATA_ROZPOCZĘCIA>6-1-2002</DATA_ROZPOCZĘCIA>
<STUDENCI>
<STUDENT status="słuchacz">
<IMIĘ>Edward</IMIĘ>
<NAZWISKO>Samson</NAZWISKO>
</STUDENT>
<STUDENT status="zawieszony">
<IMIĘ>Emilia</IMIĘ>
<NAZWISKO>Kowalska</NAZWISKO>
</STUDENT>
</STUDENCI>
</WYKŁAD>
</SZKOŁA>

background image

33

Strukturalne zintegrowane dane

Opisano seminarium w XML oraz dwóch studentów nań

uczestniczących. W XML można na przykład nakazać, aby każdy

element <STUDENT> zawierał dokładnie jeden element <IMIĘ>

i jeden <NAZWISKO>, aby nie zawierał elementu

<DATA_ROZPOCZĘCIA> i tak dalej.

W XML na poprawność dokumentów kładziony jest duży nacisk.

W HTML autor witryny często pisze byle jak, gdyż wie, że przeglądarka

i tak sobie poradzi z błędami składniowymi. Niektórzy posuwają się

nawet do wykorzystywania błędów do uzyskania efektów specjalnych

w niektórych przeglądarkach. Szacuje się, że obecnie co najmniej

połowa kodu przeglądarek służy właśnie do obsługi błędnie zapisanego

HTML.

XML pod tym względem jest całkiem inny: przeglądarka dokument

XML musi sprawdzić, a jeśli są w nim jakieś błędy, nie powinna go dalej

już przetwarzać. Powinna zgłosić znaleziony błąd, ale to wszystko.

Jak zatem przeglądarka ma sprawdzić dokument? Przeglądarki XML

przeprowadzają dwie kontrole: pierwsza polega na sprawdzeniu, czy

dokument jest poprawnie sformułowany, druga kontrola nazywana jest

walidacją.

background image

34

Dokumenty XML poprawnie sformuowane

składniowe stawiane przez utworzoną przez W3C
specyfikację XML 1.0 (znajdziesz ją pod adresem
www.w3.org/TR/REC-xml, zajmiemy się nią dokładniej
w następnym rozdziale).

Tak najprościej mówiąc poprawność sformułowania oznacza
istnienie co najmniej jednego elementu w dokumencie oraz
istnienie takiego elementu (nazywanego głównym), który
zawiera wszystkie inne elementy występujące
w dokumencie.

Każdy element musi być całkowicie zamknięty w elementach
nadrzędnych względem niego.

Na przykład poniższy dokument nie jest poprawnie
sformułowany, gdyż znacznik końcowy </POZDROWIENIA>
znajduje się już po znaczniku otwierającym następnego
elementu, <KOMUNIKAT>:

background image

35

Walidacja dokumentów XML

Większość przeglądarek sprawdza, czy dokumenty są
poprawnie sformułowane, niektóre natomiast
przeprowadzają jeszcze walidację. Dokument XML można
walidować, jeśli związana jest z nim definicja typu
dokumentu (DTD) i kiedy dokument jest z nią zgodny.

DTD dokumentu określa jego prawidłową składnię. DTD
mogą być przechowywane w osobnym pliku lub w samym
dokumencie, w elemencie <!DOCTYPE>. Oto przykład,
w którym do naszego dokumentu z pozdrowieniami dodano
<!DOCTYPE>:

Tak naprawdę DOCTYPE nie jest elementem, w ogóle
deklaracje DTD nie są zapisane w XML – jest to odrębny
język. Innym sposobem opisu wymaganej postaci dokumentu
są schematy XML, które są zapisane już w XML. Schematy
XML dokładniej omówione zostaną później

background image

36

Walidacja dokumentów XML

<?xml version="1.0" encoding="iso-8859-2"?>
<?xml-stylesheet type="text/css" href="first.css"?>
<!DOCTYPE DOKUMENT [
<!ELEMENT DOKUMENT (POZDROWIENIA, KOMUNIKAT)>
<!ELEMENT POZDROWIENIA (#PCDATA)>
<!ELEMENT KOMUNIKAT (#PCDATA)>
]>
<DOKUMENT>
<POZDROWIENIA>
Witaj w XML
</POZDROWIENIA>
<KOMUNIKAT>
Witaj w pokręconym świecie XML.
</KOMUNIKAT>
</DOKUMENT>

background image

37

Zasoby XML

www.w3c.org/xml. Główna strona XML w W3C, stąd zaczyna

się zwykle szukać czegokolwiek.

www.w3c.org/XML/1999/XML-in-10-points. „XML w dziesięciu

punktach” (choć obecnie punktów tych jest tylko siedem),

skrócone kompendium wiedzy.

www.w3c.org/TR/REC-xml. Oficjalna rekomendacja XML 1.0,

bieżącej (i jedynej) wersji. Dokument jest trudny do czytania

i właśnie ta książka ma Ci przybliżyć jego treść.

www.w3c.org/TR/xml-stylesheet/. Wszystko o użyciu arkuszy

stylów i XML.

www.w3c.org/TR/REC-xml-names/. Wszystko o przestrzeniach

nazw XML(ang. namespaces).

www.w3c.org/Style/XSL/. Wszystko o Rozszerzalnym języku

stylów, XSL.

background image

38

Zasoby XML

www.w3c.org/TR/xslt. Wszystko o przekształceniach XSL
(XSLT).

www.w3c.org/XML/Activity.html. Omówienie prac
nad XML obecnie prowadzonych w W3C.

www.w3c.org/TR/xmlschema-0/,
www.w3c.org/TR/xmlschema-1/ oraz
www.w3c.org/TR/xmlschema-2. Omówienie schematów
XML, alternatywy dla DTD.

www.w3c.org/TR/xlink/. Specyfikacja XLink.

www.w3c.org/xptr. Specyfikacja XPointer.

www.w3c.org/xhtml1/. Specyfikacja XHTML 1.0.

www.w3c.org/xhtml11/. Specyfikacja XHTML 1.1.

www.w3c.org/DOM/. Obiektowy model dokumentu (DOM).

background image

39

Edytory XML

Adobe FrameMaker, www.adobe.com. Program doskonale

radzi sobie z XML, ale jest drogi.

XML Pro, www.vervet.com/. Drogi edytor XML, lecz

o dużych możliwościach.

XML Writer, http://xmlwriter.net/. Wyróżnianie składni

kolorami, ładny interfejs.

XML Notepad, msdn.microsoft.com/xml/notepad/intro.asp.

Darmowy edytor XML Microsoftu, dość trudny w użyciu.

eNotepad,

www.edisys.com/Products/eNotepad/enotepad.asp. Może

być użyty zamiast Notatnika, nieźle radzi sobie z XML i ma

przyjazny interfejs.

XMetal SoftQuad, xmetal.com. Drogi edytor, ale o dużych

możliwościach. Często używany.

XML Spy. www.xmlspy.com/. Dobry i łatwy w użyciu

interfejs użytkownika.

PHP Designer 2007 darmowy uniwersalny edytor

background image

40

Przeglądarki XML

Stworzenie prawdziwej przeglądarki XML

nie jest proste. Trzeba obsłużyć nie tylko XML,

ale jeszcze jakiś język stylów, jak CSS czy XSL.

Konieczne jest też obsłużenie jakiegoś języka

skryptowego, na przykład JavaScriptu. Są to

duże wymagania, więc przeglądarki XML nadal

są nieliczne. Tak naprawdę nie istnieje obecnie

przeglądarka w pełni obsługująca XML. Żadna

z poniższych przeglądarek nie waliduje

dokumentów, jedynie sprawdza poprawność

sformułowania.

Niektórym przeglądarkom jednak niewiele już

brakuje do zrealizowania walidacji.

background image

41

Parsery XML

Parsery XML to pakiety oprogramowania, które mogą być
używane jako część aplikacji takich, jak Oracle 8i (gdzie
XML obsługiwany jest naprawdę dobrze) lub jako część
Twoich własnych programów. N

a przykład dalej w tej książce używać będziemy parsera IBM
AlphaWorks XML for Java (XML4J). Został on napisany
w Javie i świetnie nadaje się do łączenia z innym kodem Javy.

Parsery rozbijają dokument na składniki i udostępniają te
składniki innym fragmentom programu. Niektóre parsery
sprawdzają poprawność sformułowania, nieliczne także
walidują dokumenty.

Jeśli jednak chcesz sprawdzić tylko, czy dokument XML jest
poprawnie sformułowany i czy można go walidować,
nie potrzebujesz żadnych dodatkowych programów –
wystarczy użyć walidatora XML.

background image

42

Parsery XML

SAX: The Simple API for XML. Jego autorem jest David Megginson

(www.megginson.com/SAX/index.html). SAX jest popularnym parserem

działającym na podstawie obsługi zdarzeń. W tej książce będziemy go

używać.

expat. Słynny parser XML napisany w języku C przez Jamesa Clarka

(www.jclark.com/xml/expat.html). Parser ten używany jest w Netscape

Navigatorze 6 oraz w module Perla XML::Parser.

expat w postaci modułu Perla. Modułem XML::Parser opiekuje się Clark

Cooper (ftp://ftp.perl.org/pub/CPAN/modules/by-module/XML/).

TclExpat. Parser expat zapisany przez Steve’a Balla z myślą o użyciu

w języku Tcl. Zastępowany przez TclXML (www.zveno.com/zm.cgi/in-

tclxml).

LT XML. Jest to pakiet dla projektantów XML pochodzący z Uniwersytetu

w Edynburgu, z Language Technology Group

(www.ltg.ed.ac.uk/software/xml/).

XML for Java (XML4J). Autorstwa IBM AlphaWorks

(www.alphaworks.ibm.com/tech/xml4j), znany i szeroko stosowany parser

XML zgodny z wytycznymi W3C.

XML Microsoft’s validating XML processor. Parser ten, aby w pełni

działać, potrzebuje programu Internet Explorer 4.01 SP1 lub nowszego.

Można go znaleźć wraz z innymi narzędziami, przykładami, podręcznikami

i dokumentacją pod adresem msdn.microsoft.com/xml/default.asp.

background image

43

Parsery XML

Lark. Napisany w Javie procesor bez walidacji autorstwa Tima Braya

(www.textuality.com/Lark/), jeden z najbardziej znanych, przez długi czas

był intensywnie wykorzystywany.

XP. Procesor bez walidacji napisany przez Jamesa Clarka w Javie

(www.jclark.com/xml/xp/index.html).

Python and XML Processing Preliminary XML Parser. Umożliwia obsługę

XML w języku programowania Python (www.python.org/topics/xml/).

TclXML. Parser XML napisany w języku Tcl przez Steve’a Balla

(www.zveno.com/zm.cgi/in-tclxml/).

XML Testbed. Parser autorstwa Steve’a Withalla

(www.w3.org/XML/1998/08withall/).

SXP (Silfide XML Parser). Kolejny szeroko znany parser XML, pełny

interfejs API do XML w Javie (www.loria.fr/projets/XSilfide/EN/sxp/).

The Microsoft XML Parser. Parser używany w Internet Explorerze

zrealizowany został jako komponent COM, dostępny jest pod adresem

www.msdn.microsoft.com/dowlnoads/tools/xmlparser/xmlparser.asp.

OmniMark 5 Programming Language. Zawiera wbudowaną obsługę

parsowania i walidacji XML (www.omnimark.com).

Java Standard Extension for XML. Z uwagi na to, że XML i Java firmy Sun

Microsystems są ze sobą tak często łączone, Sun proponuje własny pakiet

Javy do XML (java.sun.com/products/xml/).

background image

44

Walidatory XML

Skąd wiadomo, czy dokument jest poprawnie
sformułowany i czy można go walidować?
Jedną z metod sprawdzenia tego jest użycie
walidatora XML, a jest tu z czego wybierać.
Walidatory to pakiety sprawdzające XML
i dające informację zwrotną.

Na przykład jeśli masz zainstalowany parser
XML for Java, możesz użyć przykładu
DOMWriter jako walidatora XML.

background image

45

Walidatory XML

W3C XML Validator, validator.w3.org/. Oficjalny walidator W3C

HTML. Oficjalnie przeznaczony jest on dla HTML, ale zawiera

też częściową obsługę XML. Aby tego walidatora użyć, badany

dokument musi być widoczny w Sieci.

Tidy, www.w3.org/People/Raggett/tidy/. Tidy to bardzo lubiane

narzędzie służące czyszczenia i poprawiania stron sieciowych,

zawiera ograniczoną obsługę XML. Aby z tego walidatora

skorzystać, dokument XML musi być widoczny w Sieci.

www.xml.com/xml/pub/tools/ruwf/check.html. Walidator

pochodzący od XML.com oparty na procesorze Lark. Dokument

XML musi być widoczny w Sieci.

www.ltg.ed.ac.uk/~richard/xml-check.html. Walidator

utworzony na Uniwersytecie w Edynburgu, oparty na parserze

RXP. Dokument musi być widoczny w Sieci.

www.stg.brown.edu/service/xmlvalid/. Doskonały walidator

XML z Uniwersytetu Browna. Jest to jedyny walidator działający

online, który może sprawdzać dokumenty niewidoczne w Sieci.

Można użyć kontrolki wyboru pliku dostępnej na stronie,

wskazać w niej sprawdzany plik i go sprawdzić.

background image

46

CSS i XSL

Arkusze stylów stale nabierają znaczenia także w przypadku

HTML, gdyż w specyfikacji HTML 4 wiele wbudowanych

dotąd możliwości, takich jak znacznik <CENTER>, uznano

za przestarzałe i przeznaczone do zastąpienia właśnie

przez użycie arkuszy stylów. Jednak większość kodu HTML

całkowicie pomija istnienie arkuszy stylów.

W przypadku XML mamy do czynienia z całkiem inną

sytuacją, gdyż tworzymy własne elementy. Jeśli zatem

przeglądarka ma je wyświetlić, trzeba ją poinformować, jak

ma to zrobić. To jednocześnie dobrze i źle: dobrze, bo

możesz wygląd dokumentu dostosować do potrzeb

za pomocą CSS i XSL robiąc to znacznie dokładniej niż

w HTML.

Źle, bo wymaga to dodatkowej pracy. Jednym ze sposobów

poradzenia sobie z tym jest użycie powszechnie stosowanego

języka stylów posiadającego już gotowe arkusze stylów.

background image

47

CSS i XSL

Krótko mówiąc w XML definiuje się strukturę

i semantykę dokumentu, a nie jego postać

wizualną. Jeśli XML ma być bezpośrednio

wyświetlany, można albo użyć domyślnej postaci

Internet Explorera, albo użyć arkusza stylów

w celu uzyskania wyglądu niestandardowego.

Do określenia wyglądu dokumentu XML można

użyć dwóch narzędzi: arkuszy CSS lub XSL.

Standard CSS używany jest z HTML i obsługiwany

jest przez liczne narzędzia.

Za jego pomocą można określić formatowanie

poszczególnych elementów, stworzyć klasy stylów,

definiować czcionki, wybierać kolory, a nawet

określać rozmieszczenie elementów na stronie.

background image

48

CSS i XSL

Z kolei XSL jest zdecydowanie lepszy do obsługi XML, gdyż

jest znacznie silniejszym narzędziem (zresztą same arkusze

XSL są poprawnie sformułowanymi dokumentami XML).

Dokumenty XSL składają się z reguł dotyczących

dokumentów XML. Jeśli wzorzec reguły XSL pasuje

do elementu XML, reguła ta przekształca dopasowany

fragment kodu na coś innego. W ten sposób można nawet

przekształcić kod XML na HTML.

O ile CSS umożliwia jedynie formatowanie elementów

i zmianę ich położenia, to XSL umożliwia zmianę kolejności

elementów, podmianę tych elementów, wyświetlanie

jednych elementów i ukrywanie innych, wybieranie stylu

w zależności nie tylko od samego elementu, ale też od jego

atrybutów (elementy XML, podobnie jak elementy HTML,

mogą mieć atrybuty, zajmiemy się nimi w następnym

rozdziale), wybierać elementy w zależności od ich położenia

i tak dalej. XSL składa się z dwóch części: przekształceń

XSL i obiektów formatujących XSL.

background image

49

CSS i XSL

Sporo informacji o arkuszach stylów możesz
znaleźć w Sieci:

www.w3.org/Style/CSS/. Strona W3C o CSS.

www.w3.org/TR/REC-CSS1. Specyfikacja CSS1
na stronach W3C.

www.w3.org/TR/REC-CSS2. Specyfikacja CSS2
na stronach W3C.

www.w3.org/Style/XSL. Strona W3C o XSL.

background image

50

Czym jest poprawnie sformułowany dokument
XML?

W3C nazywa poszczególne specyfikacje szkicu roboczego lub

rekomendacji definicjami. W tym wypadku, aby być poprawnie

sformułowanym, dokument musi być zgodny z definicją dokumentu,

co oznacza, że sam dokument musi mieć trzy części: prolog (może

być pusty), element główny i opcjonalną część końcową.

Prolog, który wkrótce będzie omawiany, może i powinien zawierać

deklarację XML (<?xml version="1.0"?>) oraz opcjonalną część

końcową zawierającą komentarze, instrukcje przetwarzania i tak

dalej. Element główny dokumentu zawierać może inne elementy –

trudno zresztą wyobrazić sobie użyteczny dokument XML, w którym

element główny nie zawiera już żadnych innych elementów.

Poprawnie sformułowany dokument zawiera zawsze dokładnie jeden

element główny, wszystkie inne elementy muszą być w elemencie

głównym zawarte (nie dotyczy to oczywiście prologu, gdyż instrukcje

przetwarzania czy komentarze nie są elementami).

Część końcowa zawierać może komentarze, instrukcje przetwarzania

i białe znaki (spacje, tabulatory i tak dalej). Dalej zajmiemy się

dokładniej prologiem, elementem głównym i częścią końcową.

<?xml version="1.0" encoding="iso-8859-2"?> - tak powinien

wyglądać nagłówek dla dokumentów zawierających polskie znaki

diakrytyczne

background image

51

Budujemy dokument XML

Zaczynamy od deklaracji

Następnie dodajemy dokument główny

<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>
<DOKUMENT>
.
.
.
</DOKUMENT>

background image

52

Budujemy dokument XML

Element główny może oczywiście zawierać inne elementy.
Dodamy na razie dwa elementy opisujące klientów:

<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>
<DOKUMENT>
<KLIENT>
.
</KLIENT>
<KLIENT>
.

</KLIENT>
</DOKUMENT>

background image

53

Budujemy dokument XML

Będziemy zapisywać nazwiska klientów – w elemencie
IMIĘNAZWISKO umieścimy elementy NAZWISKO i IMIĘ

<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>
<DOKUMENT>
<KLIENT>
<IMIĘNAZWISKO>
<NAZWISKO>Smith</NAZWISKO>
<IMIĘ>Sam</IMIĘ>
</IMIĘNAZWISKO>
.
.
.
</KLIENT>
<KLIENT>
</DOKUMENT>

background image

54

Budujemy dokument XML

Szczegóły dotyczące zamówień klientów umieścimy
w elementach DATA oraz ZAMÓWIENIA

:

<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>
<DOKUMENT>
<KLIENT>
<IMIĘNAZWISKO>
<NAZWISKO>Smith</NAZWISKO>
<IMIĘ>Sam</IMIĘ>
</IMIĘNAZWISKO>
<DATA>15 października 2001</DATA>
<ZAMÓWIENIA>
.

</ZAMÓWIENIA>

.

</KLIENT>

</DOKUMENT>

background image

55

Budujemy dokument XML

Z kolei każdy zakup opisywać będziemy w elemencie POZYCJA,
który z kolei rozbity będzie na elementy PRODUKT, ILOŚĆ i CENA:

<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>
<DOKUMENT>
<KLIENT>
<IMIĘNAZWISKO>
<NAZWISKO>Smith</NAZWISKO>
<IMIĘ>Sam</IMIĘ>
</IMIĘNAZWISKO>
<DATA>15 października 2001</DATA>
<ZAMÓWIENIA>
<POZYCJA>
<PRODUKT>Pomidory</PRODUKT>
<ILOŚĆ>8</ILOŚĆ>
<CENA>5zł</CENA>
</POZYCJA>
<POZYCJA>

</POZYCJA>

</ZAMÓWIENIA>

</KLIENT>

</DOKUMENT>

background image

56

Budujemy dokument XML

Tego typu dokumenty mogą być bardzo długie
i mogą zawierać wiele poziomów zagnieżdżenia
elementów. Obsługa takich dokumentów nie stanowi
dla procesora XML problemu, byle tylko dokument
był poprawnie sformułowany (a w przypadku
parsera walidującego także dał się walidować).

Teraz możemy już nasz dokument rozebrać
na kawałeczki. Zaczniemy od podstaw i przerobimy
prolog, element główny, elementy zawarte
wewnątrz i tak dalej..

Upraszczając rzecz jak najbardziej dokument XML
traktować można jako połączenie znaczników
danych znakowych. Zaczniemy od tego właśnie
podziału.

background image

57

Znaczniki i dane znakowe

Dokumenty XML składają się ze znaczników i danych
znakowych. Być może kiedyś dane binarne też znajdą się
w dokumentach XML, ale na razie nie jest to potrzebne.

Na razie można odwoływać się do zewnętrznych danych
binarnych przez odwołania do encji, co omówimy później.

Znaczniki w dokumencie określają jego strukturę.
Znaczniki to znaczniki początkowe, końcowe, znaczniki
elementów pustych, odwołania do encji, odwołania
do encji znakowych, komentarze, ograniczniki sekcji
CDATA (o tym wkrótce), deklaracje typu dokumentu
i instrukcje przetwarzania.

Czym są zatem dane znakowe w dokumencie XML? Są to
po prostu wszystkie napisy nie będące znacznikami.

background image

58

Znaczniki i dane znakowe

Znacznik zaczyna się znakiem <, kończy się znakiem >, więc

łatwo zauważyć, że występują tutaj znaczniki <?xml

version="1.0" encoding="iso-8859-2"?>, <DOKUMENT> i tak

dalej.

Z kolei napisy Witaj w XML oraz Witaj w pokręconym świecie

XML. są danymi znakowymi.

Jednak znaczniki nie muszą być zawarte między znakami <

i >, ale mogą zaczynać się od & i kończyć się ; – są to

odwołania do encji ogólnych (odwołania takie podczas

parsowania są zamieniane na treść odpowiadających im encji),

mogą zaczynać się od % i kończyć ; – są to odwołania do encji

parametrycznych używanych w DTD.

Używając odwołań do encji można spowodować, że niektóre

znaczniki staną się podczas przetwarzania dokumentu

zwykłymi danymi znakowymi.

Na przykład znacznik &gt; to odwołanie do encji ogólnej, które

podczas parsowania dokumentu zostanie zamienione na znak

>, natomiast znacznik &lt; zamieniony zostanie na znak <.

background image

59

Białe znaki

Jeśli zastanawiasz się, jakich znaków można używać
w dokumentach XML, odpowiedź znajdziesz w samej
specyfikacji XML 1.0 przy definicji o nazwie Char.

Warto zwrócić uwagę na to, że w XML spacje, znaki końca
wiersza i powrotu karetki oraz tabulatory uważane są w XML
za białe znaki. Przyjrzyjmy się takiemu oto dokumentowi:

<?xml version="1.0" encoding="iso-8859-2"?>
<DOKUMENT>
<POZDROWIENIA>
Witaj w XML
<KOMUNIKAT>
</POZDROWIENIA>
Witaj w pokręconym świecie XML.
</KOMUNIKAT>
</DOKUMENT>

background image

60

Białe znaki

Dokument ten równoważny jest dokumentowi
następującemu:

<?xml version="1.0" encoding="iso-8859-2"?>
<DOKUMENT><POZDROWIENIA>Witaj w XML</POZDROWIENIA>
<KOMUNIKAT>Witaj w pokręconym świecie XML.</KOMUNIKAT></DOKUMENT>

background image

61

Białe znaki

Warto też zauważyć, że w rekomendacji XML zaleca się
kończenie wierszy zgodnie z konwencją obowiązującą
w systemie UNIX, czyli umieszczanie na końcu wiersza
jedynie znaku nowego wiersza (kod ASCII 10), podczas gdy
w systemie DOS na koniec wiersza dodaje się znaki powrotu
karetki i dopiero nowego wiersza (kody ASCII 13 i 10) mimo,
że w trakcie analizy takich dokumentów traktuje się te pliki
tak, jakby na końcu miały jedynie pojedynczy znak nowego
wiersza.

W elemencie można użyć atrybutu xml:space, który nakazuje
zachowanie w danym dokumencie odstępu znaków (jeśli
zamierzasz użyć tego atrybutu w dokumencie posiadającym
DTD, musisz go zadeklarować).

Jeśli odpowiada Ci domyślny sposób traktowania odstępów,
możesz atrybutowi temu nadać wartość default, natomiast
jeśli chcesz wszystkie spacje w dokumencie zachować
bez zmian, atrybut ten powinien mieć wartość preserve.

background image

62

Prolog

Prolog znajduje się na samym początku
dokumentu XML. Jeśli dokument ma być
poprawnie sformułowany, nie musi mieć
prologu. Jednak rekomendacja W3C zaleca
włączenie przynajmniej deklaracji XML,
w której podana jest stosowana wersja XML.
Prolog zawiera deklarację XML, komentarze,
instrukcje przetwarzania, białe znaki
i deklarację (lub deklaracje) typu dokumentu.

Na następnym slajdzie prolog dokumentu
zawierający deklarację XML, instrukcję
przetwarzania oraz DTD:

background image

63

Prolog

<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>
<?xml-stylesheet type="text.css" href="greeting.css"?>
<!DOCTYPE DOKUMENT [
<!ELEMENT DOKUMENT (KLIENT)*>
<!ELEMENT KLIENT (IMIĘNAZWISKO,DATA,ZAMÓWIENIA)>
<!ELEMENT IMIĘNAZWISKO (NAZWISKO,IMIĘ)>
<!ELEMENT NAZWISKO (#PCDATA)>
<!ELEMENT IMIĘ (#PCDATA)>
<!ELEMENT DATA (#PCDATA)>
<!ELEMENT ZAMÓWIENIA (POZYCJA)*>
<!ELEMENT POZYCJA (PRODUKT,ILOŚĆ,CENA)>
<!ELEMENT PRODUKT (#PCDATA)>
<!ELEMENT ILOŚĆ (#PCDATA)>
<!ELEMENT CENA (#PCDATA)>
]>
<DOKUMENT>
<KLIENT>
<IMIĘNAZWISKO>
<NAZWISKO>Smith</NAZWISKO>
<IMIĘ>Sam</IMIĘ>
</IMIĘNAZWISKO>
.
.

background image

64

Deklaracja XML

Dokument XML może (a zgodnie z wytycznymi
W3C powinien) zaczynać się od deklaracji XML,
która ma poinformować, że dokument w XML jest
napisany.

Jeśli używasz deklaracji XML, powinna się ona
znaleźć w pierwszym wierszu i nie powinno się nic
przed nią pojawić.

<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>

background image

65

Deklaracja XML

W deklaracji XML użyć można trzech atrybutów:

version. Używana wersja XML; obecnie może to być
tylko 1.0. Jeśli podaje się deklarację XML, atrybut ten
jest obowiązkowy.

encoding. Sposób kodowania znaków w dokumencie.
Jak to omówiono w rozdziale 1, ustawieniem domyślnym
jest UTF‑8. Można też użyć Unicode, UCS‑2 lub UCS‑4
oraz wielu innych zestawów znaków, przede wszystkim
zestawów ISO. Atrybut ten jest opcjonalny.

standalone. Jeśli ma wartość yes, dokument
nie odwołuje się do encji zewnętrznych; w przeciwnym
wypadku ma wartość no. Jest to atrybut opcjonalny.

background image

66

Komentarze

Komentarze XML są bardzo podobne do komentarzy HTML.

W komentarzach umieszczać można dodatkowe objaśnienia

dotyczące dokumentu, które są ignorowane przez parser

XML.

Komentarze mogą pojawiać się w dowolnym miejscu

dokumentu, byle na zewnątrz wszystkich znaczników. Tak jak

w HTML, komentarze zaczyna się od <!--, kończy -->.

<?xml version="1.0" encoding="iso-8859-2"?>
<DOKUMENT>
<!--Zaczynamy dokument poza elementem POZDROWIENIA.-->
<POZDROWIENIA>
<!--Tutaj będzie tekst pozdrowień.-->
Witaj w XML
</POZDROWIENIA>
</DOKUMENT>

background image

67

Instrukcje przetwarzania

Instrukcje przetwarzania – zgodnie ze swoją nazwą

– to instrukcje dla procesora XML. Zaczynają się

od <? i kończą ?>.

Jedynym ograniczeniem jest niemożność

stosowania zarezerwowanych nazw instrukcji <?

xml?> ani <?XML?>.

Instrukcje przetwarzania są przeznaczone

dla procesora XML, więc są różne dla różnych

procesorów, nie wchodzą w skład specyfikacji XML.

Bardzo powszechnie stosowaną i zwykle rozumianą

instrukcją przetwarzania jest <?xml-stylesheet?>

łącząca dokument XML z arkuszem stylów

(oczywiście ona także nie należy do rekomendacji

XML 1.0).

background image

68

Instrukcje przetwarzania

<?xml version="1.0" encoding="iso-8859-2"?>
<?xml-stylesheet type="text/css" href="greeting.css"?>
<DOKUMENT>
<POZDROWIENIA>
Witaj w XML
</POZDROWIENIA>
<KOMUNIKAT>
Witaj w pokręconym świecie XML.
</KOMUNIKAT>
</DOKUMENT>

background image

69

Znaczniki elementów

Strukturę dokumentu XML określa się za pomocą
znaczników wyznaczających elementy.

Element XML składa się ze znacznika początkowego
oraz znacznika końcowego oraz treści, czyli tego, co
się między tymi znacznikami znajduje.

Wyjątkiem są elementy puste, które mogą składać
się tylko z jednego znacznika o specyficznej
konstrukcji.

Znacznik początkowy (czasem nazywany także
znacznikiem otwierającym) zaczyna się od <
i kończy >.

Znacznik końcowy (czasem nazywany zamykającym)
zaczyna się od </ i kończy >.

background image

70

Nazwy elementów

Specyfikacja XML bardzo dokładnie określa, jak
mają wyglądać nazwy elementów: muszą
zaczynać się od litery, podkreślenia lub
dwukropka. Dalej mogą się znajdować litery,
cyfry, podkreślenia, kreski (myślniki), kropki
i średniki, nie mogą natomiast pojawić się
żadne białe znaki.

Należy unikać dwukropków w nazwach, gdyż
przyjęto za ich pomocą oznaczać przestrzenie
nazw

co prawda w rekomendacji XML 1.0 takiego
zalecenia nie znajdziemy

background image

71

Elementy puste

Elementy puste mają jeden tylko znacznik,

nie mają zwykłych znaczników początkowego

i końcowego. Elementy puste zapewne dobrze Ci

są znane z HTML, przykładami są choćby

znaczniki <IMG>, <LI>, <HR> i <BR>. Są one

puste, czyli nie zawierają żadnej treści (danych

znakowych ani innych znaczników).

Elementom pustym odpowiada jeden tylko

znacznik. W HTML po prostu nie podaje się

znacznika końcowego, w XML element trzeba

zadeklarować jako pusty. W takim wypadku

znacznik takiego elementu można od razu

zakończyć nie >, lecz /> – wtedy znacznik

końcowy jest zbędny.

background image

72

Element główny

Poprawnie sformułowany dokument XML musi
zawierać jeden element, który będzie zawierał
wszystkie inne elementy – jest to element
główny
.

Element ten jest w dokumentach XML bardzo
ważny, szczególnie z punktu widzenia
programisty, gdyż parsowanie zawsze zaczyna
się od tego właśnie elementu.

W pliku order.xml, który tworzyliśmy
na wykładu, elementem głównym jest
DOKUMENT (ale element główny może się
dowolnie nazywać):

background image

73

Element główny

<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>
<DOKUMENT>
<KLIENT>
<IMIĘNAZWISKO>
<NAZWISKO>Smith</NAZWISKO>
<IMIĘ>Sam</IMIĘ>
</IMIĘNAZWISKO>
<DATA>15 października 2001</DATA>
<ZAMÓWIENIA>
<POZYCJA>
<PRODUKT>Pomidory</PRODUKT>
<ILOŚĆ>8</ILOŚĆ>
<CENA>5zł</CENA>
</POZYCJA>
.
.
.
<POZYCJA>
<PRODUKT>Sałata</PRODUKT>
<ILOŚĆ>6</ILOŚĆ>
<CENA>31.50zł</CENA>
</POZYCJA>
</ZAMÓWIENIA>
</KLIENT>
</DOKUMENT>

background image

74

Atrybuty

Atrybuty XML są bardzo podobne
do atrybutów HTML – są to pary nazw
i wartości umożliwiające wstawianie
dodatkowych informacji w znacznikach
początkowym i elementu pustego.

Aby przypisać atrybutowi wartość, używa się
znaku równości.

Na przykład poniżej każdemu elementowi
KLIENT dodajemy atrybut STATUS, w którym
opisujemy klienta jako kredytobiorcę:

background image

75

Atrybuty

<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>
<DOKUMENT>
<KLIENT STATUS="Rzetelny kredytobiorca">
<IMIĘNAZWISKO>
<NAZWISKO>Smith</NAZWISKO>
<IMIĘ>Sam</IMIĘ>
</IMIĘNAZWISKO>
<DATA>15 października 2001</DATA>
<ZAMÓWIENIA>
<POZYCJA>
<PRODUKT>Pomidory</PRODUKT>
<ILOŚĆ>8</ILOŚĆ>
<CENA>5zł</CENA>
</POZYCJA>
<POZYCJA>
<PRODUKT>Pomarańcze</PRODUKT>
<ILOŚĆ>24</ILOŚĆ>
<CENA>9.98zł</CENA>
</POZYCJA>
</ZAMÓWIENIA>
</KLIENT>

.
.
.


</DOKUMENT>

background image

76

Nazwy atrybutów

Zgodnie ze specyfikacją XML 1.0 nazwy atrybutów podlegają tym

samym regułom, które dotyczą nazw elementów, zatem atrybut

zaczynać się może od litery, podkreślenia lub dwukropka, dalej

mogą być litery, cyfry, podkreślenia, kreski (myślniki), kropki

i dwukropki, nie mogą za to wystąpić białe znaki.

Przyjrzyjmy się poniższym przykładom elementów

z prawidłowymi atrybutami:

<koło środek_x="10.0" środek_y="20.0" promień="10.0"/>
<obrazek src="obrazek1.jpg">
<pisak kolor="czerwony" szerokość="5">
<książka stron="1231">

background image

77

Wartości atrybutów

Znaczniki zawsze są tekstem, więc i wartości atrybutów są
tekstem. Nawet jeśli atrybutowi przypiszesz liczbę, liczba ta
będzie traktowana jako napis, który należy podawać
w cudzysłowie: <koło środek_x="10.0" środek_y="20.0"
promień="10.0"/>

W XML wartości atrybutów ujmować trzeba w cudzysłowy.
Zwykle używa się cudzysłowów podwójnych, ale jeśli sam
atrybut zawierałby cudzysłów, to procesor XML nie wiedziałby,
gdzie się tekst kończy. W takim wypadku cały tekst można objąć
pojedynczym cudzysłowem: <cytat tekst='"Nie tak!"-
powiedział'/>

A co zrobić, jeśli atrybut zawiera zarówno pojedynczy, jak
i podwójny cudzysłów? W takim wypadku używa się
predefiniowanej encji znakowej &apos; do zastąpienia
cudzysłowu pojedynczego lub &quot; zamiast cudzysłowu
podwójnego (same encje będą omówione później). Aby zatem
zapisać wartość atrybutu 1'=stopa, 1"=cal, piszemy:<jednostki
usa="1&apos;=stopa, 1&quot;=cal"/>


Document Outline


Wyszukiwarka

Podobne podstrony:
02 OperowanieDanymiid 3913 ppt
02 3id 3357 ppt
02 6id 3367 ppt
02 wyklad3id 3850 ppt
(w7) EDI ,SGML, XMLid 1454 ppt
02 2id 3352 ppt
11W sObligacje skarbowe 01 02 2008id 13126 ppt
02 MAKROEKONOMIAid 3667 ppt
01 Inwestycje Biz portferowe kryzysy 17 02 081id 2825 ppt
02 Urządzenia sterowe ppt
02 4id 3361 ppt
02 JakoscWProcesieid 3637 ppt
02 3696id 3556 ppt
02 Grawimetriaid 3907 ppt
02 Nerkiid 3685 ppt
02 wyklad1id 3845 ppt

więcej podobnych podstron