r01-03.doc

(1132 KB) Pobierz
Helion









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

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

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 88592[1]. 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

elementów nie zapisuję jako <ELEMENT> (to jest znacznik), ale jako ELEMENT

:

<?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[2]?

Jak dokument XML wygląda w przeglądarce?

Okazuje się, że przeglądarki takie, jak Microsoft Internet Explorer 5 i Netscape Navigator 6

dodałem

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

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

zdanie zmienione

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

<?xm...

Zgłoś jeśli naruszono regulamin