background image

 

 

Bazy danych XML

Wydział Informatyki EWSIE
 

Wykład:  Bazy danych II – DOM Document

background image

 

 

Obiektowy model dokumentu 

DOM

Model DOM jest wynikiem prac producentów 
przeglądarek, mających na celu zamienienie 
stron dokumentów WWW w zbiory obiektów.

Element BODY na stronie WWW jest przykładem 
obiektu, obsługiwanego przez przeglądarkę.

Poszczególne elementy na stronie WWW mogą 
być więc traktowane jako obiekty posiadające 
właściwości, metody oraz zdarzenia. 

Hierarchia obiektów na stronie WWW jest 
strukturą, którą model DOM wnosi do 
dokumentu.

Niniejsze slajdy bazują na specyfikacji Document 
Object Model (DOM) Level 1 i Level 2 (patrz 

http://www.w3.org

)

background image

 

 

Przykład hierarchii obiektów 

DOM

Tabela

Wiersz

Wiersz

Komórka

Komórka

Komórka

Komórka

Dane

komórki 1

Dane

komórki 2

Dane

komórki 4

Dane

komórki 3

<Tabela border=‘1’ >
<TR><TD> Komórka 1 </TD> <TD> Komórka 2 </TD></TR>
<TR><TD> Komórka 3 </TD> <TD> Komórka 4 </TD></TR>
</Tabela>

background image

 

 

Hierarchia składników DOM

Składnik

Dopuszczalne obiekty potomne

Document

Element max 1, PI, Comment, 

DocumentType max 1

Document-

Fragment

Element, PI, Comment, Text, 

CDATASection, EntityRef.

DocumentType

Żaden (węzeł liściowy)

EntitReference

Element, PI, Comment, Text, 

CDATASection, EntityRef.

Element

Element, PI, Comment, Text, 

CDATASection, EntityRef.

Attr

Text, EntityReference

ProcessingInstr

uction

Żaden (węzeł liściowy)

Comment

Żaden (węzeł liściowy)

Text

Żaden (węzeł liściowy)

CDATASection

Żaden (węzeł liściowy)

Entity

Element, PI, Comment, Text, 

CDATASection, EntityRef.

Notation

Żaden (węzeł liściowy)

background image

 

 

Leksykon obiektów DOM

• Dalej przedstawimy szczegółowo obiekty Jądra 

XML DOM Level 2.

• W kolejnych punktach omówimy: opisy, atrybuty i 

metody każdego rodzju elementu w zależności od 
języka specyfikacji IDL.

• Książki zwykle zawierają jeszcze przykłady 

sposobów użycia poszczególnych pozycji i 
dowiązania do języka Java. Ze względu na 
ograniczenia czasowe niniejszego wykładu, 
przykłady i dowiązania do języka Java 
pomineliśmy. 

background image

 

 

Interfejs: Attr

• Opis: reprezentuje wartość przypisaną do atrybutu 

elementu XML. Ponieważ dostęp do obiektów Attr w 

obrębie DOM umożliwia jedynie attributes 

NameNodeList interfejsu Element, atrybuty parentNode, 

previousSibling oraz nextSibling zawsze zwracają null. 

Chociaż interfejs Attr dziedziczy podstawowy interfejs 

Node, nie znajduje tu zastosowania wiele podstawowych 

metod Node. Element XML może pobierać atrybut na 

kilka sposobów. Element posiada wartość atrybutu jeżeli:

– Dokument XML podaje wartość atrybutu w sposób jawny,

– Definicja DTD dokumentu określa wartość domyślną atrybutu,

– Atrybut jest dodawany programowo, za pomocą metody 

setAttribute( ) lub setAttributeNode( ) interfejsu Element

• Atrybuty: DOMString (nazwa - tylko do odczytu), 

ownerElement (łącze do elementy), specified 

(ustawienie jawne/niejawne), value (ułatwia odczyt 

wartości tekstowej Atrr).

Metody: brak.

background image

 

 

Interfejs: CDATASection

• Opis: interfejs CDATASection zawiera dane nie-

analizowalne, zapisane bez konwencji Escape
która występuje w dokumencie XML, w obrębie 
bloków CDATA. Chociaż interfejs ten dziedziczy 
interfejs TeCDATASection, nie można scalać 
sąsiednich bloków za pomocą metody normalize( ) 
interfejsu Element. CDATASection jest podklasą 
interfejsu Text i nie posiada własnych atrybutów 
ani metod.

• Atrybuty: brak.
• Metody: brak.

