tai w6 dom nstac www

background image

1

















































Transformacja dokumentów XML

Document Object Model - DOM

Modele programowania XML

Zorientowany na reguły (oparty na wzorcach).

Zorientowany na drzewa (oparty na strukturze).

Zorientowany na zdarzenia (oparty na strumieniowaniu).

1. Orientacja na reguły. Program wykonuje reguły transformacyjne na danym

dokumencie XML, powodując globalne zmiany w jego strukturze – XSLT
(

eXtensible Stylesheet Language Transformations

).

2. Orientacja na drzewa. Program trawersuje i lokalnie modyfikuje drzewo

dokumentu, stworzone w pamięci przez parser XML - DOM (

Document Object

Model

).

3. Orientacja na zdarzenia. Program reaguje na zdarzenia zgłoszone przez parser

XML, gdy ten przetwarza dokument wejściowy XML – SAX (

Simple API for XML

).

TAI LJ

background image

2















































XML w aplikacjach

Aplikacja korzystająca z danych zapisanych w dokumentach XML korzysta z
procesora XML (parsera).

Zadaniem aplikacji jest dostarczenie funkcji, które będą wywoływane dla

konkretnych zdarzeń (callbacks).

Sposób, w jaki aplikacja może przesyłać żądania do parsera i odbierać
informacje o zdarzeniach (czyli API parsera).

TAI LJ

Rodzaje oprogramowania do przetwarzania dokumentów XML:

- procesor XML, odczytuje i udostępnia strukturę i treść dokumentu,

- aplikacja, korzysta ze struktury i treści udostępnionej przez procesor XML,

Rodzaje parserów:

- parsery DOM,

- parsery SAX.

Technologia DOM

DOM - struktura służąca reprezentacji dokumentu XML oraz zbiór funkcji do
operacji na tej strukturze.

Obiektowy model dokumentów XML, HTML.

Standard W3C DOM definiuje zespół klas i interfejsów, pozwalających na
dostęp do struktury dokumentów oraz jej modyfikacje.

Struktura dokumentu ze znacznikami zostaje w całości wczytana do pamięci i
udostępniona programowi w postaci hierarchii obiektów.

TAI LJ

Reakcja na błędy przekazywane przez model obiektu:

- Informacje o błędach są przekazywane za pomocą wartości zwracanej,

- Wyjątki są generowane jedynie wtedy, kiedy wystąpi błąd (warunek)

nieodwracalny.

- DOM powinien dostarczać opis do błędów.

background image

3

















































Technologia DOM

Standard modelowania dokumentów XML przy użyciu struktury drzewa.
Znaczniki XML i ich zawartość są modelowane przez węzły drzewa, natomiast
zagnieżdżanie znaczników służy wyznacza hierarchię drzewa.

Forma reprezentacji dokumentów XML w pamięci komputera.

Transformacja dokumentu XML do postaci drzew DOM jest realizowana
automatycznie przez parser DOM.

Implementacja, adresowanie i przeszukiwanie drzew DOM mogą być
realizowane przy użyciu biblioteki DOM API.

TAI LJ

Technologia DOM

DOM zapewnia:

Zbiór obiektów reprezentujących dokumenty XML i HTML.

Model łączenia obiektów.

Standardowy interfejs umożliwiający dostęp i manipulację obiektami.

Niezależność od platformy i języka programowania.

Rekomendację W3C.

TAI LJ

background image

4















































Technologia DOM

<katalog>

<ksiazka kategoria=”Technika”>

<tytul> XML approach </tytul>
<autorzy>

<autor> Tom Rush </autor>
<autor> John Robson </autor>

</autorzy>
<wydawca> WILEY </wydawca>
<ISBN> 66-5454-777-1 </ISBN>
<rok> 2010 </rok>

</ksiazka>

. . . . .
</katalog>

TAI LJ

Struktura drzewa DOM

< ksiazka >

Technika

<katalog>

< tytul >

< autorzy >

<wydawca>

<ISBN>

< rok >

< autor >

< autor >

XML

approach

WILEY

66-5454-777-1

2010

Tom

Rush

John

Robson

korzeń

węzeł elementu

węzeł atrybutu

węzeł tekstowy

legenda

<katalog>
<ksiazka kategoria=”Technika”>
<tytul> XML approach </tytul>
<autorzy>

