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