background image

 

 

Interfejs: CharakterData

• Opis: interfejs CharacterData jest całkowicie 

abstrakcyjny i rozszerza podstawowy interfejs Node 

jedynie o obsługę operacji na danych tekstowych. 

Każdy obiekt typu DOM, który ma do czynienia a 

danymi tekstowymi, dziedziczy po tym interfejsie 

bezpośrednio lub pośrednio.

• Atrybuty: data (umożliwia uzyskanie dostępu do 

„pierwotnych” danych węzła  CharacterDatalength 

(rozmiar DOMString zapisany w atrybucie data).

• Metody: appendData(arg) - dołącza zawartość 

parametru attr do bieżącej wartości atrybutu data; 

deleteData(offset, count) - likwiduje DOMString 

atrybucie data – usuwając count znaków, począwszy od 

położenia offsetinsertData(offset, arg) - dzieli bieżąca 

zawartość atrybutu data w położeniu offset, a 

następnie wstawia pomiędzy dwie części ciągu – ciąg 

znaków z parametru argreplaceData(offset, count, 

arg) – zastępuje część znaków; substringData(offset, 

count) – zwraca podzbiór.

background image

 

 

Obiekt: Comment 

• Opis: zawiera tekst komentarza XML, czyli 

wszystko, co znajduje się pomiędzy 
otwierającym <!- - a zamykającym - ->. 
Dziedziczy po CharacterData.

• Atrybuty: brak.
• Metody: brak.

background image

 

 

Object: Document

Opis: reprezentuje cały dokument XML o właściwej konstrukcji. 

Kiedy obiekt Document zostanie utworzony za pośrednictwem 

interfejsu DOMImplemantation, możemy uzyskać dostęp do 

każdego aspektu podstawowego dokumentu DOM.

Atrybuty: doctype – zwraca instancję interfejsu DocumentType 

DTD dla dokumentu; documentElement – wskazuje na 

pojedyńczy węzeł Element (tylko do odczytu); implementation – 

zwraca odwołanie do DOMImplementation (tylko do odczytu).

Metody: createAttribute(name) – tworzy atrybut o podanej 

nazwie; createAttributeNS(namespaceURI, qualifiedName); 

createDATASection(data); createComment(data); 

createDocumentFragment() – zwraca pusty obiekt; 

createElement (tagName); 

createElementNS(namespaceURI,qualifiedName); 

createEntityReference(name); 

createProcessingInstruction(target, data); createTextNode(data); 

getElementByID(name); getElementByTagName(tagName); 

getElementByTagNS(namespaceURI, localName); 

hasAttribute(name); hasAttributeNS(namespaceURI, localName); 

importNode(localName).

background image

 

 

Obiekt: DocumentFragment

• Opis: jest kontenerem wykorzystywanym do 

tymczasowego przechowywania fragmentów 
dokumentu XML. Nie posiada własnych metod ani 
właściwości, może oferować taki zakres funkcji, 
jakie udostępnia węzeł Node. Jako kontener, może 
być wykorzystywany przez przynajmniej jedno 
poddrzewo XML  o odpowiedniej konstrukcji. 
Najbardziej oczywistym zastosowaniem tego 
obiektu jest wykorzystywanie go jako schowka 
wykonawcy operacji typu przeciągniej-i-upuść (w 
edytorze graficznym).

• Atrybuty: brak.
• Metody: brak.

background image

 

 

Interfejs: DocumentType

• Opis: zawiera pojedynczy atrybut docType, który 

wskazuje na opis DTD dla bieżącego dokumentu, 
albo null gdy nie istnieje DTD.

• Atrybuty: entities – określa listę encji ogólnych; 

internalSubset – zawiera podzbiór wewnętrzny 
dokumentu; name – nazwa DTD występująca w 
dokumencie źródłowym ze słowem kluczowym XML 
DOCTYPEnotations – zawiera listę deklaracji 
zapisów XML dla bieżącego dokumentu; publicID – 
identyfikator publiczny podzbioru zewnętrznego 
(tylko do odczytu); systemID – URI podzbioru 
zewnętrznego bieżącego dokumentu.

• Metody: brak.

background image

 

 

ExceptionCode: 

DOMException

• Opis: w językach i obsługujących je platformach 

wykonawczych, strukturalne stany wyjątków 
oddzielają kod zajmujący się stanami nienormalnymi 
lub niespodziewanymi od normalnego potoku 
wykonawczego. W przypadku języków nie 
obsługujących wyjątków, na przykład ECMAScript 
albo Perl, stany te są zgłaszane programowi przez 
metody, które te stany rozpoznają jako kody błędów. 
ExceptionCode jest wartością całkowitą, która 
pokazuje jakiego typu wyjątek został wykryty. 
Wyróżniono 15 różnych wartości kodu.

• Atrybuty: brak.
• Metody: brak.

background image

 

 

Interfejs: 

DOMImplementation

• Opis: zapewnia globalną informację o aktualnie 

używanej implementacji DOM. Jedyny sposób 
odwołania się do interfejsu DOMImplementation 
polega na użyciu metody getIplementation( ) obiektu 
Document.

• Atrybuty: brak.
• Metody: createDocument( namespaceURI, 

qualifiedName, doctype); 
createDocumentType( quaifiedName, publicID, 
systemID); hasFeature( feature, version).

background image

 

 

Obiekt: Element

• Opis: zapewnia dostęp do struktury dokumentu XML i 

zawartych w nim danych. Każdy element XML, podlega 

translacji na jeden węzeł Element. Element bazowy 

dokumentu jest dostępny poprzez właściwość 

documentElement obiektu Document. Możliwe jest 

odtworzenie pełnej struktury pierwotnego dokumentu XML, 

dokonane w oparciu o ten węzeł – „przejście” przez drzewo 

elementów.

• Atrybuty: tagName – nazwa znacznika XML z pierwotnego 

dok.

• Metody: getAttribute( name); 

getAttributeNS( namespaceURI, localName); 

getAttributeNode( name); 

getAttributeNodeNS( namespaceURI, localName); 

getElementsByTagName( name); 

getElementsByTagName( namespaceURI, localName); 

hasAttribute( name); hasAttributeNS( namespaceURI, 

localName); removeAttribute( name); 

removeAttributeNS( namespaceURI, localName); 

removeAttributeNode( oldAttr); setAttribute( name, value); 

setAttributeNS( namespaceURI, localName); 

setAttributeNode( newAttr); setAttributeNodeNS( newAttr).

background image

 

 

Obiekt: Entity

• Opis: reprezentuje wartość zastępczą danej encji 

ogólnej XML. W zależności od tego, czy dana 
implementacja DOM kontroluje prawidłowość oraz, 
czy rozwija ona podczas analizy składni odwołania do 
encji w trybie liniowym, obiekty Entity mogą być 
niedostępne dla użytkownika DOM.

• Atrybuty: notationName: DOMString – jeśli encja 

nieanalizowana, jest nazwą zapisu tej encji; publicID: 
DOMString
 – nadany publiczny identyfikator URL albo 
null, gdy nie określono identyfikatora; systemID: 
DOMString
 – nadany systemowy identyfikator URL 
albo null, gdy nie określono identyfikatora.

• Metody: brak.

background image

 

 

Węzeł: EntityReference

• Opis: odwołania do encji pojawiają się w hierarchii 

dokumentu od razu, gdy odwołania do encji ogólnej 
XML zostanie osadzone w dokumencie źródłowym. 
W zależności od dokumentacji DOM, w grupie 
entities atrybutu docType obiektu Document może 
istnieć odpowiadający tej encji obiekt Entity. Jeśli 
taka encja istnieje, wtedy węzły potomne zarówno 
Entity, jak i EntityReference reprezentują skojarzony 
z daną encją tekst zastępczy.

• Atrybuty: brak.
• Metody: brak.

background image

 

 

Interfejs: NamedNodeMap

• Opis: oferuje mechanizm wykorzystywany do 

pobierania obiektów z grupy Node (pobieranie odbywa 

się według nazwy). Chociaż ten interfejs udostępnia 

takie same atrybuty i metody jak klasa NodeList, nie są 

one ze sobą powiązane. 

• Atrybuty: length – ogólna liczba węzłów Node 

znajdujących się na liście.

• Metody: getNameItem( name) – zwraca odwołanie do 

węzła ; getNameItemNS( namespaceURI, localName) – 

rozszerza poprzednią metodę o obsługę przestrzeni 

nazw; item( index) – zwraca odwołanie do obiektu; 

removeNamedItem( name) – usuwa obiekt Node

removeNameItemNS( namespaceURI, localName) – 

usuwa NodesetNameItem( arg) – wstawia do listy 

obiekt NodesetNamedItemNS( arg) – rozszerza 

poprzednią metodę uwzględniając przestrzeń nazw.

background image

 

 

Interfejs: Node

• Opis: jest podstawowym interfejsem dla każdej części 

składowej drzewa dokumentu DOM. Udostępnia on 

atrybuty wspólne dla wszystkich typów obiektów 

dokumentu i oferuje proste metody pobierania 

informacji specyficznych dla danego typu obiektu.

• Atrybuty: attributes: NamedNodeMap; childNodes: 

NodeList; firstChild: Node; lastChild: Node; localName: 

DOMString; namespaceURI; DOMString; nextSibling: 

Node; nodeName: DOMString; nodeType: unsigned 

short; nodeValue: DOMString; ownerDocument: 

Document; parentNode: Node; prefix: DOMString; 

previousSibling: Node.

• Metody: appendChild( newchild); cloneNode( deep); 

hasAttribute( ); hasChildNodes( ); 

inserdBefore( newchild, refchild); isSupported( feature, 

version); removeChild( oldchild); replaceChild( newchild, 

oldchild).

background image

 

 

Interfejs: NodeList

• Opis: umożliwia udostępnienie przez klasę DOM 

uporządkowanej grupy węzłów . NodeList 
reprezentuje macierz obiektów Node (o 
podstawie zero, tylko do odczytu). Ponieważ nie 
istniej mechanizm tworzenia, dodawania ani 
usuwania węzłów z NodList, nie można korzystać 
z tego interfejsu jako z narzędzia ogólnego 
przeznaczenia.

• Atrybuty: lengh: unsigned long - całkowita liczba 

obiektów znajdujących się na liście.

• Metody: item( index) – wskaźnik na listę o 

podstawie 0.

background image

 

 

Interfejs: 

ProcessingInstruction

• Opis: zapewnia dostęp do zawartości polecenia 

przetwarzania XML. Polecenia przetwarzania oferują 
mechanizm osadzania poleceń dla aplikacji 
przetwarzającej XML, która jest wołana z poziomu 
zawartości dokumentu XML.

• Atrybuty: data: DOMString – zwraca zawierającą dane 

część polecenia przetwarzania. Część ta zaczyna się 
od pierwszego znaku, który nie jest znakiem białym, 
występującej po żetonie target – a kończy się na 
zamykającej sekwencji ?>target: DOMString – zwraca 
część polecenia przetwarzania zawierającą obiekt 
docelowy. Obiektem docelowym jest pierwszy żeton z 
ogranicznikami w postaci białych znaków, występujący 
w obrębie bloku polecenia przetwarzania.

• Metody: brak

background image

 

 

Węzeł: Text

• Opis: zawierają występujące w obrębie dokumentu XML 

dane znakowe, które nie są oznaczeniem. Po wykonaniu 

analizy składni dokumentu, dla każdego ciągłego pliku 

tekstowego, który nie jest oznaczeniem, istnieje 

dokładnie jeden węzeł Text:

<węzeł_tekstowy> To jest tekst </ węzeł_tekstowy> 

• Atrybuty: brak.
• Metody: splitText ( offset) – dzieli węzeł Text na dwa 

sąsiadujące węzły Text. Zawartość pierwotnego węzła 

zostaje podzielona w miejscu, wskazanym przez offset, 

przy czym drugi ciąg znaków stanowi wartość nowego 

węzła. Pierwszy podciąg znaków pozostaje w pierwotnym 

węźle. Gdyby dany węzeł był aktualnie włączony do 

drzewa DOM, nowy węzeł z oddzielną zawartością staje 

się następnym siostrzanym węzłem pierwotnego węzła. 

Zwracany jest nowy węzeł Text, zawierający drugą część 

danych

background image

 

 

Podstawowe typy 

składników

Document – może posiadać pojedynczy węzeł Element

węzły Processing Instructions PI, węzły Comment i 

pojedynczy węzeł DocumentType.

DocumentFragment – może posiadać węzły: Element, PI, 

Comment, Text, CDATA i EntityReference.

DocumentType – nie może posiadać węzłów dzieci.

EntityReference - może posiadać węzły: Element, PI, 

Comment, Text, CDATA i EntityReference.

Element - może posiadać węzły: Element, PI, Comment, Text, 

CDATA i EntityReference.

Attr (atrybut) - może posiadać węzły: Text i EntityReference.

Comment – nie może posiadać węzłów dzieci.

Text – nie może posiadać węzłów dzieci.

CDATA – nie może posiadać węzłów dzieci.

Entity - może posiadać węzły: Element, PI, Comment, Text, 

CDATA i EntityReference.

Notation – nie może posiadać węzłów dzieci.


Document Outline