<autor> Tom Rush </autor>
<autor> John Robson </autor>
</autorzy>
<wydawca> WILEY </wydawca>
<ISBN> 66-5454-777-1 </ISBN>
<rok> 2010 </rok>

</ksiazka>
. . . . .
</katalog>

TAI LJ

background image

5















































Poziomy DOM

DOM Level 1 (1998r.) - umożliwia dostęp do treści dokumentu poprzez

tworzenie, modyfikowanie oraz dołączanie elementów i atrybutów.

DOM Level 2 (2000) - dodatkowo wprowadza możliwość obsługi zdarzeń i
przestrzeni nazw. Wprowadzono kilka poprawek do części Core poprzedniej

wersji.

DOM Level 3 (2004) - najnowsza (trzecia) wersja standardu poprawiono części

Core oraz Events.

DOM Level 0 (nieoficjalny) - Model DOM z przeglądarki Netscape 3.0,

umożliwia dostęp tylko do pól formularzy. Nie jest standardem W3C

TAI LJ

Wymagania odnośnie DOM

Model DOM jest językowo obojętny.

Jądro DOM powinno być w stanie przetwarzać dokumenty XML, HTML i CSS.

Model DOM może być użyty do wczytywania i zapisywania dokumentu.

Konwencja nazewnictwa musi być jednakowa na wszystkich poziomach DOM.

Model DOM nie powinien narażać aplikacji użytkownika na błędy związane z

bezpieczeństwem, walidacją i prywatnością.

TAI LJ

background image

6















































Obiekty DOM

DOM Level 1:

Core - obiekty reprezentujące strukturę dokumentu. Pozwalają na

przetwarzanie struktury dokumentu.

HTML - podstawowe metody dostępu do struktury dokumentu.

DOM Level 2:

Events

- obsługa zdarzeń.

Style

- manipulowanie arkuszami stylów.

Views

- "widoki" drzewa dokumentu po zastosowaniu stylów CSS.

Traversal&Range - sposoby nawigowania po dokumencie XML.

DOM Level 3:

Części Core oraz Events są poprawione.

Load & Save - ładowanie i zapisywanie dokumentu.

Validation

- dostęp do definicji struktury dokumentu (DTD).

XPath

- dostęp do węzłów DOM przez wyrażenia XPath

TAI LJ

Model dokumentu

Węzły elementowe: zawierają węzły potomne: elementowe, tekstowe lub obu
rodzajów.

Węzły atrybutowe: informacja podległa konkretnemu węzłowi elementowemu.

Węzeł dokumentu: rodzic dla wszystkich pozostałych węzłów.

CData: odpowiada sekcji znakowej, zawierającej zawartość nie
przeznaczoną do przetwarzania.

Comment: komentarz.

ProcessingInstruction: instrukcja przetwarzania.

DocumentFragment: stosowany jako węzeł roboczy przy budowaniu lub
rekonstruowaniu dokumentu XML.

Pozostałe - Entity, EntityReference, Notation.

TAI LJ

background image

7















































DOM API

DOMImplementation - sprawdzenie, czy dana funkcjonalność jest
zaimplementowana, tworzenie nowej instancji dokumentu, tworzenie nowego
typu dokumentu.

Document - reprezentuje drzewo dokumentu, udostępnia korzeń drzewa.

DocumentFragment - umożliwia przetwarzanie części drzewa dokumentu.

Node - podstawowy interfejs podstawowy, z którego dziedziczy większość
obiektów DOM. Umożliwia przekształcanie drzewa dokumentu.

NodeList - reprezentuje listę obiektów typu Node.

Element - modeluje węzeł reprezentujący parę znaczników XML

Text - reprezentuje treść umieszczoną wewnątrz pary znaczników XML.

Attr - umożliwia operowanie na atrybutach. Reprezentuje atrybut znacznika
XML w formie tzw. węzła atrybutu.

TAI LJ

DOMImplementation - metody

hasFeature(s) - sprawdza, czy dana funkcjonalność jest
zaimplementowana.

createDocument(s) - tworzy nowe drzewo dokumentu.

createDocumentType(s) - tworzy nowy typ dokumentu.

TAI LJ

background image

8















































Obiekt Document – metody

createElement(s) - tworzy element o określonej nazwie.

createAttribute(s) - tworzy atrybut o określonej nazwie.

createTextNode(s) - tworzy węzł tekstowy elementu.

createComment(s) - tworzenia komentarza.

