r01 03 (10)


Rozdział 1.
XML w pigułce

Witaj w świecie Rozszerzalnego języka znaczników, XML. Książka ta jest przewodnikiem po tym świecie, więc na pewno dobrze trafiłeś. Świat XML jest ogromny i stale się rozrasta w nieznanych kierunkach, ale zapoznamy się przynajmniej z jakąś częścią wiedzy na ten temat. A jest co badać, bo XML staje się jednym z najbardziej zadziwiających światów.

XML jest językiem utworzonym przez World Wide Web Consortium (W3C, http://www.w3c.org), organ ustawodawczy Sieci. W pierwszym rozdziale przedstawimy język XML i sposób jego użycia. Zapewne wiesz już, że 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ęstokroć po prostu pewnych znaczników brakowało. Tak naprawdę XML jest metajęzykiem znaczników, gdyż pozwala tworzyć nowe języki znacznikowe.

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

Wyniki interpretacji tego pliku w przeglądarce Netscape Navigator obejrzeć możesz na rysunku 1.1. Zwróć uwagę, że znaczniki HTML umieszczone w tej stronie - <HEAD>, <CENTER>, <H1> i tak dalej - służą tylko po to, aby poinstruować przeglądarkę, co ma zrobić. I do tego właśnie używa się znaczników: wskazują sposób interpretacji treści dokumentu.

Rysunek 1.1.

Strona HTML w przeglądarce

0x01 graphic

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.

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. Poniższy przykład to dokument zawierający podkreślone i pogrubione litery „abc” zapisane w programie Microsoft Word. Spróbuj odnaleźć sam tekst (wskazówka: jest przy samym końcu dokumentu).

{\rtf1\ansi\ansicpg1250\uc1 \deff0\deflang1033\deflangfe1045{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f126\froman\fcharset238\fprq2 Times New Roman CE;}{\f127\froman\fcharset204\fprq2 Times New Roman Cyr;}

{\f129\froman\fcharset161\fprq2 Times New Roman Greek;}{\f130\froman\fcharset162\fprq2 Times New Roman Tur;}{\f131\froman\fcharset186\fprq2 Times New Roman Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;

\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;

\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\nowidctlpar\widctlpar\adjustright \lang1045\cgrid \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{\s15\nowidctlpar\widctlpar\outlinelevel0\adjustright \cbpat1

\cf8\lang1045\cgrid \sbasedon0 \snext0 odwrotny;}}{\info{\title abc}{\author Tomasz}{\operator Tomasz}{\creatim\yr2000\mo11\dy30\hr21\min37}{\revtim\yr2000\mo11\dy30\hr21\min37}{\version1}{\edmins0}{\nofpages1}{\nofwords0}{\nofchars0}{\*\company }

{\nofcharsws0}{\vern73}}\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417 \deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\formshade\viewkind4\viewscale133\pgbrdrhead\pgbrdrfoot \fet0\sectd

\linex0\headery709\footery709\colsx709\endnhere\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4

\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}

{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \nowidctlpar\widctlpar\adjustright \lang1045\cgrid {\b\ul abc

\par }}

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

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

Jeśli byłbyś producentem przeglądarek, może chciałbyś stworzyć własny język znaczników umożliwiający użytkownikom konfigurację przeglądarek, dodawanie pasków przewijania, pasków narzędziowych i innych tego typu elementów. Zresztą firma Netscape taki język na bazie XML opracowała, jest to Język interfejsu użytkownika (User Interface Language), któremu przyjrzymy się w tym rozdziale.

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.

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>

W następnym rozdziale szczegółowo zajmiemy się poszczególnymi częściami dokumentu XML, ale teraz tytułem wstępu wyjaśnimy, jak to działa: 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. Zgodnie z zapowiedzią w wydrukach będą wyróżniane wiersze w danej chwili omawiane:

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

<DOKUMENT>

<POZDROWIENIA>

Witaj w XML

</POZDROWIENIA>

<KOMUNIKAT>

Witaj w pokręconym świecie XML.

</KOMUNIKAT>

</DOKUMENT>

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[Author:T] :

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

<DOKUMENT>

.

.

.

</DOKUMENT>

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>

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>

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?

Jak dokument XML wygląda w przeglądarce?

Okazuje się, że przeglądarki takie, jak Microsoft Internet Explorer 5 i  --> Netscape Navigator 6[Author:T] mogą wyświetlać kod XML bezpośrednio. Jeśli zapiszesz utworzony dokument w pliku greeting.xml i otworzysz go w Internet Explorerze, zobaczysz obrazek taki, jak na rysunku 1.2.

Rysunek 1.2.

Dokument XML w Internet Explorerze

0x01 graphic

Cały dokument XML widać na rysunku 1.2, ale obrazek ten w niczym nie przypomina rysunku 1.1, gdyż 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. 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 (Java i JavaScript) 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[Author:T] . W tym rozdziale krótko omówimy obie metody formatowania - zaczniemy od dodania do stworzonego elementu arkusza stylów.

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:

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

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}

Wyniki w dwóch przeglądarkach obsługujących XML możesz obejrzeć na rysunkach 1.3 i 1.4. Na rysunku 1.3 pokazano sformatowany dokument w przeglądarce Netscape 6, na rysunku 1.4 ten sam dokument w Internet Explorerze. Jak widać wyniki są bardzo podobne do siebie, a nawet mają pewną przewagę nad HTML, gdyż możemy bardzo dokładnie określić oczekiwany wygląd, a nie musimy polegać na predefiniowanych elementach takich jak <H1>.

Rysunek 1.3.

Dokument XML w przeglądarce Netscape 6

0x01 graphic

Rysunek 1.4.

Dokument XML w przeglądarce Internet Explorer

0x01 graphic

Wiesz już, co to jest XML, jeden taki dokument napisaliśmy i wyświetliliśmy go w przeglądarce stosując arkusz stylów. Mógłbyś teraz spytać, cóż jest takiego wspaniałego w całym tym XML? Zaraz się tym tematem zajmiemy.

Po co właściwie ten 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

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.

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.

Oprócz tego możliwa jest standaryzacja języków znacznikowych, które mogą być powszechniej używane, czym się zaraz zajmiemy.

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:

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.

Samoopisujące się dane

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

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

<DOKUMENT>

<POZDROWIENIA>

Witaj w XML

</POZDROWIENIA>

<KOMUNIKAT>

Witaj w pokręconym świecie XML.

</KOMUNIKAT>

</DOKUMENT>

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

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.

Przyjrzyj się następującemu dokumentowi XML:

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

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ą. Tutaj pojęcia te omówimy pokrótce, później zajmiemy się nimi nieco dokładniej.

Dokumenty XML poprawnie sformułowane

Co oznacza poprawne sformułowanie dokumentu XML? Dokument taki musi spełniać wymagania 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>:

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

<DOKUMENT>

<POZDROWIENIA>

Witaj w XML

<KOMUNIKAT>

</POZDROWIENIA>

Witaj w pokręconym świecie XML.

</KOMUNIKAT>

</DOKUMENT>

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

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

Więcej o DTD znajdziesz w „Księdze eksperta XML”. W powyższym przykładzie DTD mówi, że elementem głównym jest DOKUMENT, wewnątrz znajdują się elementy POZDROWIENIA i KOMUNIKAT zawierające już tylko tekst.

Większość przeglądarek sprawdza poprawność sformułowania dokumentów, ale tylko niektóre przeprowadzają walidację. O programach do walidacji dokumentu powiemy jeszcze nieco dalej w tym rozdziale.

