Title: Technologie Internetu
1- Technologie Internetu
- wyklad 11 Interfejsy programistyczne dla
przetwarzania XML - Piotr Habela
- Polsko-Japonska Wyzsza Szkola Technik
Komputerowych
2W poprzednim odcinku
- Jezyk XSL w swojej czesci dotyczacej
transformacji (XSLT) stanowi srodek dla
deklaratywnego okreslania sposobu przeksztalcania
dokumentów. - Uruchamianie konkretnych szablonów (przez podanie
ich nazwy) oraz przekazywanie don parametrów
wnosza do XSLT cechy programowania
proceduralnego. - Zasadnicze scenariusze przeksztalcen XSLT
- Przebudowa struktury dokumentu XML
- Generowanie HTML w oparciu o dane z pliku XML
- Formatowanie danych XML do postaci XSL-FO
- Przetwarzanie jednego arkusza XSLT w inny (np.
celem personalizacji sposobu wyswietlania) - Tworzenie zwyklego tekstu jako dokumentu
wyjsciowego.
3Plan wykladu
- Document Object Model (DOM) dokument XML jako
drzewo wezlów - Simple API for XML (SAX) dostep strumieniowy
oparty o zdarzenia - Java API for XML Processing (JAXP)
- Java Architecture for XML Binding (JAXB)
- JDOM i inne interfejsy.
4Document Object Model (DOM)
- Standard manipulacji dokumentami XML
(specyfikacja W3C). Interfejs programistyczny do
dokumentów HTML i XML. - Hierarchia dokumentu zostaje odwzorowana w
pamieci komputera w postaci drzewa obiektów. - Mozliwosc nawigowania w dokumencie, modyfikowania
go oraz tworzenia nowych dokumentów w pamieci. - Specyfikacja zaprojektowana jako niezalezna od
konkretnego jezyka programowania i platformy
(definicje interfejsów w Java, ECMAScript i IDL). - Zwykle implementowany w oparciu o SAX (zob.
dalej). - Specyfikacja zlozona z kilku czesci. M.in. Core
(niskopoziomowy zbiór interfejsów mogacych
reprezentowac kazdy ustrukturalizowany dokument),
HTML (interfejsy wyzszego poziomu wprowadzone dla
poprawienia wygody dostepu), XPath (wykorzystanie
XPath w przetwarzaniu dokumentu).
5DOM rozwój specyfikacji
- DOM Level 1
- Core obiekty reprezentujace strukture
dokumentu - HTML dostep do dokumentów HTML
- DOM Level 2
- Poprawiona specyfikacja czesci Core
- Events reakcje systemu na zdarzenia
uzytkownika - Style manipulacja arkuszami stylów
- Views widoki drzewa dokumentu (po zastosowaniu
stylów CSS) - Traversal Range sposoby nawigowania
- DOM Level 3 (obecnie jako Working draft)
- Poprawiona specyfikacja Core oraz Events
- modele zawartosci (DTD, Schemas) wraz z walidacja
dokumentu - ladowanie i zapisywanie plików
- XPath dostep do zawartosci dokumentu za pomoca
wyrazen XPath.
6Struktura dokumentu DOM
- DocumentElement wierzcholek drzewa dokumentu
- Node kazdy z wezlów (w tym elementy)
- Element a wezel element to jeden z wystepujacych
w dokumencie DOM rodzajów wezlów (m.in. wezly
tekstowe, atrybutowe). - Wezly elementowe zwykle zawieraja wezly potomne
elementowe, tekstowe lub obu rodzajów. - Wezly atrybutowe informacja podlegla konkretnemu
wezlowi elementowemu. Nie sa okreslane jako
potomkowie. - Wezel dokumentu rodzic dla wszystkich
pozostalych wezlów. - CData odpowiada sekcji znakowej, zawierajacej
zawartosc nie przeznaczona do przetwarzania - Comment (komentarz) ProcessingInstruction
(instr. przetwarzania) - DocumentFragment stosowany jako wezel roboczy
przy budowaniu lub rekonstruowaniu dokumentu XML. - Ponadto Entity, EntityReference, Notation.
7Najwazniejsze interfejsy DOM (1)
- DOMImplementation
- Umozliwia sprawdzenie, czy dana funkcjonalnosc
jest zaimplementowana, tworzenie nowej instancji
dokumentu tworzenie nowego typu dokumentu. - Document
- Udostepnia korzen drzewa.
- Okresla typ dokumentu, implementacje DOM oraz
element-korzen. - Umozliwia tworzenie elementu, atrybutu, wezla
tekstowego, komentarza, sekcji znakowej,
instrukcji przetwarzania, referencji do encji
zewnetrznej tworzenie fragmentu dokumentu (zob.
dalej) oraz wyszukiwanie elementów wg nazwy
znacznika, wedlug nazwy wezla oraz importowanie
wezla do aktualnej lokalizacji. - W wersji 2 uwzgledniono tworzenie elementów i
atrybutów oraz wyszukiwanie elementów, z
uwzglednieniem przestrzeni nazw. - W wersji 3 pojawily sie metody do odczytu i
ustawienia atrybutów deklaracji XML, tj. version,
encoding, standalone.
8Najwazniejsze interfejsy DOM (2)
- DocumentFragment, Node
- Udostepnia nastepujace metody insertBefore,
replaceChild, removeChild, appendChild,
hasChildNodes, cloneNode, normalize. - (od w. 2) rozszerzenia uwzgledniajace Namespaces
atrybuty namespaceURI, prefix, localName. - wlasciwosci tylko do odczytu nodeName,
nodeValue (takze aktualizacja), nodeType,
parentNode, childNodes, firstChild, lastChild,
previousSibling, nextSibling, attributes,
ownerDocument. - Wlasciwosc nodeType (typu calkowitoliczbowego),
okresla, z jakiego rodzaju wezlem mamy do
czynienia. Okreslono tez nazwane stale dla
wygodniejszej identyfikacji tego kodu rodzaju
wezla, np. ELEMENT_NODE, TEXT_NODE. - Porównywanie wezlów (od wersji 3) tozsamosc
isSameNode(Node), równosc isEqualNode(Node),
okreslenie stopnia pokrewienstwa w strukturze
compareTreePosition(Node)
9Najwazniejsze interfejsy DOM (3)
- NodeList
- okresla dlugosc listy, umozliwia pobranie n-tego
wezla - Element
- Szczególny rodzaj wezla (Node).
- Dostep do atrybutów elementu odczyt, usuniecie,
modyfikacja, dodanie. - Wyszukiwanie podelementów.
- Attr
- Okresla nazwe atrybutu, wartosc (odczyt i
modyfikacja), element-wlasciciela, oraz czy
atrybut zostal wyspecyfikowany czy tez jest to
wartosc domyslna z definicji dokumentu. - CharacterData (abstrakcyjny)
- Wystepuje jako Comment, Text lub CDATASection
- Udostepnia zawartosc tekstowa, dlugosc
zawartosci, operacje do modyfikacji i pobierania.
10Modul DOM Traversal
- Sluzy uproszczeniu poruszania sie po drzewie
dokumentu DOM. - Zlozony z 4 interfejsów
- DocumentTraversal sluzy wytworzeniu obiektu do
nawigowania, bedacego wystapieniem jednego z
dwóch interfejsów - NodeIterator (szybszy) umozliwia jedynie
poruszanie sie w przód i wstecz wzdluz plaskiej
listy wezlów. - TreeWalker z kolei uwzglednia hierarchiczny model
elementu. - NodeFilter. Sluzy okreslaniu, jakie wezly beda
brane pod uwage przy poruszaniu sie po drzewie za
pomoca którejs z powyzszych metod. - Poniewaz wszystko to sa interfejsy, nalezy
ustalic, która z klas w dostepnym nam parserze
implementuje DocumentTraversal. Zwykle jest to ta
sama klasa, która implementuje org.w3c.dom.Documen
t.
11Uzycie DOM Traversal
- Interfejs NodeFilter nalezy zaimplementowac celem
wyselekcjonowania interesujacych nas wezlów. Jego
metoda acceptNode przyjmuje jako parametr
testowany wezel, zas zwraca jako rezultat liczbe
typu short, oznaczajaca dyspozycje przyjecia lub
ominiecia testowanego wezla. - W wypadku zarówno NodeIterator jaki i TreeWalker,
tworzenie ich obiektów wymaga nastepujacych
parametrów - wezel startowy (korzen przeszukiwania)
- rodzaje wezlów do przeszukania
- obiekt NodeFilter
- czy rozwijac referencje do encji?
- Dobór optymalnego stylu nawigacji wraz z
mozliwoscia definiowania filtra znacznie
ulatwiaja selekcje szukanych wezlów.
12Modul DOM Range
- Podobnie jak Traversal, dostarcza srodków
wyzszego poziomu dla selekcjonowania zawartosci
dokumentu. - Jak wskazuje nazwa, wyznaczane sa ciagle zakresy
w ramach dokumentu. Sa one specyfikowane poprzez
podanie wezla poczatkowego oraz przesuniecia
(offset) w tym wezle oraz analogicznych danych
dla wezla koncowego. - Przesuniecie (offset) oznacza (zaleznie od
rodzaju wezla) liczbe wezlów potomnych lub liczbe
znaków (interpretacja zalezna od sposobu
kodowania). - Selekcje taka mozna sobie wyobrazic jako podobna
do podswietlenia fragmentu tekstu w edytorze.
Jednakze nie jest mozliwe zbudowanie zakresu,
który rozpoczynalby sie lub konczyl wewnatrz tagu
elementu ani wewnatrz nazwy encji lub odnosnika. - Z drugiej zas strony istnieje pojecie czesciowej
selekcji danego wezla, jesli dokladnie jeden z
punktów wyznaczajacych zakres (boundary-points)
znajduje sie w jego wnetrzu.
13Funkcjonalnosc modulu DOM Range
- Funkcjonalnosc dla selekcji obejmuje
- wskazanie punktów poprzez wezly i przesuniecia w
ich ramach - wybranie wezla
- wybranie zawartosci wezla
- okreslenie punktu wzgledem danego wezla (przed
lub za). - Pozostala funkcjonalnosc to m.in.
- usuwanie lub ekstrakcja (celem przemieszczenia)
zakresu (elementy czesciowo wyselekcjonowane
pozostaja w swoich pierwotnych miejscach,
uszczuplone jedynie o wyselekcjonowana
zawartosc) - porównywanie pozycji dwóch zakresów
- wstawianie wezla w wytyczone miejsce
- wstawianie wezla otaczajacego dany zakres
(generowany jest wyjatek, jezeli zakres czesciowo
selekcjonuje jakis nietekstowy wezel).
14SAX Simple API for XML
- Projektowany dla Javy (org.xml.sax,
org.xml.sax.helpers) pózniej takze inne jezyki
jak Python czy C. - Okreslany jako interfejs zdarzeniowy
zdarzeniem jest napotkanie znaczników
otwierajacych, zamykajacych, atrybutów itd.
Umozliwia reagowanie na wybrane zdarzenia. - Przetwarzanie strumieniowe (jeden kierunek
przetwarzania) gt motywowane sprawnoscia
dzialania w wypadku duzych dokumentów. - Wersja 2 (SAX2) wspierane przestrzenie nazwowe.
- Projektowanie procesora SAX okreslenie
odpowiedzi na okreslone zdarzenia przetwarzania.
15Zdarzenia w parserze SAX
- Typowe zdarzenia dla minimalnego dokumentu XML
- poczatek dokumentu
- koniec dokumentu
- poczatek elementu
- koniec elementu
- odebrany tekst przejscie do nastepnej linii
inny znak bialy - odebrany tekst np. zawartosc tekstowa elementu
- Scenariusz przetwarzania
- ustalenie sposobów obslugi interesujacych nas
zdarzen (implementacja metod obslugujacych
odpowiednie zdarzenia) - wywolanie metody parse() interfejsu XMLReader
- XMLFilter stanowi rozszerzenie XMLReader,
pozwalajace na budowanie lancuchów kolejno
stosowanych filtrów umozliwia to dekompozycje
zlozonego przetwarzania.
16Implementacja parsera SAX
- Klasa SAXParserFactory jest uzywana do utworzenia
obiektu SAXParser. - Ten ostatni zawiera w sobie obiekt SAXReader, do
którego mozna podlaczyc cztery obiekty niejako
wtyczki okreslajace sposób przetwarzania - ContentHandler Najwazniejsze metody
startDocument, endDocument, startElement,
endElement wolane przy napotkaniu odpowednich
znaczników w przebiegu przez dokument. Zwykle sa
implementowane przez aplikacje. Ponadto metody
characters i processingInstruction
analogicznie, wolane po napotkaniu takowych bytów
w przetwarzanym dokumencie. - ErrorHandler Metody error, fatalError i warning
wolane przy bledach parsowania. Domyslnie
wyjatki przy fatal errors, ignorowanie
pozostalych. Moze zaistniec koniecznosc
zmodyfikowania tego zachowania. - DTDHandler Metody zwiazane z przetwarzaniem DTD
dotyczacym obslugi encji nieprzetwarzanych i
specyfikacji ich notacji. - EntityResolver Deklaruje metode resolveEntity
wolana przy koniecznosci odszukania encji
zewnetrznej, do której odwolanie napotkano w
dokumencie.
17DOM a SAX - podsumowanie
- Interfejs DOM
- Odtwarza strukture dokumentu w pamieci
- Umozliwia modyfikacje dokumentu
- Pozwala na swobodny dostep i nawigowanie w
dowolnym kierunku - Znaczne wymagania odnosnie zasobów efektywny dla
niewielkich dokumentów. - Interfejs SAX
- Nie pozwala na modyfikacje struktury dokumentu
- Przetwarzanie strumieniowe zapewnia sprawnosc
nawet dla duzych dokumentów - Dostep do dokumentu za pomoca tego interfejsu
uchodzi za trudniejszy.
18Java API for XML Processing (JAXP)
- Wspólny standardowy interfejs tworzacy podstawe
dla wykorzystania interfejsów SAX, DOM oraz XSLT
z poziomu jezyka Java, zapewniajac niezaleznosc
wykorzystujacego je kodu od konkretnych
implementacji. - Podstawowe interfejsy zawarte w pakiecie
javax.xml.parsers. Pozwalaja na podlaczania
dowolnych zgodnych parserów. - W zakresie interfejsów SAX i DOM udostepnia
fabryki obiektów realizujacych oba te rodzaje
przetwarzania. - W zakresie wsparcia XSLT, JAXP dostarcza
interfejsów zdefiniowanych w pakiecie
javax.xml.transform. - Klasa TransformerFactory tworzy obiekt
Transformer przyjmujacy plik zródlowy oraz
wytyczne (w postaci pliku deklaracji XSLT) celem
wygenerowania dokumentu wynikowego. - Poza dokonywaniem zlozen dokumentu zródlowego z
odpowiednim arkuszem XSLT, mozliwe jest równiez
kierowanie transformacja poprzez dostarczanie
wartosci parametrów XSLT.
19JAXP i DOM podstawowe kroki
- Tworzymy obiekt klasy DocumentBuilderFactory.
Mozna dlan okreslic - setValidating czy przetwarzany XML bedzie
walidowany zgodnie z okreslonym dlan DTD lub
schematem - setCoalescing Czy sekcje CDATA maja byc
przeksztalcane na tekst i zlewane z otaczajacym
je tekstem (false). - setExpandEntityReferences Czy zewnetrzne encje
beda odczytywane i wstawiane do dokumentu (true). - setIgnoringcomments Czy komentarze beda
ignorowane (false). - setIgnoringElementContentWhitespace Czy znaki
biale wewnatrz elementów maja byc ignorowanie
(false). - setNamespaceAware Czy informacja o
przestrzeniach nazwowych ma byc brana pod uwage
(false). - Tworzymy zen obiekt klasy DocumentBuilder
- posiada on metode parse (mogaca pobierac jako
parametr m.in. plik dyskowy, strumien wejsciowy
lub URI), zwracajaca obiekt o interfejsie
Document.
20JAXP i DOM podstawowe kroki
- Odwolanie do obiektu Document
- umozliwia pobranie elementu-korzenia (jako
obiektu klasy Element) lub wyszukiwanie
okreslonych podelmentów - Manipulacja zawartoscia
- Dostep do elementów obiekt Element
- Dostep do wezlów innego rodzaju (klasa Node).
- Sposoby pobierania wezlów
- Iteracja po wezlach potomnych metody
getFirstChild oraz getNextSibling - Wyszukanie potomków danego typu metoda
getElementsByTagName("nazwa") i przegladanie
zwróconej listy. - Dostep do atrybutów
- Metoda getAttributes() na przetwarzanym wezle
elementu - Metody getNodeName() i getNodeValue() dla
zwróconych atr.
21DOM operacje modyfikujace (1)
- W wezlach o odpowiednim typie (tj. Attr,
CDATASection, Comment, ProcessingInstruction,
Text) mozna modyfikowac wartosc operacja
setNodeValue(wartosc) - Dolaczanie nowego wezla moze przebiegac
nastepujaco - Stworzenie wezla operacje createTextNode,
createElement, createComment i odpowiednie inne,
wywolywane na obiekcie typu Document. - Umieszczenie wezla w strukturze na obiekcie
wezla-rodzica wolamy metode appendChild(nowyWezel)
celem dolaczenia go jako ostatniego dziecka,
albo insertBefore(nowyWezel, wezelSasiedni)
celem umieszczenia go wczesniej. - Usuwanie wezla operacja removeChild(usuwanyWezel)
wolana na obiekcie wezla-rodzica. Operacja
zwraca referencje do obiektu wezla, wiec moze
posluzyc do przemieszczania wezla (wstawienie w
inne miejsce j.w.).
22DOM operacje modyfikujace (2)
- Mozna równiez zastapic wybrany wezel, wywolujac
dla rodzica operacje replaceChild(poprzedni,
nowy). - Modyfikacja atrybutów
- Nowe wezly atrybutowe tworzymy operacja obiektu
Document doc.createAttribute(nazwaAtrybutu) - Dodawanie atrybutu operacja setAttributeNode(wez
elAtrybutu), wolana na docelowym elemencie (tzn.
na obiekcie wezla elementu) - Alternatywnie (krócej) operacja
setAttribute(nazwaAtrybutu, wartoscAtrybutu)
wolana na elemencie. - Usuwanie atrybutu operacja removeAttribute(nazwaA
trybutu).
23DOM zapis modyfikacji
- Zapis oparty na srodkach dostepu do plików
oferowanych przez API Javy (pakiet java.io)
uzycie klas File oraz FileWriter - Zapis samego drzewa dokumentu mozna zrealizowac w
oparciu o metode toString() wezlu korzenia. - Z kolei chcac zapisac w pliku deklaracje XML i
definicje DTD, musimy je skonstruowac osobno.
Przepisujac dokument mozemy odzyskac odwolanie do
zewnetrznego DTD (tu w postaci id systemowego)
za pomoca operacji naszDokument.getDoctype().getS
ystemId() - Inne mozliwosci przekazania dokumentu wynikowego
obejmuja wyjscie strumieniowe (np. do parsera
SAX), transformacje XSL czy tez komunikat SOAP.
24Java Architecture for XML Binding (JAXB)
- Reprezentuje inne podejscie do przetwarzania XML,
zaliczane do tzw. wiazan XML. - JAXB powstala w ramach Java Community Process
(JSR-031)i jest rozprowadzana m.in. w ramach
pakietu Java Web Services Developer Pack. - Odpowiednie klasy Javy generowane (przez
narzedzie zwane kompilatorem wiazania) sa z
definicji XML Schema. Sa zwane klasami
zawartosci (content classes). Z uwagi na
nieregularnosc DTD, jego ograniczenia (w tym brak
wsparcia dla przestrzeni nazwowych), zrezygnowano
z jego wspierania na rzecz XML Schema. - Przeksztalcenie pomiedzy zawartoscia XML a
odpowiadajacymi jej strukturami obiektów Javy i
odwrotnie sa okreslane odpowiednio jako
unmarshalling i marshalling.Ta reprezentacja za
pomoca obiektów Javy moze byc przedmiotem
przegladania, aktualizowania i walidacji.
25JAXB zasada dzialania
- Podobnie jak w DOM, struktura dokumentu jest
wczytywana do pamieci. Jednakze z uwagi na to, ze
wygenerowane klasy sa wyspecjalizowane (a nie
generyczne jak w wypadku DOM), mamy do czynienia
ze struktura oszczedniejsza w sensie zasobów i
prostsza w obsludze. - Odwzorowanie definicji schematu dokumentu na
klasy Javy przypomina swym charakterem kompilacje
definicji IDL standardu CORBA, tworzaca tzw.
pienki i szkielety. - Nie wszystkie zadeklarowane ograniczenia wartosci
zapisane w XML Schema przekladaja sie na
ograniczenia typów argumentów reprezentujacych je
w Javie operacji. Jednakze poprawnosc
przetwarzanej struktury moze byc kontrolowana
dzieki istniejacemu w JAXB mechanizmowi
walidacji. Walidacja moze byc dokonywana przy
wyczytywaniu XML oraz na zadanie.
26JAXB scenariusz uzycia
- Dysponujac definicja XML Schema mozna przystapic
do konstruowania aplikacji - Wygenerowanie kodu zródlowego Javy z XML Schema
za pomoca kompilatora wiazania. - Kompilacja wygenerowanego kodu.
- Stworzenie aplikacji korzystajacej z
wygenerowanych klas zawartosci - Utworzenie struktury dokumentu XML zgodnej ze
zródlowym schematem poprzez jej wczytanie w
postaci kodu XML lub poprzez instancjonowanie
wygenerowanych klas. - Odczyt i ewentualna manipulacja danych.
- Ewentualna walidacja modyfikacji.
- Zapisanie struktury do dokumentu XML.
27JAXB skladniki technologii
- Dokument XML Schema okresla budowe
przetwarzanego dokumentu XML zródlo danych dla
kompilatora wiazania. - Deklaracje wiazania precyzuja sposób
konstruowania nazw w obiektach Javy (w tym nazw
docelowych pakietów). Moga wystapic jako
adnotacje w schemacie zródlowym albo w osobnym
pliku. - Kompilator wiazania tworzy kod klas Javy na
podstawie zródlowego XML Schema. - Implementacja Binding Framework Odczyt, zapis,
walidacja. - Klasy zawartosci wygenerowane ze schematu
reprezentuja zawartosc dokumentu. - Aplikacja Javy korzysta z binding framework i z
klas zawartosci celem przetwarzania okreslonego
XML. - Wejsciowe i wyjsciowe dokumenty XML .
28JAXB skladniki technologii
Zródlo The JavaArchitecture for XML Binding
(JAXB) Users Guide - Scott Fordin
29DOM a Java
- Document Object Model powstal jako specyfikacja
niezalezna od konkretnego jezyka programowania i
zapewniajaca dostep do kompletnej zawartosci
dokumentu. - Z puktu widzenia wykorzystania w Javie posiada on
pewne wady - Znaczna konsumpcja zasobów szczególowa
reprezentacja dokumentu jest w calosci
odtwarzania w pamieci. - Brak wykorzystania udogodnien specyficznych dla
Javy, jak przeciazanie, Collection Framework. - Wobec tego podjeto prace nad interfejsami dla
Javy, które za cene genrycznosci moglyby osiagnac
lepsza wygode wykorzystania i mniejsza konsumpcje
zasobów, jednak bardziej elastycznymi niz
wymagajaca statycznej wiedzy o schemacie JAXB.
30JDOM http//www.jdom.org
- Narzedzie udostepniajace zaprojektowany dla Javy
model dokumentu XML. Jak sugeruje nazwa,
inspirowany DOM stanowi rozwiazanie
alternatywne, latwiejsze w uzyciu, lecz
nieprzenosne na inne jezyki programowania. - Rozwijane jako Java Community Process (JSR 102).
- Mozliwosci integracji z DOM i SAX zarówno
wejscie jak i wyjscie przy przetwarzaniu z
uzyciem JDOM moze przybrac postac plików XML,
drzew DOM lub zdarzen SAX. - Istnieje mozliwosc wykorzystania XSLT i XPath do
struktur JDOM. - Cecha szczególna API JDOM jest oparte na klasach
konkretnych Javy, nie zas na interfejsach.
Zapewnia to prostote i zwiezlosc (uzywamy
konstruktorów zamiast posrednictwa fabryk)
kosztem elastycznosci implementacji.
31Inne API
- DOM4J http//www.dom4j.org
- Kolejny projekt typu open-source. API oparte na
interfejsach. Moze to byc przewaga w wypadku
koniecznosci dostosowania implementacji do
konkretnych potrzeb (np. do bardzo duzych zbiorów
XML). - Korzysta z parsera SAX.
- Podobna motywacja prostsze i lzejsze od DOM API,
stworzone dla jezyka Java. - JAXM (Java API for XML Messaging)
- Wymiana asynchronicznych komunikatów XML pomiedzy
aplikacjami. - JAX-RPC (Java API for XML-based Remote Process
Communications) - Wymiana synchronicznych komunikatów pomiedzy
aplikacjami. - JAXR (Java API for XML Registries)
- Publikowanie i odszukiwanie informacji o uslugach
Webu.