createCDATASection(s) - tworzy sekcję CDATA.

createProcessingIntrucion(s) - tworzy instrukcję przetwarzania.

createEntityReference(s) - tworzy wskazania na jednostkę o
określonej nazwie

createOocunientFragment(s) - tworzy obiekt reprezentujący fragment
dokumentu.

getElementsByTagName(s) - wyszukuje listy węzłów.

TAI LJ

Obiekt Document – metody

DOM level 2 (przestzrenie nazw):

createElementNS(s) - przeznaczona jest do tworzenia elementu
należącego do określonej przestrzeni nazw.

createAttributeNS(s) - służy do tworzenia atrybutu należącego do
określonej przestrzeni nazw.

etElementsByTagNameNS(s) - służy do wyszukiwania listy węzłów o
określonej nazwie, należących do zadanej przestrzeni nazw.

TAI LJ

background image

9















































Obiekt Document – atrybuty

doctype - wskazuje na typ dokumentu (DocumentType).

implementation - wskazujący na implementację dokumentu
(DOMImplementation).

element - wskazujący na element główny, korzeń drzewa (Element).

TAI LJ

Budowanie drzewa dokumentu

<AUTOR>

<IMIE> Steven </IMIE>
<NAZWISKO> Schafer </NAZWISKO>

</AUTOR>