Bardzo krótko omówiliśmy dokumenty XML, wiesz już, jak je wyświetlać za pomocą arkuszy stylów, co oznacza poprawne sformułowanie i walidacja dokumentu. Jednak to dopiero początek: wiele dokumentów XML nie jest przeznaczony do wyświetlania, a te, które mają być wyświetlane, nie są przeznaczone do używania z arkuszami stylów. Dotyczy to na przykład dokumentów zawierających dane, które mają być prezentowane w jakiejś specyficznej postaci graficznej; mogą to być struktury cząsteczek, równania fizyczne czy muzyczny napis nutowy. Bardziej zaawansowane zastosowania XML obejmują parsowanie dokumentu XML umożliwiające rozbicie go na składniki i następnie przetwarzanie tak uzyskanych danych. Teraz przyjrzymy się kilku sposobom parsowania dokumentów.

Parsowanie XML

Załóżmy, że mamy znany z wcześniejszej części rozdziału dokument greeting.xml:

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

<DOKUMENT>

<POZDROWIENIA>

Witaj w XML

</POZDROWIENIA>

<KOMUNIKAT>

Witaj w pokręconym świecie XML.

</KOMUNIKAT>

</DOKUMENT>

Teraz chcemy pobrać z niego tekst Witaj w XML. Jednym ze sposobów jest użycie w Internet Explorerze wysp danych XML i użycie języka takiego, jak JavaScript, do pobrania treści elementu POZDROWIENIA i wyświetlenia jej. Oto jak to będzie wyglądało w stronie sieciowej:

<HTML>

<HEAD>

<TITLE>

Określanie wartości elementów z dokumentu XML

</TITLE>

<XML ID="firstXML" SRC="greeting.xml"></XML>

<SCRIPT LANGUAGE="JavaScript">

function getData()

{

xmldoc= document.all("firstXML").XMLDocument;

nodeDoc = xmldoc.documentElement;

nodeGreeting = nodeDoc.firstChild;

outputMessage = "Pozdrowienie: " +

nodeGreeting.firstChild.nodeValue;

message.innerHTML=outputMessage;

}

</SCRIPT>

</HEAD>

<BODY>

<CENTER>

<H1>

Określanie wartości elementu z dokumentu XML

</H1>

<DIV ID="message"></DIV>

<P>

<INPUT TYPE="BUTTON" VALUE="Pobierz pozdrowienia"

ONCLICK="getData()">

</P>

</CENTER>

</BODY>

</HTML>

Na stronie wyświetlony zostanie przycisk Pobierz pozdrowienia. Kliknięcie go spowoduje odnalezienie przez JavaScript pliku greeting.xml, pobranie z niego treści elementu POZDROWIENIA i wyświetlenie tego tekstu, co pokazano na rysunku 1.5. W ten sposób można tworzyć aplikacje obsługujące w nietypowy sposób dokumenty, a nawet można tak stworzyć specjalizowane przeglądarki XML.

Rysunek 1.5.

Pobieranie danych z dokumentu XML w Internet Explorerze

0x01 graphic

Dalej w książce zajmiemy się użyciem JavaScriptu do przetwarzania XML dokładniej, najpierw omówimy też sam JavaScript. Jeśli jeszcze nie używałeś JavaScriptu, to nie ma problemu - nasze wprowadzenie wystarczy.

JavaScript używany jest głównie do stosowania XML „na niewielką skalę”, natomiast pełną obsługę XML najczęściej oprogramowuje się w Javie, niejednokrotnie skorzystamy z tego rozwiązania w naszej książce. Oto przykładowy program Javy, readXML.java, w którym użyto zapewne najpowszechniej stosowanego parsera XML o nazwie: XML4J dostępnego za darmo --> od IBM-owskich AlphaWorks[Author:AJ] . Program odczytuje dokument greeting.xml i pobiera treść elementu POZDROWIENIA.

import arg.apache.xerces.parsers.DOMParser;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.Text;

public class readXML

