Rozdział 1 ¨ Pierwsze kroki (Nagłówek strony)
w oryginale 7
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.
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
< POZDROWIENIA >
< KOMUNIKAT >
Witaj w pokręconymświecie XML.
DOKUMENT
POZDROWIENIA
KOMUNIKAT
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.
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:
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:
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.
psimek