import org.w3.dom.*;
public class DOM
{

public static void main(String[] args)
{
DOMlmplenmentation domImp =

new org.apache.xerces.dom.DOMImplementationImpl();

Document nowyDOM = domIml.createDocument(“null”,”autor”,null);
Element korzen = nowyDOM.getDocumentElement();
Element imieElement = nowyDOM.createElement(“imie”;
Element nazwiskoElement = nowyDOM.createElement(“nazwisko”);
Text imieText = nowyDOM.createTextNode(”Steven”);

Text nazwiskoText = nowyDOM.createTextNode(Schafer);
imieElement.appendChild(imieText);
nazwiskoElement.appendChild(nazwiskoText);

korzen.appendChild(imieElement);
korzen appendChildd(nazwiskoElement);
}

}

TAI LJ

background image

10















































Obiekt Node - metody

insertBefore(n) - wstawianie nowego węzła przed już istniejący,

removeChild(n) - usuwanie określonego węzła.

appendChild(n) - dodanie nowego węzła,

hasChildNodes(n) - sprawdza, czy dany węzeł posiada węzły-dzieci

cloneNode(n) - kopiowanie określonego węzła.

hasAttributes(n) - określa, czy dany węzeł (jeśli jest elementem)
zawiera atrybuty.

TAI LJ

Atrybuty DOM2

nodeName

nazwa węzła.

nodeValue

wartość węzła.

nodeType

typ węzła.

parentNode

węzeł-rodzic.

childNodes

zbiór węzłów-dzieci (NodeList).

firstChild

pierwsze dziecko.

lastChild

ostatnie dziecko.

previousSibling węzeł: poprzedzające rodzeństwo.

nextSibling

węzeł: kolejne rodzeństwo.

attributes

zbiór atrybutów (NamedNodeMap).

ownerDocument

obiekt Docurnent, w którym znajduje się dany węzeł.

TAI LJ

background image

11















































Atrybuty DOM2

Level 2 zawiera atrybuty nieistniejące w wersjach wcześniejszych:

namespaceURI - wskazywać na przestrzeń nazw, do której należy węzeł.

prefix

- prefiks, opisujący przestrzeń nazw.

localName

- ten atrybut określa lokalną nazwę danego węzła (bez

prefiksu).

TAI LJ

Hierarchia drzewa dokumentu

TAI LJ

Węzeł

Węzeł

Węzeł

parentNode

lastChild

nextSibling

Węzeł

Węzeł

Węzeł

Węzeł

firstChild

previousSibling

ęę

ęzełłłł

odniesienia

Child

background image

12















































Hierarchia węzłów - Oś

ancestor - dotyczy przodków węzła kontekstowego.

ancestor-or-self - dotyczy węzła kontekstowego i jego przodków.

attribute - dotyczy atrybutów węzła kontekstowego.

child - dotyczy dzieci węzła kontekstowego.

descendant - dotyczy potomków węzła kontekstowego.

descendant-or-self - dotyczy węzła kontekstowego i jego potomków.

following - dotyczy wszystkich węzłów do którego należy węzeł kontekstu,

które znajdują się po nim.

following-sibling - dotyczy wszystkich węzłów znajdujących się na

tym samym poziomie co węzeł kontekstu, za tym węzłem.

TAI LJ

Hierarchia węzłów - Oś

namespace - dotyczy wezłów przestrzeni nazw węzła kontekstu.

parent -

dotyczy węzła rodzica węzła kontekstowego.

preceding - dotyczy wszystkich węzłów z dokumentu, do którego należy

węzeł kontekstu, które znajdują się przed nim,

preceding-sibling - dotyczy wszystkich węzłów znajdujących się na

tym samym poziomie co węzeł kontekstu, przed tym węzłem,

self - zawiera węzeł kontekstowy.

TAI LJ

background image

13















































Obiekt NodeList

Obiekt NodeList - atrybuty:

length

liczba elementów na liście.

Obiekt NodeList - atrybuty:

item(i)

zwraca i-ty element listy

TAI LJ

Obiekt Element - metody

TAI LJ

getAttribute(String nazwa) - służy do pobrania wartości
określonego atrybutu,

setAttribute(String nazwa, String wartosc) - służy do
przypisania wartości określonemu atrybutowi .

removeAttribute(String nazwa) - usuwa wartości określonego
atrybutu,

getAttributeNode(String nazwa) -

pobiera atrybut (obiekt typu Attr)

o określonej nazwie,

setAttributeNode(Attr atrybut) - dodaje nowy atrybut do elementu,

removeAttributeNode(Attr atrybut) - usuwa z elementu określony
atrybut.

tagName - (właściwość) - nazwa węzła

background image

14















































Przykład

NodeList lista = elem.getElementsByTagName(”pozycja”);
if (lista.getLength()>O)
{

Element wezel = (Element)lista.item(0);
if wezel.hasAttriubte(“wezel”)
{
String waluta = wezel.getAttribute(“waluta”);
if (waluta.equals(“$”))
wezel.setAttribute(“waluta”,”ZL”);
}

}

Zmiana wartości atrybutu waluta w pierwszym elemencie pozycja.

TAI LJ

Obiekt Attr i Text

name - reprezentuje nazwę atrybutu.

specified - określa, czy wartość atrybutu została nadana w aplikacji, czy jest
domyślną wartością pobraną z DTD dokumentu.

value - określa wartość atrybutu.

ownerElement - zawiera odwołanie do elementu, do którego należy badany
atrybut.

Obiekt Attr Reprezentuje węzeł atrybutowy. Dostęp do atrybutów może odbywać
się poprzez zmienne zawarte w obiekcie interfejsu Attr:

Obiekt klasy/typu Text reprezentuje treść umieszczoną wewnątrz znacznika XML.

TAI LJ

background image

15















































DOM API

Bazowa cześć specyfikacji DOM umożliwia:

Budowanie dokumentów.

Nawigację po strukturze dokumentów.

Dodawanie elementów i atrybutów.

Modyfikacje elementów i atrybutów.

Usuwanie elementów/atrybutów i ich zawartości.

TAI LJ

Wady DOM

Duże zapotrzebowanie na pamięć.

Niska efektywność.

Skomplikowany model dostępu do węzłów.

Interfejs programistyczny DOM.

Model dokumentu XML jako drzewa obiektów.

Węzeł drzewa = obiekt.

TAI LJ

background image

16















































Zalety DOM

Intuicyjny w użytkowaniu.

Standard W3C.

Swobodny dostęp do elementów dokumentu, mżliwość jego modyfikacji i
zapisu.

Możliwość modyfikacji i tworzenia dokumentów, swobodny dostęp do danych.

TAI LJ

Transformacja dokumentów XML

(Simple API for XML - SAX)

Przetwarzanie strumieniowe SAX

http://www.saxproject.org

background image

17















































Standard SAX

Podstawowe własności:

zdarzeniowość (event driven) - podczas przetwarzania procesor SAX informuje

o napotkaniu znaczników początkowych oraz końcowych, atrybutów, sekcji
CDATA itp.

strumieniowość - w danej chwili badany jest tylko drobny fragment dokumentu,
nie ma możliwości zatrzymania bądź zmiany kierunku przetwarzania.

elastyczność - określone są jedynie ramy całej aplikacji (w postaci interfejsów i
podstawowych klas).

TAI LJ

Standard SAX

SAX API - interfejs programistyczny wykorzystujący model zdarzeniowy do

budowy parserów dokumentów XML.

Parser SAX odczytuje wskazany dokument XML i dla każdego
zidentyfikowanego elementu składniowego wywołuje standardowe metody
obiektu klasy przygotowanej przez programistę.

SAX API umożliwia konwersję dokumentu XML do dowolnej struktury danych, a
nie wyłącznie do drzewa DOM.

Zadaniem programisty jest przygotowanie klasy dziedziczącej z
D

ocumentHandler

i oprogramowanie jej metod:

- startDocument() / endDocument()

- startElement() / endElement()

- characters()

TAI LJ

background image

18















































Zasada działania SAX

SAX traktuje dokument XML jako strumień danych, który jest
odczytywany sukcesywnie w czasie parsowania.

API SAX oparte jest o mechanizm zdarzeń, które są generowane podczas
parsowania elementu.

Zdarzenie wywołuje zarejestrowaną funkcję zwrotną (

callback

).

TAI LJ

Wywołanie
zdarzenia

Dokument

XML

PARSER SAX

Przetwarzanie

APLIKACJA

Zasada działania SAX

Aplikacja zawiera analizator składni (parser) XML.

Parser przetwarza pliki XML w różnych fazach działania aplikacji.

SAX został zaprojektowany dla Javy w formie interfejsów i klas w pakietach
org.xml.sax i org.xml.sax.helpers.

Technologia SAX jest określana jako interfejs zdarzeniowy programista
definiuje przetwarzanie dokumentu w postaci obsługi odpowiednich,
predefiniowanych rodzajów zdarzeń, które są generowane sekwencyjnie
podczas wczytania dokumentu. Zdarzeniami są np. napotkanie znaczników
otwierających, zamykających, atrybutów itd.

Przetwarzanie strumieniowe. Dokument jest wczytywany od początku do
końca i w tej kolejności generowana jest odpowiednia sekwencja zdarzeń.

TAI LJ

background image

19















































Podstawowe zdarzenia

początek dokumentu startDocument.

koniec dokumentu

endDocument

.

początek elementu startElement

koniec elementu

endElement

odebrany tekst - zawartość tekstowa elementu characters.

odebrany tekst - przejście do następnej linii lub inny znak biały

TAI LJ

Standard SAX

Zalety:

- Prostota implementacji.

- Małe zapotrzebowanie na pamięć.

- Sekwencyjne wczytywanie pliku.

- Szybkość.

TAI LJ

Wady:

- Złożona obsługa.

- Brak dostępu do całego pliku XML.

- Tylko odczyt.

background image

20

















































awigacja i wyszukiwanie

XPath

XPath

XPath wykorzystywany w standardach:

W transformacjach XSLT do określania, które fragmenty dokumentu XML mają
podlegać danej transformacji.

W odsyłaczach XLink - do wskazywania (adresowania) części dokumentu XML
w odesłaniach hipertekstowych.

W wyrażeniach XPointer (rozszerzenie XPath).

W schematach XML-Schema do zapewnienia unikatowości w elementach i
atrybutach niepowtarzalnych.

W pytaniach XQuery - do tworzenia zapytań.

TAI LJ

Status:

wersja 1.0 – rekomendacja W3C (1999 r.)

wersja 2.0 – candidate recommendation (2006r.).

background image

21















































XPath

Technologia XPath:

XPath - specyfikacja języka służącego do adresowania, odczytywania i
przeszukiwania drzew DOM dokumentów XML.

XPath używa opisu “ścieżek” do nawigowania po dokumencie XML (XPath
stosuje notację przypominającą ścieżki dostępu w systemach plików).

Wynikiem ewaluacji wyrażenia XPath jest zbiór węzłów spełniających warunki
selekcji.

XPath zawiera wbudowaną bibliotekę standardowych funkcji.

XPath jest głównym elementem XSLT.

XPath jest standardem W3C.

TAI LJ

XPath

XPath (wersja 1.0) wyróżnia następujące typy zwracanych wartości:

Boolean - wartość logiczna.

number - liczba

string - łańcuch tekstu.

node-set - zbiór węzłów (zbiór uporządkowany, podtrzymuje oryginalną
kolejność pobranych elementów).

TAI LJ

background image

22















































Budowa wyrażeń XPath

Ścieżka

(location path)

(ciąg określający przetwarzanie) jest zbudowana z kroków,

Oddzielonych symbolem "/„. Krok może reprezentować:

Element.

Atrybut.

Wywołanie funkcji.

Ścieżki we wzorcu (pattern), poprzedzielane są symbolem „ „

TAI LJ

Wzorzec

dane/pozycja[1]

dane/pozycja[2]/kwota@nr=4

dane/pozycja[3]

Ś

ŚŚ

Ścież

żż

żka

Ś

ŚŚ

Ścież

żż

żka

Ś

ŚŚ

Ścież

żż

żka

Ś

ŚŚ

Ścież

żż

żka

dane

/

pozycja[2]

/

kwota@nr=4

Krok

Krok

Krok

Drzewo węzłów

XPath rozróżnia siedem typów węzłów:

Element.

Tekst.

Przestrzeń nazw.

Instrukcję przetwarzania.

Komentarz.

Węzeł dokumentu.

TAI LJ

background image

23















































Drzewo węzłów

Relacje w drzewie węzłów:

Rodzic (parent) - dziecko (child).

Rodzeństwo (sibling): poprzednik-następnik.

Przodek (ancestor) - potomek (descendant).

TAI LJ

Operatory nawigacji

Operatory nawigacji (osie (axes)):

Self - bieżący węzeł (zwany kontekstem: context node ),

Parent - rodzic aktualnego węzła (pusty dla węzła korzenia),

Child - bezpośrednie podelementy

Descendant - całe drzewo podelementów poniżej aktualnego,

Descendant-or-self – potomkowie oraz aktualny węzeł,

Ancestor - przodkowie aktualnego węzła

Ancestor-or-self - przodkowie oraz aktualny węzeł

Following-sibling - kolejne węzły na tym samym poziomie hierarchii.

Preceding-sibling - wcześniejsze węzły na tym samym poziomie

Following - wszystkie kolejne węzły (bez potomków),

Preceding - wszystkie poprzednie węzły (bez przodków).

TAI LJ

background image

24















































Budowa kroku w wyrażeniu XPath

Składnia pojedynczego kroku ma następującą strukturę:

1.

Kierunek (axis)

2.

Podwójny dwukropek "::"

3.

Symbol "*" (selekcjonuje dowolny element)

4.

Nazwa elementu, albo wywołanie funkcji:
-

node() - dowolny węzeł widoczny z bieżącego kontekstu,

-

text() - zawartość tekstowa bieżącego węzła-kontekstu

-

comment() - komentarze w bieżącym kontekście

-

processing-instruction() - instrukcje przetwarzania w bieżącym
kontekście.

TAI LJ

Budowa kroku w wyrażeniu XPath

Składnia pojedynczego kroku ma następującą strukturę:

1. self::* - dostęp do aktualnego węzła.

2. preceding::pozycja - dostęp do poprzedzających aktualny węzeł

elementów o nazwie pozycja.

3. preceding::text() - dostęp do poprzedzających aktualny węzeł

zawartości tekstowych.

4. following-sibling::node() - dostęp do elementów występujących na

tym samym poziomie, co aktualny węzeł i będących jego następnikami.

5. following-sibling::comment() - dostęp do komentarzy występujących

na tym samym poziomie, co aktualny węzeł i będących jego następnikami.

6. ancestor: :procesing-instruction() - dostęp do instrukcji

przetwarzania występujących w węzłach-przodkach.

TAI LJ

background image

25















































Skróty w wyrażeniach ścieżkowych

..

parent::node()

Rodzic aktualnego węzła

//

descendant-or-self::node()

Potomkowie lub aktualny węzeł

.

self::node()

Aktualny węzeł

@

attribute::

Atrybut

[2]

[position()=2]

Drugi z potomnych elementów

Skrót

Wyrażenie

Znaczenie

Child::

Dzieci aktualnego węzła

TAI LJ

Skróty w wyrażeniach ścieżkowych

child jest kierunkiem domyślnym. Słowo kluczowe reprezentujące ten kierunek
nawigacji może być pominięte. Zatem zapisowi:

TAI LJ

/descendant-or-self::node()/child::para

odpowiadać może:

//child::para

a w konsekwencji:

//para

/child::firma/child::dzial/child::pracownik[position()=1]

/firma/dzial/pracownik[1]

Wyselekcjonowanie pierwszego elementu pracownik z każdego elementu dział
znajdującego się w elemencie-korzeniu firma.

background image

26















































Skróty w wyrażeniach ścieżkowych

TAI LJ

1.

Wybór węzłów w drzewie DOM:

-

wybierz autorów wszystkich książek,

/katalog/ksiazka/autorzy

-

wybierz wszystkie wydawnictwa dowolnie zagłębione w drzewie

//wydawnictwo

-

wybierz wszystkie węzły potomne (dzieci) każdego węzła książka

//ksiazka/*

2.

Wybór n-tego węzła danego rodzaju:

-

wybierz pierwszego autora każdej książki,

//autorzy/autor[1]

-

wybierz drugiego autora pierwszej książki,

//ksiazka[1]//autor[2]

-

wybierz ostatnią książkę

//ksiazka[last()]

Skróty w wyrażeniach ścieżkowych

TAI LJ

3.

Wybór węzłów, które posiadają podany węzeł potomny:

-

wybierz książki, które posiadają autorów,

//ksiazka[autorzy]

-

wybierz książki, które napisała Konopnicka,

//ksiazka[autorzy/autor="Konopnicka"]

4.

Alternatywa ścieżek:

-

wybierz tytuły książek i wydawnictwa,

//tytul|//wydawnictwo

-

wybierz tytuły książek napisanych przez Konopnicką i Orzeszkową ,

//tytul[..//autor="Konopnicka"]|//tytul[..//autor="

Orzeszkowa"]

background image

27

















































Skróty w wyrażeniach ścieżkowych

TAI LJ

3.

Wybór węzłów, które posiadają podany węzeł potomny:

-

wybierz książki, które posiadają autorów,

//ksiazka[autorzy]

-

wybierz książki, które napisała Konopnicka,

//ksiazka[autorzy/autor="Konopnicka"]

4.

Alternatywa ścieżek:

-

wybierz tytuły książek i wydawnictwa,

//tytul|//wydawnictwo

-

wybierz tytuły książek napisanych przez Konopnicką i Orzeszkową,

//tytul[..//autor="Konopnicka"]|//tytul[..//autor="

Orzeszkowa"]

Skróty w wyrażeniach ścieżkowych

TAI LJ

5.

Wybór węzłów zawierających atrybuty:

-

wybierz książkę o numerze ISBN "88-7777-1111-X",

//ksiazka[@isbn="88-7777-1111-X"]

-

wybierz wszystkie numery ISBN,

//@isbn

6.

Odczyt treści węzła:

-

odczytaj treści wszystkich tytułów książek,

//ksiazka/tytul/text()

background image

28















































Pełne wyrażenia XPath

TAI LJ

1.

Wyrażenie ścieżkowe XPath składa się z tzw. kroków rozdzielonych ukośnikami.

2.

W pełnym zapisie, każdy z kroków może składać się z

-

specyfikatora współrzędnych (

axis

), służącego do określenia miejsca w

drzewie, począwszy od którego wyszukiwane będą węzły,

-

testu węzła (

node test

), służącego do określenia, które węzły są

wyszukiwane w obszarze drzewa określonym przez specyfikator

współrzędnych,

-

predykatów, dodatkowo zawężających test węzła, powodujących wybór

tylko tych węzłów, które spełniają podany warunek.

3.

Każdy krok pełnego wyrażenia XPath zapisywany jest przy użyciu następującej

notacji:

spec_współrzędnych::test_węzła[predykaty]

Pełne wyrażenia XPath

TAI LJ

1.

Wybierz książki, których cena nie przekracza 20 zł:

//ksiazka[cena<=20]

2.

Wybierz tytuły książek o cenach w przedziale 30-40 zł:

//ksiazka/tytul[../cena>30 and../cena<40]

3.

Wybierz książki napisane przez więcej niż dwóch autorów:

//ksiazka[count(autorzy/autor)>2]

4.

Wybierz co drugą książkę:

//ksiazka[position()mod 2 = 1]

5.

Wybierz książki zawierające w tytule słowo XML:

//ksiazka[contains(tytul,"XML")]

6.

Wybierz tytuły złożone z ponad 20 znaków:

//tytul[string-length(.)>20]

background image

29















































Pełne wyrażenia XPath

TAI LJ

1.

Wybierz książki, których numer ISBN spełnia wzorzec ***7197******:

//ksiazka[substring(@isbn,4,4) = "7197"]

2.

Wybierz wszystkie węzły autorzy oraz wszystkie ich węzły potomne:

//autorzy/descendant-or-self::*

3.

Wybierz wszystkie książki, które w dokumencie znajdują się za książką o

numerze ISBN "83-7197-786-7":

//ksiazka[@isbn="83-7197-786-7"]/following::ksiazka

4.

Wybierz wszystkie atrybuty pierwszej książki:

//ksiazka[1]/attribute::*

5.

Wybierz cenę książki pt. "XML dla każdego”:

//ksiazka[tytul="XML dla każdego"]/child::cena

Transformacja wyrażeń skróconych do pełnych

TAI LJ

1.

Wybierz książki, których numer ISBN spełnia wzorzec ***7197******:

//ksiazka[substring(@isbn,4,4) = "7197"]

skrócone

pełne

przykład

brak

child::

//ksiazka/cena =>
//ksiazka/child::cena

@

attribute::

//katalog/ksiazka[@isbn= "83-7197-786-7"] =>
//katalog/child::ksiazka[attribute::isbn= "83-7197-786-7"]

.

self::node()

//tytul[string-length(.)>10] =>
//tytul[string-length(self::node())>10]

..

pelne

//autor/.. =>
//autor/parent::node()

//

/descendant-or-
self::node()

//tytul =>
/descendant-or-self::node()

background image

30

















































Predykaty

Operatory porównania:

=

!=

>

>=

&lt;

&lt;=

Operatory logiczne:

and

or

not

Operatory arytmetyczne

+

-

*

div

mod

//dane/pozycja[okres = ”Styczeń”] - oznacza wybranie elementów
pozycja, dla których podelement okres ma wartość ”Styczeń”;

//pozycja[wartosc*1.22 >1000] - oznacza wybranie elementów
pozycja, dla których iloczyn elementu wartosc oraz liczby 1,22 jest większy
od 1000;

TAI LJ

Funkcje wbudowane

Tekstowe:

concat(łańcuch1, łańcuch2, ...) - konkatenacja.

contains(łańcuch, wzorzec) - sprawdzenie, czy zawiera podłańcuch
równy wzorcowi.

normalize-space(łańcuch) - normalizacja (usunięcie spacji
nadmiarowych).

starts-with(łańcuch, wzorzec) - sprawdzenie, czy łańcuch zaczyna
się od podanego wzorca.

string-length(łańcuch) - bada długość wzorca.

TAI LJ

background image

31















































Funkcje wbudowane

Liczbowe:

ceiling(liczba), floor(liczba), round(liczba) - zaokrąglenia.

sum(wyrażenie_zwracające_zbiór_węzłów) - sumowanie wartości z
węzłów zwracanych przez wyrażenie.

number(...) - konwersja wartości innego typu na number

Logiczne:

false(),true(),not() - wartości prawda, fałsz oraz funkcja zanegowania.

boolean() - konwersja wartości innego typu na boolean.

TAI LJ

Funkcje dotyczące węzłów

Liczbowe:

ceiling(liczba), floor(liczba), round(liczba) - zaokrąglenia.

sum(wyrażenie_zwracające_zbiór_węzłów) - sumowanie wartości z
węzłów zwracanych przez wyrażenie.

number(...) - konwersja wartości innego typu na number

Logiczne:

false(),true(),not() - wartości prawda, fałsz oraz funkcja zanegowania.

boolean() - konwersja wartości innego typu na boolean.

TAI LJ


Wyszukiwarka

Podobne podstrony:
tai w2 xhtml nstac www
tai zagadnienia ns www
Harrison Harry Gwiezdny Dom (www ksiazki4u prv pl)
ROZPRAWKA 47 www dom pl,Jacek Sut
Tai Chi Chuan [ ZLOTEMYSLI][by www ebookforum pl ]
motumbo www prezentacje org
download Zarządzanie Produkcja Archiwum w 09 pomiar pracy [ www potrzebujegotowki pl ]
czerwony kapturek2 www prezentacje org 3
W6 Technika harmonogramów i CPM
bez makijazu www prezentacje org
w6 Czołowe przekładanie walcowe o zebach srubowych
dobrze byc mezczyzna www prezentacje org
puchar swiata 2006 www prezentacje org
moja kariera www prezentacje org
struktura organizacyjna BTS [ www potrzebujegotowki pl ]
typy kobiet www prezentacje org 3
czemu faceci gina mlodo www prezentacje org

więcej podobnych podstron