{

static public void main(String[] argv)

{

try {

DOMParser parser = new DOMParser();

parser.parse("greeting.xml");

Document doc = parser.getDocument();

for (Node node = doc.getDocumentElement().getFirstChild();

node != null; node = node.getNextSibling()) {

if (node instanceof Element) {

if (node.getNodeName().equals("POZDROWIENIA")) {

StringBuffer buffer = new StringBuffer();

for (Node subnode = node.getFirstChild();

subnode != null; subnode =

subnode.getNextSibling()){

if (subnode instanceof Text) {

buffer.append(subnode.getNodeValue());

}

}

System.out.println(buffer.toString());

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

Jeśli program ten skompilujesz i uruchomisz (jak to zrobić, dowiesz się w rozdziale 8), wynik będzie następujący (znakiem „%” oznaczam znak zachęty; jeśli używasz UNIXa, znak zachęty będzie podobny, ewentualnie może to być coś w stylu /home/steve:, natomiast w Windows będzie to zwykle ścieżka: C:\XML>).

%java readXML

Witaj w XML

Program ten także zwraca tekst zawarty w elemencie POZDROWIENIA, wraz ze spacjami początkowymi. Później nauczymy się używać Javy - zwykle korzystać będziemy z parsera IBM AlphaWorks XML4J, który jest zgodny z Obiektowym modelem dokumentu (DOM) W3C. Przed rozpoczęciem programowania przedstawiony zostanie także sam język Java, więc nie musisz teraz się nerwowo rozglądać za jakimś podręcznikiem.

Teraz wiesz już mniej więcej, jak działa XML, czas więc sprawdzić, jak język ten sprawdza się w użyciu i jakie materiały na jego temat możesz znaleźć w Internecie.

Zasoby XML

Wiele zasobów na temat XML dostępnych jest w Sieci online. Abyś dobrze poznał XML, musisz wiedzieć, gdzie szukać informacji.

Specyfikację XML utworzyło konsorcjum W3C, od ich strony powinieneś rozpocząć swoje poszukiwania. Oto lista adresów odpowiednich na początek (częścią prezentowanych tematów zajmować się będziemy w tej książce):

Istnieje też wiele zasobów na temat XML poza W3C. Zadanie zapytania „XML” w wyszukiwarce podało mi 561 870 odnośników. Oto lista stron, od których możesz zacząć eksplorację Sieci:

W Sieci znajdziesz też sporo podręczników online (podanie hasła „XML Tutorials” zwróciło ponad 500 odpowiedzi). Oto kilka na początek:

Oprócz tego przydatne są niektóre grupy dyskusyjne Usenetu (musisz jednak sprawdzić, czy używany przez Ciebie serwer news te grupy obsługuje):

Jak widać, nie będzie problemów ze znalezieniem w Internecie materiałów o XML. Teraz zajmiemy się dostępnością oprogramowania do obsługi XML.

Edytory XML

Do tworzenia dokumentów XML opisywanych w tej książce całkowicie wystarczy jakiś edytor tekstowy, na przykład vi, emacs, pico, Notatnik w Windows czy inny. Domyślnie zakłada się, że dokumenty XML zapisywane są w Unicode, choć praktycznie można zapisywać je też jako ASCII, i najczęściej tak się robi. Upewnij się tylko, że zapisujesz swój plik w formacie zwykłego tekstu.

Użycie edytorów tekstowych w Windows

Edytory tekstowe, jak Notatnik, mają natrętny zwyczaj dodawania do nazwy pliku rozszerzenia .txt, jeśli tylko rozszerzenie podane przez autora nie jest im znane. Z rozszerzeniem .xml zwykle nie ma problemu, bo jest znane, ale jeśli zechcesz zastosować rozszerzenie .xul odpowiadające Językowi interfejsu użytkownika, zapisany zostanie dokument z rozszerzeniem .xul.txt. Aby tego uniknąć, nazwę pliku trzeba podać w cudzysłowie, na przykład jako "scrollbar.xul".

Czasem jednak znacznie wygodniejsze może być użycie edytora XML, którego podstawowym zadaniem jest właśnie obsługa tego języka. Oto zestawienie programów umożliwiających edycję plików XML:

Rysunek 1.6 przedstawia XML Spy, 1.7 XML Writer, 1.8 XML Notepad i 1.9 eNotepad.

--> Rysunek 1.6.[Author:T]

XML Spy w działaniu

0x01 graphic

Rysunek 1.7.

XML Writer w działaniu

0x01 graphic

Rysunek 1.8.

XML Notepad w działaniu

0x01 graphic

Rysunek 1.9.

eNotepad w działaniu

0x01 graphic

Wiesz już, czym można XML edytować, teraz czas na przeglądarki. Tym razem wybór jest nieco skromniejszy, ale mimo tego jest w czym wybierać.

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.

Internet Explorer 5

Czy Microsoft lubisz, czy go nienawidzisz, faktem jest, że Internet Explorer jest pierwszą przeglądarką, która była w stanie obsłużyć XML. Można ją pobrać spod adresu www.microsoft.com/windows/ie/default.htm.

Internet Explorer może bezpośrednio wyświetlać dokumenty XML, co pokazano na rysunku 1.2, może też obsługiwać ja za pomocą języków skryptowych JScript (odpowiednik JavaScriptu) oraz VBScript. Dobrze obsługiwane są arkusze stylów i takie cechy, jak element XML umożliwiający tworzenie wysp danych XML, do których można ładować dokumenty XML. Obsługiwane są też metody dowiązywania XML do zestawów rekordów dostępnych za pomocą obiektów danych ActiveX (ADO).

Internet Explorer 5.5 obsługuje też nowe właściwości XML, takiej jak specyfikacja XPath. Nie ma wątpliwości, że Microsoft mocno się w XML angażuje - Office 2000 także obsługuje ten standard, ale firmie tej często zdarza się odchodzić od standardów określanych przez W3C (szczególnie wtedy, kiedy Microsoft sam nie pisze tych standardów).

Netscape Navigator 6

Niedawno ukazała się nowa wersja Navigatora o numerze 6 (dostępna jest na witrynie www.netscape.com) obsługująca też XML. Przeglądarkę tę w działaniu pokazano na rysunku 1.3. Program ten oparty jest na przeglądarce Mozilla tworzonej jako open source dostępnej pod adresem www.mozilla. --> org[Author:T] .

Podobnie jak Internet Explorer, Netscape Navigator dobrze obsługuje arkusze stylów. Przeglądarka ta obsługuje także oparty na XML Język interfejsu użytkownika (XUL) umożliwiający konfigurowanie kontrolek dostępnych w przeglądarce, zresztą właśnie na XUL oparty był interfejs pierwszych wersji przeglądarki.

Jumbo

Jedną z najbardziej znanych prawdziwych przeglądarek XML jest Jumbo, która może obsługiwać XML oraz CML. Przeglądarkę tę znajdziesz pod adresem www.xml-cml.org/. Nie tylko może ona wyświetlać dokumenty XML (choć bez arkuszy stylów), ale umożliwia też graficzną prezentację cząsteczek opisanych w CML, co pokazano na rysunku 1.10.

Rysunek 1.10.

Przeglądarka Jumbo

0x01 graphic

Tak więc nie ma zbyt wielu przeglądarek XML, ale jest za to mnóstwo parserów XML. Można ich użyć do odczytywania dokumentów XML i rozbijania ich na składniki.

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. Na 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. Oto lista niektórych dostępnych parserów:

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.

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. Załóżmy, że chcesz sprawdzić nasz dokument greeting.xml:

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

<DOKUMENT>

<POZDROWIENIA>

Witaj w XML

</POZDROWIENIA>

<KOMUNIKAT>

Witaj w pokręconym świecie XML.

</KOMUNIKAT>

</DOKUMENT>

Aby to zrobić, należy przygotować pakiet XML4J (jak to zrobić, dowiesz się później) i uruchomić przykład DOMWriter:

%java dom.DOMWriter greeting.xml

greeting.xml:

[Error] greeting.xml:2:11: Element type "DOKUMENT" must be declared

[Error] greeting.xml:3:15: Element type "POZDROWIENIA" must be declared

[Error] greeting.xml:6:14: Element type "KOMUNIKAT" must be declared

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

<DOKUMENT>

<POZDROWIENIA>

Witaj w XML

</POZDROWIENIA>

<KOMUNIKAT>

Witaj w pokręconym świecie XML.

</KOMUNIKAT>

</DOKUMENT>

Jeśli wszystko pójdzie dobrze, DOMWriter po prostu wyświetli dokument, który był sprawdzany, a jeśli wystąpią w nim jakieś błędy, też zostaną wyświetlone. W tym wypadku DOMWriter zgłosił błędy dlatego, że nie załączyliśmy do greeting.xml DTD, więc w ogóle nie można przeprowadzić walidacji.

Jest to proste, jeśli masz zainstalowany pakiet XML for Java, ale jeśli nie, to masz też do dyspozycji inne walidatory. Oto wybrane z nich dostępne w Sieci:

Aby zobaczyć działanie walidatora, spójrz na rysunek 1.11. Prosimy walidator XML o walidację naszego dokumentu greeting.xml. Specjalnie zmieniono kolejność znaczników <KOMUNIKAT> i </POZDROWIENIA>:

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

<!DOCTYPE DOKUMENT [

<!ELEMENT DOKUMENT (POZDROWIENIA, KOMUNIKAT)>

<!ELEMENT POZDROWIENIA (#PCDATA)>

<!ELEMENT KOMUNIKAT (#PCDATA)>

]>

<DOKUMENT>

<POZDROWIENIA>

Witaj w XML

<KOMUNIKAT>

</POZDROWIENIA>

Witaj w pokręconym świecie XML.

</KOMUNIKAT>

</DOKUMENT>

Rysunek 1.11.

Użycie walidatora XML

0x01 graphic

Wyniki pokazano na rysunku 1.12. Jak widać, walidator znalazł nieprawidłowy zapis dwóch naszych znaczników.

Rysunek 1.12.

Wyniki działania walidatora XML

0x01 graphic

Walidatory XML stanowią doskonały sposób sprawdzania dokumentów XML. Warto to robić, gdyż XML jest znacznie bardziej wymagający od HTML (pamiętaj, że przeglądarki XML nie powinny próbować poprawiać błędnych dokumentów - mają przerwać przetwarzanie dokumentu).

W tym rozdziale już zapoznaliśmy się z XML, teraz zajmiemy się licznymi językami utworzonymi na bazie XML. Najpierw jednak powiemy jeszcze o kilku ważnych rzeczach, o których wiedzieć trzeba.

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.

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.

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.

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

XLinks i XPointers

Trudno sobie wyobrazić Światową Pajęczynę bez łączy (zwanych też, niezbyt ładnie, linkami) - dokumenty HTML doszły w łączeniu ze sobą stron do perfekcji. W XML do tworzenia łączy stosuje się specyfikacje XLink i XPointer.

Język XLink umożliwia przekształcenie elementu w łącze - dowolnego elementu, nie tylko znanego z HTML <A>. Jest to bardzo przydatne, szczególnie że w XML nie ma wbudowanego elementu <A>. W XML to użytkownik definiuje elementy i on decyduje o tym, które z nich mają być łączami.

Tak naprawdę XLink to technika znacznie potężniejsza od popularnych hiperłączy, gdyż łącza XLink mogą być dwukierunkowe, co pozwala użytkownikowi powrócić do punktu początkowego. Łącza te mogą być też wielokierunkowe - mogą być nawet tak przygotowane, aby wskazywać najbliżej położoną stronę zawierającą szukany zasób.

Z kolei za pomocą języka XPointer wskazuje się nie cały dokument, ale jego fragment. Wskaźniki te potrafią nawet wybrać żądany element, drugie wystąpienie danego elementu lub wystąpienie numer 11 904. Mogą wskazywać pierwszy element potomny danego elementu i tak dalej. Dzięki ich zastosowaniu można sięgnąć do dokumentu bez konieczności umieszczania w nim dodatkowych znaczników.

Z drugiej strony trzeba jednak pamiętać, że XLink i XPointer to dość nowe technologie i nie zostały jeszcze w pełni zaimplementowane w żadnej przeglądarce. Oferowanymi przez nie możliwościami zajmiemy się w tej książce nieco później.

W Sieci dostępne są różne informacje o tych standardach, możesz tam zajrzeć:

URL a URI

Kiedy już omówiliśmy technologie XLink i XPointer, należy też wspomnieć, że w XML rozwinięto ideę jednolitych lokalizatorów zasobów (URL) do jednolitych identyfikatorów zasobów (URI). Adresy URL są obecnie w Internecie powszechnie rozumiane i obsługiwane. Z kolei adresy URI (jak nietrudno się domyślić po omówieniu XLink i XPointer) są od nich narzędziem silniejszym.

Adresy URI stanowią metodę wyszukiwania w Internecie potrzebnych zasobów. Teoretycznie URI umożliwiają odnalezienie najbliższego komputera zawierającego potrzebny zasób, a nawet wyśledzenie dokumentu przeniesionego z jednego miejsca w inne.

Praktycznie idea URI nadal jest rozwijana i większość oprogramowania posługuje się adresami URL.

ASCII, Unicode i Uniwersalny system znaków

Znaki dokumentu zapisywane są w postaci kodów liczbowych. Najpowszechniejszym systemem kodowania znaków jest ASCII obejmujący kody od 0 do  --> 127[Author:T] , a po rozszerzeniu od 0 do 255 (czyli jeden bajt). Litera „A” ma kod 65, „B” ma kod 66 i tak dalej.

Dzisiaj jednak Sieć już naprawdę obejmuje cały świat, istnieje wiele języków, których pismo nie może być zapisane jako ASCII - bengalski, ormiański, hebrajski, tajski, tybetański, japońska katakana, arabski, cyrylica i tak dalej.

Z tego powodu W3C jako domyślny zestaw znaków XML wybrało nie ASCII, lecz Unicode. Znaki tego zestawu zapisywane są nie na jednym, lecz na dwóch bajtach, zatem do dyspozycji są kody od 0 do 65 535. Aby jednak uprościć obsługę nowego standardu, znaki kodu ASCII pozostawiono bez zmian. W ten sposób Unicode może zawierać przeróżne symbole używane w zestawach znaków i ideogramów. Więcej informacji o Unicode znajdziesz pod adresem www.unicode.org.

Obecnie wykorzystanych jest tylko około 40 000 kodów Unicode, z tego 20 000 to kody przeznaczone dla ideogramów Han, choć z drugiej strony ideogramów takich istnieje ponad 80 000. 11 000 kodów przeznaczono na koreańskie sylaby Hangul.

W praktyce jednak, podobnie jak w przypadku innych technologii związanych z XML, obsługa tego standardu na wielu platformach nie jest pełna. Windows 95/98 Unicode nie obsługują, w Windows NT i Windows 2000 jest już nieco lepiej (XML Spy umożliwia zapisywanie dokumentów XML jako Unicode). Dokumenty XML zapisywane są jako zwykły kod ASCII lub UTF-8, czyli skompresowana postać Unicode. Taki zapis jest bardzo użyteczny do zapisywania dokumentów zawierających głównie kody ASCII, gdyż dzięki temu wszystkie te znaki potrzebują jednego bajta, natomiast jedynie znaki spoza ASCII są zapisywane na wielu bajtach. Dokument ASCII zakodowany jako zwykły Unicode byłby dwa razy dłuższy. Oto jak wskazuje się użycie w dokumencie kodowania UTF-8:

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

<DOKUMENT>

<POZDROWIENIA>

Witaj w XML

<KOMUNIKAT>

</POZDROWIENIA>

Witaj w pokręconym świecie XML.

</KOMUNIKAT>

</DOKUMENT>

Domyślnie, jeśli brak deklaracji sposobu kodowania, procesory XML zakładają, że dokument jest zakodowany jako UTF-8, więc w przypadku dokumentów zapisanych w postaci czystego ASCII nie będzie żadnych problemów.

Jednak nawet Unicode nie zawiera dość kodów, aby przypisać je wszystkim powszechnie stosowanym symbolom. W związku z tym stworzono nową specyfikację, Uniwersalny system znaków (UCS, Universal Character system, znany też jako ISO 10646), w którym na każdy znak używa się 4 bajtów. W ten sposób uzyskujemy ponad dwa miliardy kodów, czyli znacznie więcej niż jest potrzebne. Możesz zaznaczyć dokument jako zakodowany w czystym Unicode - oznacz kodowanie jako UCS-2, co oznacza skompresowany, dwubajtowy UCS (czyli ISO 10646-UCS-2). Można użyć oznaczenia UTF-16 - jest to specjalne kodowanie reprezentowania symboli UCS na dwóch bajtach, co odpowiada UCS-2. Zwykłe kodowanie UCS oznaczamy jako UCS-4 (czyli ISO 10646-UCS-4).

W tej książce korzystać będziemy głównie z zestawu ASCII wzbogaconego o znaki ISO Latin-2 (ISO 8859-2), gdzie zakodowane są polskie litery. Powodem takiego postępowania jest niewielki stopień obsługi Unicode w istniejących programach, na przykład nie są mi znane żadne edytory obsługujące Unicode. Można jednak pisać dokumenty XML używając lokalnego zestawu znaków (na przykład Windows 1250) i później konwertować je na Unicode. Możesz w końcu bezpośrednio wstawiać kody znaków Unicode do dokumentu. Na przykład w Unicode symbolowi π odpowiada kod szesnastkowy 03C0, więc liczbę π do dokumentu można wstawić jako wyrażenie znakowe &#x03C0;.

W XML można używać jeszcze innych zestawów znaków, więcej informacji na ten temat znajdziesz na liście IANA dostępnej pod adresem www.isi.edu/in-notes/iana/assignments/character-sets.

Konwersja ASCII na Unicode

Jeśli chcesz przekonwertować pliki ASCII na Unicode, możesz użyć programu native2ascii dystrybuowanego przez Sun Microsystems wraz z Java Software Development Kit (SDK, dawniej JDK). Pliki konwertuje się uruchamiając polecenie native2ascii plik.txt plik.uni. Można też w ten sposób generować inne zestawy znaków, na przykład skompresowany Unicode (UTF-8).

Aplikacje XML

Pokazano już wiele teorii, więc do końca tego rozdziału zajmiemy się praktyką. Świat XML jest już bogaty, język ten jest używany wewnętrznie w produktach Netscape i Microsoftu oraz w instalacjach programów takich jak Perl. Listę firm zajmujących się tworzeniem opartych na XML języków znajdziesz pod adresem www.xml.org/xmlorg_catalog.htm.

Dobrym pomysłem jest przyjrzenie się sposobowi stosowania XML w takich językach. Najpierw jednak nieco terminologii: jak już wiesz, XML jest metajęzykiem i służy do tworzenia języków. Takie języki nazywamy aplikacjami XML.

Aplikacja XML, czyli zastosowanie XML, to zastosowanie tego języka do jakiejś dziedziny; i tak MathML to XML zastosowany w matematyce. Aplikacja XML nie jest programem służącym do obsługi XML - często powstają tu nieporozumienia związane z potocznym rozumieniem słowa „aplikacja”.

Istnieją już tysiące aplikacji XML, zaraz niektóre z nich obejrzymy. Zdefiniowanie własnego języka znaczników jest bardzo przydatne dla grup ludzi o wspólnych zainteresowaniach, na przykład dla fizyków czy chemików, gdyż umożliwia to używanie jednolitych symboli i jednolitej grafiki w wyspecjalizowanych przeglądarkach. Zaczniemy naszą prezentację od CML.

XML w działaniu: Chemiczny język znaczników

Peter Murray-Rust stworzył język CML na bardzo wczesnym etapie rozwoju XML, więc CML ma już swoją historię. Wielu ludzi uważa ten język za HTML wzbogacony o cząsteczki i nie jest to wcale zła charakterystyka. CML pozwala wyświetlać strukturę złożonych cząsteczek.

Dzięki CML chemicy mogą tworzyć i publikować opisy cząsteczek i łatwo je między sobą wymieniać. Najważniejsza jest jednak nie tyle możliwość opisania takiego czy innego związku, ale możliwość wyszukiwania związków spełniających jakieś warunki.

Wspomniałem już o Jumbo, znanej przeglądarce obsługującej CML dostępnej za darmo pod adresem www.xml-cml.org. Jumbo nie tylko potrafi obsłużyć CML, ale też umie wyświetlić strukturę dowolnego dokumentu XML. Jednak nie ulega wątpliwości, że najważniejszą cechą Jumbo jest możliwość graficznej reprezentacji cząsteczek opisanych w CML.

Przykładowy ekran Jumbo pokazano na rysunku 1.10, gdzie przedstawiono cząsteczkę tiofenolu. Oto plik thiophenol.xml, który właśnie jest na tym rysunku pokazany (dokument ten instalowany jest wraz z przeglądarką jako przykład):

<?jumbo:namespace ns="http://www.xml-cml.org" prefix="C"

java="jumbo.cmlxml.*Node" ?>

<C:molecule id="thiophenol">

<C:atomArray builtin="elsym">

C C C C C C C S C C O O

</C:atomArray>

<C:atomArray builtin="x2" type="float">

0 0.866 0.866 0 -0.866 -0.866

0.0 0.0 1.732 -1.732 1.732 -1.732

</C:atomArray>

<C:atomArray builtin="y2" type="float">

1 0.5 -0.5 -1.0 -0.5 0.5

-2.0 2.0 1.0 1.0 2.0 2.0

</C:atomArray>

<C:atomArray builtin="atid1">

1 2 3 4 5 6 1 4 2 9 6 10

</C:atomArray>

<C:atomArray builtin="atid2">

2 3 4 5 6 1 8 7 9 11 10 12

</C:atomArray>

<C:atomArray builtin="order" type="integer">

4 4 4 4 4 4 1 1 1 2 1 2

</C:atomArray>

</C:molecule>

XML w działaniu: Matematyczny język znaczników

Matematyczny język znaczników powstał, aby wypełnić znaczącą lukę w dokumentach sieciowych: obsługę równań. Tim Berners-Lee wymyślił Sieć w CERN, aby fizycy zajmujący się wysokimi energiami mogli wymieniać się danymi i dokumentami. Jednak nadal nie opracowano dobrej metody wyświetlania równań na stronach sieciowych.

MathML powstał właśnie po to, aby tę lukę zapełnić. Sam MathML jest specyfikacją W3C, którą znaleźć można pod adresem www.w3.org/Math/. Użycie MathML pozwala wyświetlać równania i różne symbole matematyczne. Język ten nie jest dość silny, aby obsłużyć niektóre działy matematyki i innych nauk, ale stale jest rozwijany.

Z uwagi na nieliczne grono odbiorców jeszcze żadna przeglądarka powszechnie stosowana nie obsługuje MathML, istnieje jednak przeglądarka Amaya, która w W3C pełni rolę środowiska testowego HTML i XHTML (niestety, nie jest to przeglądarka XML). Amayę możesz ściągnąć spod adresu www.w3.org/Amaya/.

Oto dokument MathML wyświetlający równanie 3Z2 - 6Z + 12 = 0 (używana jest przestrzeń nazw XML; przestrzeniami nazw zajmiemy się później):

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

<html xmlns:m="http://www.w3.org/TR/REC-MathML/">

<math>

<m:mrow>

<m:mrow>

<m:mn>3</m:mn>

<m:mo>&InvisibleTimes;</m:mo>

<m:msup>

<m:mi>Z</m:mi>

<m:mn>2</m:mn>

</m:msup>

<m:mo>-</m:mo>

<m:mrow>

<m:mn>6</m:mn>

<m:mo>&InvisibleTimes;</m:mo>

<m:mi>Z</m:mi>

</m:mrow>

<m:mo>+</m:mo>

<m:mn>12</m:mn>

</m:mrow>

<m:mo>=</m:mo>

<m:mn>0</m:mn>

</m:mrow>

</math>

Wyniki działania powyższego pliku w przeglądarce Amaya pokazano na rysunku 1.13.

Rysunek 1.13.

Wyświetlanie kodu MathML w przeglądarce Amaya

Do Grafika: Proszę wyciąć pasek zadań Windows.

0x01 graphic

XML w działaniu: Format definicji kanałów

Wraz ze wzrostem zasobów dostępnych w Sieci próbuje się wyszukiwać innych sposobów korzystania z niej i Microsoft nad jednym z takich sposobów ciężko się napracował. Ich pomysłem są kanały wysyłające dokumenty, a nie czekające, aż użytkownik przyjdzie i sam te dokumenty pobierze. Kanały to początek „sieciowego nadawania” lub wypychania (push; choć w sensie rozumienia HTML to nie serwer wypycha dane).

Dokumenty CDF są tak naprawdę dokumentami XML, więcej dowiesz się o nich ze strony msdn.microsoft.com/workshop/delivery/cdf/reference/CDF.asp.

Oto jak CDF działa: w witrynie dodajesz łącze do pliku .cdf, dodajesz tekst łącza typu „Zapisz się do kanału”. Jeśli użytkownik korzysta z Internet Explorera i kliknie łącze pliku CDF, przeglądarka doda witrynę do foldera Ulubione (lub Favorites) i zapisze się do kanału, później zaś co jakiś czas sprawdzać będzie, czy nie pojawiły się aktualizacje witryny (kanału).

Oto przykład: poniższy dokument, w3c.cdf, umożliwia zapisanie się do stron W3C poświęconych XML i XSL:

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

<CHANNEL HREF="http://www.w3.org/">

<TITLE>World Wide Web Consortium</TITLE>

<ABSTRACT>

Leading the Web to its Full Potential

</ABSTRACT>

<ITEM HREF="http://www.w3.org/XML/">

<TITLE>Extensible Markup Language (XML)</TITLE>

<ABSTRACT>

The Extensible Markup Language (XML) is the universal

format for structured documents and data on the Web.

</ABSTRACT>

</ITEM>

<ITEM HREF="http://www.w3.org/Style/XSL/">

<TITLE>Extensible Stylesheet Language (XSL)</TITLE>

<ABSTRACT>

Extensible Stylesheet Language (XSL) is a

language for expressing style sheets.

</ABSTRACT>

</ITEM>

</CHANNEL>

Wyniki pokazano na rysunku 1.14. Kiedy użytkownik otworzy ten plik .cdf, kanał W3C dodawany jest do foldera Ulubione Internet Explorera (listę bieżących kanałów możesz zobaczyć klikając przycisk Ulubione na standardowym pasku narzędzi i następnie dwukrotnie klikając folder Kanały w otwartej po lewo ramce).

Rysunek 1.14.

Subskrypcja do kanału przy użyciu pliku CDF

0x01 graphic

XML w działaniu: Język synchronizacji multimediów

Język synchronizacji multimediów (Synchronized Multimedia Integration Language, SMIL, czytaj: smajl) istnieje już od jakiegoś czasu. Jest to standard W3C, który znaleźć możesz pod adresem www.w3.org/AudioVideo/.

Język SMIL jest próbą rozwiązania problemu przeglądarek multimedialnych, które zwykle potrafią obsłużyć jeden tylko rodzaj danych multimedialnych na raz: obraz wideo, dźwięk lub obrazki. Zadaniem języka SMIL jest tworzenie podobnych do telewizyjnych prezentacji multimedialnych.

W języku SMIL wskazuje się, które pliki multimedialne kiedy mają być odgrywane. Sam język nie definiuje ani nie zawiera zasobów multimedialnych.

Firmy Microsoft, Macromedia oraz Compaq stworzyły propozycję konkurencyjną, HTML+TIME. W tej sytuacji Microsoft w przeglądarce Internet Explorer nie zaimplementował obsługi SMIL, , choć pewien jej fragment umieszczono w wersji 5.5 przeglądarki. W Internecie pod adresem www.empirenet.com/~joseram znajdziesz napisany w Javie aplet SMIL wraz z niesamowitymi przykładami symfonii połączonych z obrazami.

SMIL stał się jednym z głównych elementów oprogramowania do obsługi strumieni multimedialnych RealNetworks (http://service.real.com/help/library/guides/production/realpgd.htm) oraz Apple Quicktime (www.apple.com/quicktime/authoring/qtsmil.html). Oprócz tego w ramach projektu SMIL Boston (www.w3.org/TR/smil-boston) dodano do SMIL 1.0 efekty przejścia oraz obsługę zdarzeń. Inne jeszcze implementacje tego języka przedstawiono na stronie www.w3.org/AudioVideo.

Oto przykładowy dokument SMIL tworzący sekwencję multimedialną: najpierw odgrywane są pliki mozart1.wavamadeus1.mov, następnie prezentowany jest plik mozart1.htm, następnie odgrywane są mozart2.wavamadeus2.mov, w końcu wyświetlany jest mozart2.htm:

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

<!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 1.0//EN"

"http://www.w3.org/TR/REC-smil/SMIL10.dtd">

<smil>

<body>

<seq id="mozart">

<audio src="mozart1.wav"/>

<video src="amadeus1.mov"/>

<text src="mozart1.htm"/>

<audio src="mozart2.wav"/>

<video src="amadeus2.mov"/>

<text src="mozart2.htm"/>

</seq>

</body>

</smil>

XML w działaniu: HTML+TIME

Microsoft, Macromedia i Compaq stworzyły alternatywę dla SMIL, będące aplikacją XML Multimedialne interaktywne rozszerzenie synchronizowane czasem, nazywane HTML+TIME. Dokumenty SMIL umożliwiają przetwarzanie innych plików, natomiast dokumenty HTML+TIME pozwalają obsługiwać w ramach jednej strony HTML oraz prezentacje multimedialne.

SMIL znacznie wyprzedza HTML+TIME, ale Microsoft wykazuje niewielkie zainteresowanie językiem SMIL. Informacje o HTML+TIME znajdziesz pod adresem msdn.microsoft.com/workshop/Author/behaviors/time.asp. Język ten został zaimplementowany w Internet Explorerze jako zachowanie (ang. behavior)- jest to nowość Explorera 5 pozwalająca oddzielić kod od danych. Więcej informacji o zachowaniach Internet Explorera znajdziesz pod adresem msdn.microsoft.com/workshop/c-frame.htm#/workshop/author/default.asp.

Oto przykład dokumentu HTML+TIME wyświetlającego słowa Pozdrowienia, ze, świata i HTML+TIME, przy czym poszczególne słowa pojawiają się kolejno co dwie sekundy, sekwencja powtarza się pięciokrotnie:

<HTML>

<HEAD>

<TITLE>

Użycie HTML+TIME

</TITLE>

<STYLE>

.time {behavior: url(#default#time);}

</STYLE>

</HEAD>

<BODY>

<DIV CLASS="time" t:REPEAT="5" t:DUR="10" t:TIMELINE="par">

<DIV CLASS="time" t:BEGIN="0" t:DUR="10">Pozdrowienia</DIV>

<DIV CLASS="time" t:BEGIN="2" t:DUR="10">ze</DIV>

<DIV CLASS="time" t:BEGIN="4" t:DUR="10">świata</DIV>

<DIV CLASS="time" t:BEGIN="6" t:DUR="10">HTML+TIME</DIV>

</DIV>

</BODY>

</HTML>

Wynik prezentacji dokumentu HTML+TIME w przeglądarce Internet Explorer pokazano na rysunku 1.15.

Rysunek 1.15.

Dokument HTML+TIME w działaniu

0x01 graphic

HTML+TIME często korzysta z SMIL-a, na przykład poprzedni przykład SMIL w HTML+TIME wyglądałby następująco:

<t:seq id="mozart">

<t:audio src="mozart1.wav"/>

<t:video src="amadeus1.mov"/>

<t:textstream src="mozart1.htm"/>

<t:audio src="mozart2.wav"/>

<t:video src="amadeus2.mov"/>

<t:textstream src="mozart2.htm"/>

</seq>

XML w działaniu: XHTML

Jedną z największych aplikacji XML jest XHTML, czyli HTML 4.0 przepisany przez W3C jako aplikacja XML.

W3C wprowadziło XHTML jako pomost między HTML a XML, aby XML bardziej rozpowszechnić. XHTML to po prostu aplikacja naśladująca HTML 4.0 tak, aby można było wyświetlać jego dokumenty w zwykłych przeglądarkach sieciowych. XHTML jest niezwykłym tworem w świecie XML. W sieci na jego temat możesz znaleźć sporo informacji, na przykład:

Istnieją trzy wersje języka w specyfikacji XHTML 1.0: przejściowa, z ramkami i ścisła. Wersja przejściowa jest najpopularniejsza, gdyż obsługuje HTML w postaci mniej więcej takiej, jaka jest obecnie używana. Wersja z ramkami obsługuje dokumenty XHTML zawierające ramki, różni się ona od wersji przejściowej, gdyż podstawowym elementem nie jest body, lecz frameset. W wersji ścisłej pominięto elementy HTML uznane w HTML 4.0 za przestarzałe (a nie jest ich mało).

Specyfikacja XHTML 1.1 oparta jest na ścisłej wersji XHTML 1.0, którą jeszcze nieco uściślono rezygnując z części elementów i dodając obsługę innych (na przykład ruby do robienia komentarzy). Zestawienie różnic między tymi dwiema wersjami XHTML znajdziesz pod adresem www.w3.org/TR/xhtml11/changes.html#a_changes. Specyfikacja XHTML 1.1 jest dość wymagająca i sądzić można, że jeszcze sporo czasu upłynie, zanim upowszechni się w takim stopniu, co wersja przejściowa 1.0.

Oto przykładowy dokument XHTML w wersji przejściowej 1.0. Można go wyświetlić w zwykłej przeglądarce HTML, o ile tylko plik będzie miał rozszerzenie .html. Zwróć uwagę na to, że wszystkie znaczniki zapisano - zgodnie z normą XHTML - małymi literami:

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>

<title>

Strona WWW numer 1

</title>

</head>

<body>

<h1>

Witaj w XHTML!

</h1>

<center>

Strona ta zawiera tylko zwykły tekst.

<p>

To jest nowy akapit.

</p>

</center>

</body>

</html>

Wyniki działania powyższego kodu pokazano na rysunku 1.16. XHTML pisze się bardzo podobnie jak HTML, trzeba tylko ściśle trzymać się składni XML - na przykład obowiązkowo zamykać wszystkie elementy znacznikami końcowymi.

Rysunek 1.16.

Sposób wyświetlania XHTML

0x01 graphic

XML w działaniu: Otwarty standard opisu oprogramowania

Otwarty standard opisu oprogramowania (OSD, Open Software Description) jest pomysłem firm Marimba i Microsoft. Więcej informacji --> o tej aplikacji [Author:AJ] XML znajdziesz pod adresem www.w3.org/TR/NOTE-OSD.html. OSD umożliwia określenie sposobu aktualizacji oprogramowania przez Internet. Łącząc techniki OSD i CDF można zapewnić okresową aktualizację oprogramowania.

Nie wszyscy są OSD zachwyceni: większość użytkowników chce wiedzieć, kiedy oprogramowanie jest aktualizowane - choćby z tego powodu, że niejednokrotnie nowe wersje nie są kompatybilne z wersjami starszymi.

Oto przykładowy plik .osd służący do aktualizacji edytora tekstu SuperDuperTextPro firmy SuperDuperSoft:

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

<CHANNEL HREF="http://www.superdupersoft.com/updates.html">

<TITLE>

SuperDuperTextPro Updates

</TITLE>

<USAGE VALUE="SoftwareUpdate"/>

<SOFTPKG

HREF="http://updates.superdupersoft.com/updates.html"

NAME="{34567A7E-8BE7-99C0-8746-0034829873A3}"

VERSION="2,4,6">

<TITLE>

SuperDuperTextPro

</TITLE>

<ABSTRACT>

SuperDuperTextPro version 206 with sideburns!!!

</ABSTRACT>

<IMPLEMENTATION>

<CODEBASE HREF="http://www.superdupersoft.com/new.exe"/>

</IMPLEMENTATION>

</SOFTPKG>

</CHANNEL>

XML w działaniu: Skalowalna grafika wektorowa

Skalowalna grafika wektorowa (SVG, Scalable Vector Graphics) to kolejna aplikacja XML powstająca w W3C, która ma dobre założenia, ale która na razie jest obsługiwana w bardzo ograniczonym zakresie (co jednak warto zaznaczyć, obsługują ją CorelDraw i różne produkty Adobe, na przykład Adobe Illustrator). Za pomocą SVG można rysować dwuwymiarowe rysunki stosując znaczniki. Specyfikację SVG znajdziesz pod adresem www.w3.org/TR/SVG/, krótki opis pod adresem www.w3.org/Graphics/SVG/Overview. --> htm8[Author:T] .

SVG opisuje grafikę, a nie tekst, więc trudniej jest język ten obsłużyć w używanych obecnie przeglądarkach. Obecnie nie potrafi tego żadna przeglądarka; proponowane są inne standardy, takie jak Język znacznikowy precyzyjnej grafiki (PGML, Precision Graphics Markup Language) zaproponowany W3C (www.w3.org/TR/1998/NOTE-PGML) przez IBM, Adobe, Netscape i Suna.

Oto przykładowy dokument PGML powodujący narysowanie niebieskiego prostokąta:

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

<!DOCTYPE pgml SYSTEM "/DTDs/pgml.dtd">

<pgml>

<group fillcolor="blue">

<path>

<moveto x="0" y="0"/>

<lineto x="0" y="1000"/>

<lineto x="1000" y="1000"/>

<lineto x="1000" y="0"/>

<closepath/>

</path>

</group>

</pgml>

XML w działaniu: Wektorowy język znaczników

Wektorowy język znaczników VML (Vector Markup Language) to alternatywa dla SVG zaproponowana przez Microsoft i zaimplementowana w Internet Explorerze. Więcej informacji o VML znajdziesz pod adresem www.w3.org/TR/NOTE-VML. Używając tego języka możesz rysować wiele figur geometrycznych podając ich wektorowy opis. Oto przykładowy plik vml.html powodujący wyrysowanie żółtej elipsy, niebieskiego prostokąta oraz czerwonej linii łamanej:

<HTML xmlns:v="urn:schemas-microsoft-com:vml">

<HEAD>

<TITLE>

Użycie wektorowego języka znaczników VML

</TITLE>

<STYLE>

v\:* {behavior: url(#default#VML);}

</STYLE>

</HEAD>

<BODY>

<CENTER>

<H1>

Użycie wektorowego języka znaczników VML

</H1>

</CENTER>

<P>

<v:oval STYLE='width:100pt; height:75pt'

fillcolor="yellow"> </v:oval>

<P>

<v:rect STYLE='width:100pt; height:75pt' fillcolor="blue"

strokecolor="red" STROKEWEIGHT="2pt"/>

<P>

<v:polyline

POINTS="20pt,55pt,100pt,-10pt,180pt,65pt,260pt,25pt"

strokecolor="red" STROKEWEIGHT="2pt"/>

</BODY>

</HTML>

Wyniki możesz obejrzeć na rysunku 1.17.

Rysunek 1.17.

Wektorowy język znaczników w akcji

0x01 graphic

XML w działaniu: Oparty na XML język interfejsu użytkownika

Oparty na XML język interfejsu użytkownika (XML-based User Interface Language, XUL wymawiane „zul”) pochodzący od Netscape i Mozilli umożliwia opisanie elementów interfejsu użytkownika, które mają być wyświetlone w przeglądarce. Obecnie XUL obsługiwany jest jedynie w programie Netscape Navigator 6. Oto adresy, pod którymi znajdziesz więcej informacji na temat tego języka:

Oto scroll.xul, przykładowy dokument XUL powodujący dodanie w oknie przeglądarki bocznych pasków przewijania (z powodu wymagań formatu książki adres http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul został podzielony na dwie części, wpisując go w dokumencie musisz obie części ze sobą połączyć w jednym wierszu):

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

<window align="horizontal"

xmlns="http://www.mozilla.org/keymaster/

gatekeeper/there.is.only.xul">

<scrollbar align="vertical"/>

<box align="vertical" flex="100%">

<scrollbar align="horizontal"/>

<spring flex="100%" style="background-color: white"/>

<scrollbar align="horizontal"/>

</box>

<scrollbar align="vertical"/>

</window>

Wyniki działania tego dokumentu pokazano na rysunku 1.18.

Rysunek 1.18.

Paski przewijania utworzone przy pomocy XUL

0x01 graphic

XML w działaniu: Rozszerzalny język raportów biznesowych

Rozszerzalny język raportów biznesowych (Extensible Business Reporting Language, XBRL, dawniej XFRML) to otwarta specyfikacja używająca XML do opisywania warunków finansowych. Więcej informacji znajdziesz pod adresem www.xfrml.org/Overview.htm. Za pomocą XBRL możesz zakodować raporty finansowe tak, aby umożliwić łatwe ich przeszukiwanie i pobieranie z nich potrzebnych informacji.

Oto przykładowy dokument XBRL:

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

<group xmlns="http://www.xbrl.org/us/aicpa-us-gaap"

xmlns:gpsi="http://www.xbrl.org/TaxonomyCustom.xsd"

id="543-AB" entity="NASDAQ:GPSI" period="1999-05-31"

schemaLocation="http://www.xbrl.org/TaxonomyCustom.xsd"

scaleFactor="6" precision="9" type="USGAAP:Financial"

unit="ISO4217:USD" decimalPattern="" formatName="">

<item id="IS-025"

type="operatingExpenses.researchExpense"

period="P1Y/1999-05-31">20427</item>

<item id="IS-026"

type="operatingExpenses.researchExpense"

period="P1Y/1998-05-31">12586</item>

</group>

<group type="gpsi:detail.quarterly" period="1998-05-31">

<item period="1997-06-01/1998-07-31">0.12</item>

<item period="1997-09-01/1997-11-30">0.16</item>

<item period="1997-12-01/1998-02-28">0.17</item>

<item period="1998-03-01/1998-05-31">-0.12</item>

<item period="1998-06-01/1998-05-31">0.33</item>

</group>

<group type="gpsi:detail.quarterly" period="1999-05-31">

<item period="1998-06-01/1998-08-31">0.15</item>

<item period="1998-09-01/1998-11-30">0.20</item>

<item period="1998-12-01/1999-02-28">0.23</item>

<item period="1999-03-01/1999-05-31">0.28</item>

<item period="1998-06-01/1999-05-31">0.86</item>

</group>

<group type="gpsi:detail.quarterly" period="1998-05-31">

<item period="1997-06-01/1998-07-31">0.11</item>

<item period="1997-09-01/1997-11-30">0.15</item>

<item period="1997-12-01/1998-02-28">0.17</item>

<item period="1998-03-01/1998-05-31">-0.12</item>

<item period="1998-06-01/1998-05-31">0.32</item>

</group>

XML w działaniu: Ramowy opis zasobów

Ramowy opis zasobów (RDF, Resource Description Framework) to aplikacja XML pozwalająca zapisywać metadane, czyli dane o danych. RDF używa się do opisywania zasobów takich, jak witryny sieciowe, filmy, samochody i cokolwiek innego. Więcej informacji o RDF znajdziesz pod adresem www.w3.org/RDF/.

Używając RDF tworzy się słowniki zapisujące zasoby, na przykład Dublin Core to słownik zawierający opis metadanych o witrynach sieciowych, jego opis znajdziesz pod adresem http://purl.org/DC/. Używając Dublin Core możesz zapisać mnóstwo informacji o witrynach; informacje te docelowo mają zastąpić używane obecnie znaczniki <META>, które każdy stosuje według własnego „widzimisię”. Kiedy informacje o witrynach zostaną usystematyzowane, znacznie łatwiej będzie automatycznie przeszukiwać sieć.

Oto przykładowa strona RDF, w której użyto słownika Dublin Core do opisania witryny sieciowej:

<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

xmlns:DC="http://purl.org/DC/">

<RDF:Description about="http://www.starpowder.com/xml">

<DC:Format>HTML</DC:Format>

<DC:Language>en</DC:Language>

<DC:Date>2002-02-02</DC:date>

<DC:Type>tutorial</DC:Type>

<DC:Title>Welcome to XML!</DC:Title>

</RDF:Description>

</RDF:RDF>

Istnieje wiele więcej aplikacji XML, znacznie więcej, niż można omówić w jednym rozdziale. Wiele z nich jest właściwie niewidocznych dla użytkownika, na przykład w Microsoft Office 2000 dokumenty zapisywane są jako między innymi jako HTML. Jednak jako że w HTML niektórych informacji potrzebnych w dokumencie nie daje się zapisać, stosowany jest XML (na przykład grafika wektorowa zapisywana jest jako VML). Nawet dość wczesne wersje Netscape Navigatora umożliwiały zaglądanie do stron zapisanych w XML - wystarczy połączyć się z programem CGI używającym wewnętrznie XML. Jak widać, XML jest wszędzie, w każdym zakątku Internetu.

Tyle tytułem rozdziału wstępnego. Już nieźle powinieneś się orientować, czym jest XML, więc w następnym rozdziale zajmiemy się regułami obowiązującymi w poprawnie sformułowanych dokumentach XML.

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. (przyp. tłum.)

Warto przypomnieć, że w HTML przeglądarki gwarantują, że nieznane sobie znaczniki pominą. (przyp. tłum.)

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ą w rozdziale 3. (przyp.tłum.)

Tekst polski zwykle jest większy o kilkanaście procent od zapisu jednobajtowego (np. zgodnie z normą ISO 8859-2). (przyp. tłum.)

Zwróć uwagę, że dokument ten nie jest poprawnie sformułowanym dokumentem XML (znaczniki <P> nie mają odpowiadających im znaczników końcowych). Należy również wspomnieć, że ostatni znacznik w bloku VML nie wymaga zamknięcia. (przyp. tłum.)

4 Część I Podstawy obsługi systemu WhizBang (Nagłówek strony)

Rozdział 1 Pierwsze kroki (Nagłówek strony)

4 C:\Moje dokumenty\Wojtek Romowicz\Książki\XML Vademecum profesjonalisty\r01-03.doc

C:\Moje dokumenty\Wojtek Romowicz\Książki\XML Vademecum profesjonalisty\r01-03.doc 1



Wyszukiwarka

Podobne podstrony:
rozliczenia 03 10
2010 03 10
27.03.10. FILOZOFIA PRZYRODY, Filozofia
11 03 10 01 xxx?schr b Hoch , Niedrigw o L
sciagi 03 10 sciaka rozliczenia
015 HISTORIA SZTUKI WCZESNOCHRZEŚCIJAŃSKIEJ I BIZANTYJSKIEJ, WYKŁAD, 03 10
Parytety - analiza 09.03.10, St. licencjackie
elektryka na" 03 10
czas 8 03 10
Wyklad statystyka opisowa 03 10 2010
20 03 10 A
Wykłady 03.10.2009, porty i terminale
PODSTAWY ZARZĄDZANIA ćw 20.03.10 20, Materiały studia, Podstawy zarządzania ćwiczenia
podstawy rekreacji czasu wolnego wyklad 1 03.10.10, GWSH, podstawy rekreacji i czasu wolnego
03 10 11
poloznictwo 11 03 10
03 (10)
SKŁAD ORKIESTRY HANZA (03 10)
MPLP 354;355 21.09.;03.10.2012

więcej podobnych podstron