r05-01.doc

(614 KB) Pobierz
Helion









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

Rozdział 5

w oryginale 7

.
Obsługa dokumentów XML w JavaScripcie

 

Kiedy już znasz JavaScript, przynajmniej w zakresie potrzebnym do naszych potrzeb, możemy zacząć pracę z Obiektowym modelem dokumentu (DOM), standardem interfejsu programistycznego do obsługi dokumentów XML opracowanym przez W3C. Zanim powstał standard DOM, parsery i procesory różnie traktowały dokumenty XML, a co gorsza wszystko się stale zmieniało. Wraz z przedstawieniem DOM XML nareszcie wprowadzono jakiś standard obsługi. Pamiętaj, że w tym rozdziale opieramy się na Internet Explorerze Microsoftu, w którym standard DOM został najpełniej zaimplementowany i udostępniony przez JavaScript.

DOM W3C

W referencji DOM W3C powiedziano, że dokument XML ma być traktowany jako drzewo węzłów. Każdy fragment danych jest węzłem, elementy dzieci i tekst zawarty w elementach stają się podwęzłami. Traktowanie dokumentu XML jako drzewa jest rozwiązaniem dobrym (choć nie jedynym, o czym przekonamy się, kiedy przejdziemy do Javy), gdyż stosunkowo łatwo jest wskazać, które elementy zawarte są w których – element zawarty w innym jest jego podwęzłem. W modelu DOM wszystko, co znajduje się w dokumencie, staje się węzłem: elementy, atrybuty, tekst i tak dalej. Oto rodzaje węzłów przewidziane w specyfikacji DOM W3C:

·         element

·         atrybut

·         tekst

·         sekcja CDATA

·         odwołanie do encji

·         encja

·         instrukcja przetwarzania

·         komentarz

·         dokument

·         typ dokumentu

·         fragment dokumentu

·         notacja

Przyjrzyj się na przykład 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>

Mamy tu węzeł instrukcji przetwarzania i węzeł elementu głównego DOKUMENT. Węzeł DOKUMENT ma dwa podwęzły, POZDROWIENIA i KOMUNIKAT. Oba te węzły dzieci określane są jako bliźniacze. Zarówno węzeł POZDROWIENIA, jak i KOMUNIKAT mają po jednym podwęźle – są to węzły tekstowe zawierające dane tekstowe. W tym rozdziale będziemy dokumenty traktować właśnie jako takie drzewa węzłów; drzewo tego dokumentu pokazano na rysunku 5.1.

Rysunek 5.1.

Dokument jako drzewo węzłów

<DOKUMENT>

< POZDROWIENIA >

< KOMUNIKAT >

Witaj w XML

Witaj w pokręconym
świecie XML.

DOKUMENT

POZDROWIENIA

KOMUNIKAT

Witaj w XML

Witaj w pokręconym
świecie XML.

Każdy fragment danych traktowany jest jako węzeł. Używając metod zdefiniowanych w DOM W3C można poruszać się po poszczególnych gałęziach drzewa dokumentu – przykładem takiej metody jest nextChild powodująca przesunięcie się do następnego dziecka lub lastSibling powodująca przeniesienie do ostatniego węzła bliźniaczego danego węzła bieżącego. Taka praca z dokumentem wymaga nieco praktyki, dlatego właśnie temu zagadnieniu będzie poświęcony cały ten rozdział.

Istnieje szereg różnych poziomów (Level) DOM:

·         Level 0

nie tłumaczę, bo z terminem Level czytelnik ma większe szanse się spotkać – traktuję to jako nazwę własną.

·         . Wprawdzie formalnie rzecz biorąc w DOM „poziom 0” nie istnieje, ale w ten właśnie sposób W3C określa wersję DOM zaimplementowaną we względnie wczesnych wersjach przeglądarek: Netscape Navigator 3.0 i Microsoft Internet Explorer 3.0.

·         Level 1. Taki właśnie poziom modelu DOM jest obecnie rekomendowany, na nim koncentrują się modele dokumentów HTML i XML. Dokumentację tego poziomu znajdziesz pod adresem www.w3.org/TR/REC-DOM-Level-1/.

·         Level 2. Ten poziom także ma już status rekomendacji

u autora jeszcze „candidate recommendation”

·         W3C, jest on bardziej zaawansowany – zawiera między innymi obiektowy model arkuszy stylów. Obsługiwane jest także dołączanie informacji o stylach do dokumentu. Umożliwia pełną analizę dokumentu, zawiera wbudowany model zdarzeń i obsługuje przestrzenie nazw XML. Dokumentację tego poziomu znajdziesz pod adresem www.w3.org/TR/DOM-Level-2/.

·         Level 3. Ten poziom jest na razie w fazie planów, obejmować ma ładowanie i zapisywanie dokumentów, modeli zawartości (DTD i XML Schema), ma też obsługiwać walidację. Oprócz tego zawierać ma widoki dokumentu i formatowanie, podstawowe zdarzenia i grupy zdarzeń. Nie istnieje jeszcze dokumentacja dotycząca tego poziomu.

Praktycznie rzecz biorąc jedyną względnie kompletną implementacją DOM XML jest implementacja w Internet Explorerze w wersji 5 i nowszych. Dokumentacja DOM Microsoftu obecnie dostępna jest pod adresem http://msdn.microsoft.com/library/psdk/xmlsdk/xmld20ab.htm, ale strony tej firmy notorycznie są reorganizowane, więc być może będziesz musiał sam tej dokumentacji poszukać. Jeśli tak się stanie, wejdź po prostu na stronę http://msdn.microsoft.com i wyszukaj frazy „xml dom” (należy przyjąć, że adresom URL ze stron Microsoftu nie należy ufać dłużej niż przez dwa miesiące).

Jako że Internet Explorer dobrze obsługuje DOM Level 1, to tej wersji będziemy używać w tym rozdziale. Należy mieć nadzieję, że przełożenie tego na inną przeglądarkę zgodną ze specyfikacją W3C nie okaże się zmaganiem z augiaszowymi stajniami.

Obiekty DOM XML

Oto obiekty DOM W3C Level 1:

Obiekt

Opis

Document

Cały dokument.

DocumentFragment

Fragment dokumentu.

DocumentType

Odwołanie do znacznika <!DOCTYPE>.

EntityReference

Odwołanie do encji.

Element

Element.

Attr

Atrybut.

ProcessingInstruction

Instrukcja przetwarzania.

Comment

Treść komentarza XML.

Text

Treść elementu lub wartość atrybutu.

CDATAsection

Sekcja CDATA.

Entity

Encja parsowana lub nieparsowana.

Notation

Notacja

Node

Węzeł drzewa.

NodeList.

Lista obiektów Node. Umożliwia realizację iteracji oraz operacje dostępu przez indeksy.

NamedNodeMap

Umożliwia iteracje i sięganie przez nazwę do zestawu atrybutów.

Microsoft używa do tych obiektów innych nazw, a także dodaje własne obiekty. W szczególności zdefiniowano „obiekty podstawowe”, które stanowią fundament całego DOM XML. Obiektem najwyższego poziomu jest DOMDocument, jest to jedyny obiekt, który można stworzyć bezpośrednio – dostęp do wszystkich innych realizowany jest za jego pośrednictwem. Oto lista obiektów podstawowych Internet Explorera:

Obiekt

Opis

DOMDocument

Węzeł główny drzewka DOM.

XMLDOMNode

Pojedynczy węzeł drzewa dokumentu. Zawiera informacje o typach danych, przestrzeniach nazw, DTD i schematach XML.

XMLDOMNodeList

Lista obiektów węzłów. Umożliwia realizację iteracji i dostęp przez indeksy.

XMLDOMNamedNodeMap

Umożliwia iteracje i dostęp do zestawu atrybutów przez nazwę.

XMLDOMParseError

Informacja o ostatnim błędzie. Zawiera numer błędu, numer wiersza, numer znaku oraz tekst opisowy.

XMLHttpRequest

Umożliwia komunikowanie się z serwerami HTTP.

XTLRuntime

Obsługuje metody, które można wywoływać z arkuszy stylów XSL.

Oprócz obiektów podstawowych DOM XML Microsoftu zawiera także obiekty XML DOM, którymi posługuje się podczas pracy z dokumentami. Są to między innymi różne rodzaje węzłów, takie jak XMLDOMAttribute, XMLDOMCharacterData i XMLDOMElement:

Obiekt

Opis

XMLDOMAttribute

Obiekt atrybutu.

XMLDOMCDATASection

Sekcja CDATA, której treść nie jest interpretowana.

XMLDOMCharacterData

Zawiera metody umożliwiające operacje na tekście.

XMLDOMComment

Podaje treść komentarza XML.

...
Zgłoś jeśli naruszono regulamin