Jezyk XML w aplikacjach z bazam Nieznany

background image

V Konferencja PLOUG
Zakopane
Październik 1999

Język XML w aplikacjach z bazami danych - po roku

dr inż. Tomasz Traczyk

ttraczyk@ia.pw.edu.pl

http://www.ia.pw.edu.pl/~ttraczyk/

Instytut Automatyki i Informatyki Stosowanej

Politechniki Warszawskiej

Streszczenie

Referat jest kontynuacją prezentacji z zeszłorocznej konferencji PLOUG. Pokazano rozwój języka XML
oraz języków i narzędzi mu towarzyszących. Omówiono nowe ważne składniki XML, jak przestrzenie nazw
i schematy oraz języki związane z XML, np. XSL i XQL. Zaprezentowano przykłady zastosowań XML.
Przedstawiono też nowe narzędzia umożliwiające wykorzystanie XML w aplikacjach z bazami danych,
w szczególności narzędzia Oracle. Referat ilustrują przy-kłady dotyczące zastosowania XML w systemie
wspomagającym zarządzanie dużym wydziałem wyższej uczelni.

background image

2

Wprowadzenie

W referacie zaprezentowanym na zeszłorocznej konferencji PLOUG [1] przedstawiono język

XML oraz jego podstawowe składniki. Omówiono rolę DTD i arkuszy stylistycznych, porównano
XML z powszechnie znanym HTML. Przedstawiono też potencjalne zastosowania XML, koncen-
trując się na zastosowaniach związanych z bazami danych.

W tym referacie opisano rozwój XML i jego zastosowań, jaki nastąpił w ciągu minionego roku.

Przedstawiono bardziej szczegółowo język XSL, omówiono nowe propozycje składników języka:
przestrzenie nazw, XQL, schematy, DOM. Wymieniono nowe zastosowania XML. Przedstawiono
też nowe narzędzia wspomagające zastosowanie XML, w tym narzędzia związane z bazami danych
Oracle.

W ciągu roku, który upłynął od poprzedniej konferencji PLOUG, zainteresowanie językiem

XML wyraźnie wzrosło. Pojawiły się pierwsze powszechnie dostępne narzędzia i pierwsze zasto-
sowania komercyjne. Na bazie XML zdefiniowano wiele specjalizowanych języków znakowania.

Jak się wydaje, XML staje się już trwałym i ważnym składnikiem systemów informacyjnych.

Standaryzacja i rozwój języka XML

Standaryzacją języka XML i języków mu towarzyszących (np. XSL) zajmuje się organizacja

World Wide Web Consortium (W3C). Zatwierdza ona zgłoszone propozycje standardów. Do
organizacji tej zgłaszane są także wszelkie propozycje rozszerzeń języka.

Obecnie specyfikacja języka XML, przestrzeni nazw oraz modelu DOM mają status W3C Rec-

ommendation, oznaczający ostatnią fazę przed uznaniem standardu. Mniej zaawansowane są prace
nad specyfikacjami XSL, XLL i XPointer — mają status W3C Working Draft. Inne propozycje,
np. schematy, są w „młodszej” fazie W3C Note.

XML przeżywa obecnie szybki rozwój. Należy się spodziewać, że obecne specyfikacje podle-

gać będą ewolucji. Pojawienie się na rynku pierwszych powszechnie dostępnych narzędzi tworzy
jednak pewien standard de facto, do którego zapewne będą musiały być dostosowane formalne
definicje.

Przypomnienie — co to jest XML

XML jest metajęzykiem służącym do definiowania języków znakowania. Można w nim defi-

niować języki opisu stron i/lub języki służące do zapisu danych wraz ze strukturą.

XML jest nieco zmodyfikowanym podzbiorem SGML. Stąd też bierze się pozorne podobień-

stwo języka do HTML. Cele języków są jednak zgoła odmienne: HTML jest gotowym językiem
opisu stron; istnieją też ważne różnice składniowe, np. obowiązek jawnego zamykania znaczników
w XML.

Dokument w XML składa się z elementów wyróżnionych znacznikami (tags). Każdy element

może mieć atrybuty. Zawartość elementu stanowi tekst zawierający znaczniki, elementy mogą
więc być zagnieżdżane. Dopuszczalne są elementy puste — nie zawierające żadnego tekstu — ale
muszą one być specjalnie oznaczone.

Struktura znaczników musi spełniać pewne wymagania, pozwalające na poprawną interpretację

struktury dokumentu przez przeglądarki. Dokument spełniający takie wymagania nazywa się do-
brze sformułowanym (well-formed).

Strukturę dokumentu definiuje się za pomocą tzw. DTD (Document Type Definition). Doku-

ment zgodny z DTD nazywa się prawidłowym (valid). Należy zwrócić uwagę, że ten stopień po-
prawności nie jest bezwzględnie wymagany — przeglądarki pokazują prawidłowo dokumenty
well-formed. Poprawność typu valid wymagana jest wówczas, gdy potrzebne jest pełne sprawdze-
nie poprawności struktury dokumentu — np. przy przetwarzaniu danych zawartych w dokumencie.

background image

3

Przykład

Przedstawiony poniżej przykład dokumentu w XML pochodzi z systemu wspomagającego za-

rządzanie wydziałem wyższej uczelni [11]. Konspekty opisujące zawartość wykładów spływają do
redaktora wydziałowego serwisu WWW, który przekształca je do postaci dokumentów XML.
Dokumenty te są następnie wczytywane przez specjalny program do wydziałowej bazy danych,
gdzie przechowywane są w postaci częściowo ustrukturalizowanej (patrz [1]).

Oto przykładowy dokument:

<?xml version="1.0" encoding="ISO-8859-2"?>
<!DOCTYPE eres_konspekty SYSTEM "konspekty.dtd">
<?xml-stylesheet type="text/xsl" href="konspekty.xsl"?>
<eres_konspekty>

<przedmiot id=”KBD2” wersja=”1”>

<slowo_kluczowe>bazy danych</slowo_kluczowe>
<slowo_kluczowe>Oracle</slowo_kluczowe>
<konspekt>

<czesc_konspektu id=”Streszczenie”>

<P> Monograficzny przedmiot poświęcony bazie danych i

narzędziom Oracle. </P>

</czesc_konspektu>
<czesc_konspektu id=”Treść przedmiotu”>

<P> Omawiane są podstawowe zagadnienia związane z
wykorzystaniem RDBMS Oracle7 i <I>Oracle8</I> oraz
administrowaniem nimi.</P>
<P> Przedstawiane są także narzędzia do budowy
aplikacji: </P>
<UL>

<LI> Oracle Forms, </LI>
<LI> Oracle Reports. </LI>

</UL>

</czesc_konspektu>

</konspekt>

</przedmiot>

</eres_konspekty>

Znaczenie poszczególnych elementów dokumentu jest łatwe do zrozumienia dla każdego, kto

zna podstawy HTML.

Oto odpowiednia definicja typu dokumentu (DTD):

<!ELEMENT eres_konspekty

(przedmiot)+

>

<!ELEMENT przedmiot

((slowo_kluczowe)*, konspekt) >

<!ATTLIST przedmiot id

ID #REQUIRED

wersja CDATA #IMPLIED

>

<!ELEMENT slowo_kluczowe

(#PCDATA)

>

<!ELEMENT konspekt

(czesc_konspektu)+

>

<!ELEMENT czesc_konspektu

(P|UL)+

>

<!ATTLIST czesc_konspektu id ID #REQUIRED

>

<!ELEMENT P

(#PCDATA|I)*

>

<!ELEMENT I

(#PCDATA)

>

<!ELEMENT UL

(LI)+

>

<!ELEMENT LI

(#PCDATA)

>

Znaczenie składników DTD wyjaśniono szczegółowo w [1].

background image

4

Rozwój składników XML

Rozwój zastosowań XML spowodował potrzebę uzupełnienia języka o dodatkowe składniki.

Opisano tu kilka ważniejszych propozycji.

Przestrzenie nazw

Można się spodziewać, że po rozpowszechnieniu XML powstanie bardzo wiele systemów

(słowników) znaczników, przeznaczonych do stosowania w swych specyficznych dziedzinach.
Autor, budujący dokument z danej dziedziny, powinien korzystać z już istniejących systemów
znaczników, ale może potrzebować znaczników z więcej niż jednego słownika, może także chcieć
dołączyć swoje własne znakowanie. W takiej, bardzo przecież typowej, sytuacji może dojść do
konfliktów nazw: nazwy znaczników i atrybutów zdefiniowane w różnych słownikach mogą się
pokrywać.

Aby zapobiec tego typu problemom, określono sposób wyznaczania i wykorzystania tzw. prze-

strzeni nazw (XML namespaces) [6].

Przestrzeń nazw jest jednoznacznie identyfikowana przez podanie URI (Uniform Resource

Identifier, czyli adresu sieciowego) domeny, która zarządza daną przestrzenią nazw.

Element XML odwołuje się do przestrzeni nazw przez podanie specjalnego atrybutu xmlns i

zdefiniowanie prefiksu, który będzie służył do wyróżniania znaczników należących do danej prze-
strzeni nazw.

W przypadku naszego przykładowego dokumentu można by zdefiniować specjalną przestrzeń

nazw i zapisać dokument tak:

<eres:konspekty xmlns:eres=”http://www.elka.pw.edu.pl/eres”>

<eres:konspekty>

<eres:slowo_kluczowe>
...

Zdefiniowano tu prefiks eres i przypisano go do przestrzeni nazw zarządzanej przez Wydział

Elektroniki i Technik Informacyjnych PW, a następnie wykorzystano ten prefiks do wyróżnienia
znaczników należących do powołanej przestrzeni nazw.

Oczywiście w jednym dokumencie, a nawet w jednym elemencie, można powołać się na wiele

przestrzeni nazw. Przyjmuje się przy tym, że pierwsza z deklaracji przestrzeni nazw ustanawia
przestrzeń domyślną dla danego elementu i jego elementów podrzędnych. Dla znaczników należą-
cych do przestrzeni domyślnej prefiksy można pominąć.

Schematy i typy danych

DTD określa precyzyjnie składnię znaczników, ale nie daje pełnych możliwości potrzebnych

przy reprezentowaniu w XML złożonych danych i ich automatycznym przetwarzaniu:
• DTD nie pozwala precyzyjnie określić typów danych — zawartość „liści” w hierarchii ele-

mentów jest zawsze tekstowa;

• struktura dokumentu wyrażona przez DTD nie jest podatna na rozbudowę;

• DTD nie objaśnia znaczenia elementów;

• DTD nie pozwala na określenie ograniczeń i zależności między elementami innych niż hierar-

chia zawierania (np. nie można wyrazić w nim zależności referencyjnych).

Problemy te starają się rozwiązać propozycje, wprowadzające zamiast DTD tzw. schematy

(schema). Budowa dokumentów jest tu wyrażona z użyciem składni samego XML, bez konieczno-
ści odwoływania się do składni DTD.

W podejściu tym struktura elementów dokumentu XML jest traktowana tak jak hierarchia klas

obiektów. Schematy pozwalają na zdefiniowanie m.in.:

background image

5

• klas obiektów i ich hierarchii;

• typów danych;

• własności konceptualnych, np. opisów znaczenia klas i atrybutów;

• ograniczeń;

• związków, np. typu referencyjnego lub wyrażonych przez URI.

Możliwy jest import do schematu fragmentów definicji innych schematów, co pozwala na sfor-

malizowane rozbudowywanie definicji dokumentów.

Propozycje sposobu definiowania schematów zawarte są w specyfikacjach XML-Data [7] oraz

Document Content Description for XML (DCD). Prowadzone są także prace nad rozbudowaniem
specyfikacji DTD tak, by możliwe było umieszczanie rozszerzonych informacji o danych w samym
DTD.

Zastosowanie schematów może pozwolić aplikacjom na szczegółowe — nie ograniczające się

jedynie do składni znaczników — sprawdzanie poprawności zawartości dokumentów, w tym po-
prawności typów danych.

Łączniki

Dokument w XML może zawierać łączniki — odwołania do innych dokumentów. Sposób two-

rzenia łączników w XML podano w dwóch specyfikacjach:
• XLL — określa sposób definiowania łączników między dokumentami,

• XPointer — określa sposób adresowania miejsc w dokumencie.

Łączniki definiuje się w języku XLL (XML Linking Language) [3]. Zasadniczą część definicji

łączników stanowią tzw. lokatory. Do definiowania lokatorów używa się adresów zwanych URI
(Uniform Resource Identifier), stanowiących rozszerzenie URL. URI zawierać może adres siecio-
wy, pytanie (query, po znaku ?) oraz identyfikator fragmentu (fragment identifier, po znaku #).

Możliwości łączenia dokumentów są w XLL znacznie bogatsze od znanych z HTML, obejmu-

jąc:
• łączniki proste (simple), jednokierunkowe, podobne do łączników A w HTML;

• łączniki złożone (extended), np. zawierające wiele lokatorów pełniących różne role.

Łączniki mogą przejawiać różne zachowania (behavior), którymi sterują atrybuty show i

actuate

łącznika. Wskazywany przez łącznik dokument lub element może:

• zastępować element w tym samym kontekście, w ten sposób można np. połączyć alternatywne

wersje jakiegoś fragmentu (show=”replace”);

• być włączany do bieżącego dokumentu — można tak włączyć np. fragment tekstu albo ilustra-

cję (show=”embed”);

• być prezentowany w nowym kontekście, np. w nowym oknie albo zamiast dotychczas prezen-

towanego dokumentu (show=”new”).

Odczyt tekstu wskazywanego przez łącznik może następować na żądanie (actu-

ate=”user”

), albo automatycznie, np. gdy przeglądarka odczytuje sam łącznik

(actuate=”auto”).

Aby nie ograniczać możliwości definiowania własnych łączników postanowiono, że nie będzie

predefiniowany żaden specjalny element łącznikowy. Łączniki definiuje się zatem w DTD, tak jak
inne elementy. Wyróżnia się je, wyposażając w atrybut o zastrzeżonej nazwie: każdy element
mający atrybut o nazwie xml:link jest traktowany jak łącznik. Wartość tego atrybutu definiuje
typ łącznika: ”simple” — prosty, ”extended” — złożony.

background image

6

Sposób adresowania miejsc i fragmentów wewnątrz dokumentów określa specyfikacja XPointer

(XML Pointer Language) [4] . Wskazanie fragmentu dokumentu może być bardziej skomplikowa-
ne niż w HTML i nie jest do tego niezbędne umieszczenie w tym dokumencie żadnego specjalnego
oznaczenia.

Adresowanie w języku XPointer opiera się na drzewie elementów — na ich hierarchii i kolejno-

ści. Możliwe jest także użycie identyfikatorów elementów.

Typowe adresy XPointer wskazują na określone wystąpienie konkretnego typu elementu w da-

nym kontekście, np. można wskazać na trzeci element składowy drugiego elementu po podanym
identyfikatorze. Do podawania tego typu zależności służą zdefiniowane w specyfikacji określenia
położenia (location terms).

Dla podanego wyżej przykładowego dokumentu:

• root().child(1,przedmiot) oznacza pierwszy element typu przedmiot elementu

głównego, czyli przedmiot KBD2,

• id(KBD2).child(2,#element) wybiera drugi element podrzędny elementu o identyfi-

katorze KBD2, czyli element slowo_kluczowe.

Jeśli adres URI wskazuje na wnętrze dokumentu w XML, to zawarty w URI identyfikator frag-

mentu powinien być sformułowany zgodnie ze specyfikacją XPointer.

Przetwarzanie dokumentów w XML

Dokumenty zapisywane są w XML po to, by mogły być efektywnie przetwarzane przez stan-

dardowe oprogramowanie. Najbardziej powszechną formą przetwarzania jest niewątpliwie pre-
zentacja dokumentu na ekranie lub jego druk. Inne typowe rodzaje przetwarzania to wyszukiwanie
danych w dokumencie lub zbiorze dokumentów i wykorzystanie danych z dokumentu w progra-
mach.

Ponieważ te rodzaje przetwarzania są powszechne, opracowano standardy którym powinno

podlegać oprogramowanie przeznaczone do współpracy z XML.

Style-sheets i XSL

Dokument w XML powinien być zbudowany na zasadzie znakowania znaczeniowego, a nie ty-

pograficznego. Cała informacja o sposobie formatowania dokumentu przez przeglądarkę musi być
zatem sformułowana osobno.

Do określenia wyglądu dokumentów służą tzw. arkusze stylistyczne (style-sheets). Określają

one sposób prezentacji każdego z elementów. Zaawansowane są prace nad pierwszą wersją specy-
fikacji języka XSL (eXtensible Stylesheet Language) [5], który służy do definiowania arkuszy sty-
listycznych.

Składnia XSL została w pełni zdefiniowana w XML, z użyciem przestrzeni nazw (namespaces).

Podstawową ideą XSL jest przetwarzanie hierarchii znaczników na hierarchię tzw. flow objects,
którym z kolei przypisuje się sposób prezentacji. Znaczniki XML są w tym procesie identyfiko-
wane za pomocą wzorców (templates), które mogą w elastyczny sposób określać miejsce znaczni-
ka w hierarchii oraz atrybuty znacznika.

Ponieważ przeglądarki, za pomocą których prezentowane są dokumenty XML, będą zapewne

także przystosowane do prezentacji HTML, prostym sposobem formatowania dokumentów za po-
mocą XSL jest przetworzenie ich na HTML. Tak też skonstruowany został poniższy przykład.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<xsl:template match="/">

background image

7

<HTML>
<HEAD><TITLE>Konspekty</TITLE></HEAD>
<BODY>
<H1>Konspekty przedmiotów</H1>
<xsl:apply-templates select="eres_konspekty/przedmiot"

order-by="@id"/>

</BODY>
</HTML>
</xsl:template>

<xsl:template match="przedmiot">
<H2><xsl:value-of select="@id"/>
(<xsl:value-of select="@wersja"/>)</H2>
<H3>Słowa kluczowe</H3>
<TABLE BORDER="1">
<xsl:for-each select="slowo_kluczowe" order-by="text()">
<TR><TD><xsl:value-of/></TD></TR>
</xsl:for-each>
</TABLE>
<xsl:apply-templates/>
<HR/>
</xsl:template>

<xsl:template match="konspekt">
<H3>Konspekt</H3>
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="czesc_konspektu">
<H4><xsl:value-of select="@id"/></H4>
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="P">
<P><xsl:apply-templates/></P>
</xsl:template>

<xsl:template match="I">
<I><xsl:apply-templates/></I>
</xsl:template>

<xsl:template match="UL">
<UL><xsl:apply-templates/></UL>
</xsl:template>

<xsl:template match="LI">
<LI><xsl:apply-templates/></LI>
</xsl:template>

<xsl:template match="text()">
<xsl:value-of/>
</xsl:template>

</xsl:stylesheet>

Istotę działania XSL stanowi rekurencyjne przetwarzanie znaczników. Fraza <xsl:apply-

templates/>

jest wywołaniem owej rekurencji. Klauzule select zawężają zakres działania

do wybranych elementów dokumentu. Klauzule match podają wzorzec znacznika, który jest
przetwarzany za pomocą danej frazy template.

Frazy value-of powodują włączenie odpowiedniej części przetwarzanego dokumentu do do-

kumentu wynikowego. Nazwy poprzedzone znakiem @ oznaczają odwołanie do wartości atrybutu.

Efekty formatowania przykładowego dokumentu za pomocą powyższego skryptu przedstawia

Rysunek 1.

background image

8

Rysunek 1. Wynik formatowania dokumentu XML za pomocą XSL

Możliwości języka XSL wykraczają daleko poza zwykłe formatowanie. Za pomocą XSL moż-

na np. wykonywać zarówno proste konwersje (np. na HTML, jak powyżej), jak złożone przetwa-
rzanie danych. Takiemu przetwarzaniu poświęcona jest część specyfikacji XSL, nazwana XSLT
(XSL Transformations). Wielkie możliwości stwarza także wykorzystanie umieszczanych w XSL
skryptów proceduralnych, napisanych w języku ECMAScript (ustandaryzowanej odmianie Java-
Scriptu).

XQL

Typową operacją wykonywaną na dokumentach i danych jest wyszukiwanie. Potrzebny jest

zatem standardowy sposób zadawania warunków wyszukania. Pojawiła się więc propozycja spe-
cjalnego języka zapytań XQL (XML Query Language) [8], czerpiącego inspirację z języka zapytań
dla obiektowych baz danych OQL, zaś składniowo zbliżonego do języka wzorców z XSL.

XQL ma umożliwiać wyszukiwanie danych w dokumencie lub kolekcji dokumentów (np. repo-

zytorium).

Oto kilka przykładowych zapytań w XQL, wyszukujących w wcześniej podanym dokumencie

XML:
• eres_konspekty/przedmiot — zwraca wszystkie elementy typu przedmiot, bezpo-

średnio zawarte w elemencie eres_konspekty,

• eres_konspekty//slowo_kluczowe — zwraca wszystkie elementy typu

slowo_kluczowe

zawarte (na którymkolwiek poziomie hierarchii) w elemencie

eres_konspekty

,

• przedmiot?/slowo_kluczowe — zwraca wszystkie elementy typu slo-

wo_kluczowe

, bezpośrednio zawarte w elemencie przedmiot, oraz zawierające je ele-

menty typu przedmiot (ale bez innych elementów podrzędnych),

• czesc_konspektu[@id<>”Streszczenie”] — zwraca wszystkie elementy typu

czesc_konspektu

o identyfikatorze różnym od podanego w warunku.

Zapytanie w XQL ma bardzo prostą budowę i jest pozbawione „ozdobnych” słów kluczowych

(typu ‘select’), gdyż ma dawać użyć się jako fragment identifier w adresie URI.

Bezpośrednim wynikiem zapytania w XQL jest zbiór elementów XML. Pożądaną cechą języ-

ków zapytań jest zgodność modelu danych wynikowych z modelem danych przeszukiwanych,

background image

9

wynik zapytania w XQL powinien więc być poprawnym dokumentem XML. Aby to osiągnąć,
zwrócone przez zapytanie elementy są opakowywane w element główny o nazwie xql:result.

DOM

Dane zawarte w dokumentach XML powinny dać się wygodnie przetwarzać w programach.

Aby z zastosowania XML płynęła jakaś korzyść dla programistów tworzących takie programy,
potrzebny jest standard dostępu do danych i uniwersalne narzędzia ułatwiające ten dostęp.

Propozycją takiego standardu jest DOM (Document Object Model). Definiuje on obiektowy

model dokumentu w XML oraz dostarcza zbioru klas i metod umożliwiających manipulowanie
dokumentami XML z języków programowania Java, ECMAScript, VBScript i C++.

API zgodne z DOM (np. wbudowane w przeglądarki WWW), umożliwiają wygodne manipulo-

wanie dokumentami w typowych środowiskach programowania. Najbardziej znana implementacja
DOM jest częścią MSIE 5.0.

Pewną popularność zdobył także, spełniający podobne zadanie, model SAX (Simple API for

XML), dla którego dostępne są darmowe parsery np. dla języka Java.

Data Islands i DHTML

W dokumentach HTML nie można przesyłać danych zapisanych w sposób sformalizowany,

zdatnych do dalszego przetwarzania. Tymczasem takie dane są często potrzebne, np. by umożliwić
łatwe wyszukanie dokumentu. Dotychczas stosowano „sztuczki” polegające na umieszczaniu
sformalizowanych danych w komentarzach HTML.

Obecnie pojawiła się nowa możliwość: w tekście HTML można umieszczać tzw. wyspy danych

(data islands). Są to sformalizowane struktury zapisane w XML, a objęte specjalnym znacznikiem
<XML>

lub <SCRIPT language=”XML”>.

Zawartość elementów takiej wyspy danych może być wykorzystana w skryptach DHTML (Dy-

namic HTML). Data island jest traktowana przez skrypty jak obiekt (XML Document Object) o
nazwie wyznaczonej przez atrybut-identyfikator wyspy.

Zastosowania XML

W ciągu ostatniego roku język XML znacznie zyskał na popularności, pojawiło się bardzo wiele

propozycji jego wykorzystania oraz sporo narzędzi wspomagających użycie XML.

Podstawowe narzędzia

Dostępne obecnie narzędzia dla XML to:

• parsery XML dla języków programowania, np. Java, C++;

• edytory do plików XML, ułatwiające manipulowanie strukturą danych;

• przeglądarki, umożliwiające bezpośrednie wyświetlanie dokumentów w XML.

Najbardziej znanym produktem jest Microsoft Internet Explorer 5.0, zawierający obsługę mo-

delu DOM oraz umożliwiający walidację dokumentów z użyciem DTD. MSIE potrafi prezento-
wać dokumenty XML z wykorzystaniem arkuszy stylistycznych napisanych w językach XSL (co
pokazuje Rysunek 1) oraz CSS. Wbudowano także generyczny styl do prezentacji dokumentów
nie mających arkusza stylistycznego — przykład pokazuje Rysunek 2.

background image

10

Rysunek 2. Prezentacja dokumentu w XML bez arkusza stylistycznego

Narzędziem towarzyszącym MSIE jest Microsoft XML Notepad — prosty edytor ułatwiający

manipulowanie strukturami dokumentów XML, zawierający walidację dokumentów. Wygląd
ekranu tego edytora przedstawia Rysunek 3.

Rysunek 3. Popularny edytor do XML — Microsoft XML Notepad

Wykorzystanie w programach powszechnego użytku

XML uzyskał poparcie znaczących producentów oprogramowania i już jest używany w pro-

gramach powszechnego użytku. Zapewne najbardziej znanym przykładem jest pakiet Microsoft
Office 2000.

W pakiecie tym umożliwiono zapis większości dokumentów (np. złożonych dokumentów tek-

stowych czy arkuszy kalkulacyjnych) w formacie HTML. Należało jednak zapewnić odwracalność
zapisu, tzn. możliwość ponownego otworzenia przez programy MS Office tak zapisanego doku-
mentu bez utraty informacji. Możliwości HTML do tego nie wystarczają, zapis w HTML uzupeł-
niono więc właśnie językiem XML. Zapisane w taki sposób dokumenty mogą być dystrybuowane
w WWW, z zachowaniem możliwości ich pełnego odtworzenia do dalszej edycji. Dodatkowo
rozwiązanie takie zapewnia możliwość wymiany dokumentów między różnymi wersjami oprogra-
mowania — dokumenty z przyszłych wersji MS Office będą mogły być prawidłowo czytane przez
wersje wcześniejsze, a znaczniki niezrozumiałe dla starszych wersji będą po prostu ignorowane.

background image

11

Ciekawym zastosowaniem XML, także związanym z MS Office, ale popieranym i przez innych

producentów, jest język VML (Vector Markup Language). Służy on do definiowania i prezento-
wania grafiki wektorowej, a zapisywane są w nim m.in. rysunki OfficeArt — wykonywane za po-
mocą programów pakietu MS Office. Przeglądarka MSIE 5.0 potrafi bezpośrednio wyświetlać
takie rysunki. W3C prowadzi prace standaryzacyjne, mające na celu scalenie kilku istniejących
propozycji specyfikacji grafiki wektorowej w jeden standard o nazwie Scalable Vector Graphics
(SVG).

Specjalizowane struktury danych

Powstaje wiele języków specjalizowanych opartych na XML. Dotyczą one wielu bardzo róż-

nych dziedzin. Kilka przykładów podano poniżej:
• zastosowania naukowe, np. MathML (Mathematical Markup Language), CML (Chemical

Markup Language);

• modelowanie systemów, np. PIF-XML (Process Interchange Format XML), UXF (UML eX-

change Format), XMI (XML Metadata Interchange);

• różne projekty z dziedziny EDI (Electronic Data Interchange);

• finanse i bankowość, np. OFX/OFE (Open Financial Exchange), BIPS (Bank Internet Payment

System);

• multimedia, np. SMIL (Synchronized Multimedia Integration Language), PGML (Precision

Graphics Markup Language), czy wspomniany już VML.

XML w systemach z bazami danych

W zeszłorocznym referacie uskarżano się na brak wsparcia dla języka XML ze strony produ-

centów narzędzi dla systemów z bazami danych, w szczególności Oracle. W ciągu roku sytuacja
uległa znacznej zmianie: XML został przez producentów baz danych zauważony i jest włączany
jako ważny element programów rozwoju. Pojawiły się też pierwsze narzędzia wspierające XML, a
nawet specjalizowane serwery aplikacyjne. Oto przykłady:
• eXcelon firmy Object Design jest serwerem aplikacyjnym przetwarzającym dokumenty XML

na struktury bazy danych (z możliwością wykorzystania języka zapytań XQL) oraz tworzącym
dokumenty XML na podstawie zawartości bazy;

• Tamino firmy Software AG zawiera tzw. X-Machine — składnicę danych w XML, zapisywa-

nych w bazie danych bez konwersji na inną postać.

XML a Oracle

Firma Oracle zauważyła rosnącą rolę języka XML w budowaniu systemów informacyjnych, w

szczególności systemów internetowych. Oracle bierze udział w pracach komitetów W3C przygo-
towujących standardy związane z XML (np. XML-Schema, XMI). Przygotowano też narzędzia
wspierające wykorzystanie XML w aplikacjach z bazą danych Oracle.

Pierwszym udostępnionym przez firmę narzędziem był pakiet PLSXML [9], zawierający trzy

podstawowe składniki:
• DBXML — narzędzie do generowania dokumentów XML na podstawie zapytań SQL;

• DBDOM — API do manipulacji dokumentami XML z języka PL/SQL, zgodne z modelem

DOM;

• DBXSL — narzędzie do generowania arkuszy stylistycznych, prezentujących wyniki działania

DBXML w postaci drzewa.

Narzędzia te mogą być używane z bazami Oracle 7.3 i 8.0 i Oracle Web Application Server w

wersji 3 lub nowszej.

Wraz z pojawieniem się na rynku bazy Oracle8i powstała możliwość wykorzystania wbudowa-

nej w DBMS maszyny wirtualnej języka Java (Oracle8i Java VM), procedur składowanych pisa-

background image

12

nych w Javie i wydajnego interfejsu JDBC. Zbudowano zestaw narzędzi wspomagających wyko-
rzystanie XML, nazwany Oracle Core XML Support [10]:
Oracle XML Parser — napisany w Javie parser zgodny ze standardami DOM i SAX, parser

ten może być wykorzystywany przez programy w Javie działające we wszystkich warstwach
architektury trójwarstwowej, także w składowanych w bazie procedurach w Javie;

• wsparcie dla XML w opcji iFS (Internet File System), pozwalające na automatyczną struktura-

lizację ładowanych do iFS dokumentów (zapis strukturalnych części dokumentów do tabel,
przechowywanie części tekstowych w postaci tekstu);

• specjalne mechanizmy w opcji ConText, dostosowane do wyszukiwania w dokumentach w

XML.

Ponadto dostarczono szereg pomocniczych narzędzi ułatwiających tworzenie aplikacji wyko-

rzystujących XML:
• parser XML dla języka PL/SQL, pozwalający na przetwarzanie dokumentów w XML za po-

mocą procedur napisanych w P/SQL;

• parsery XML dla języków C i C++;

XML Class Generator for Java — narzędzie pozwalające na podstawie DTD automatycznie

wygenerować definicje klas służących do programowej manipulacji dokumentem;

XML SQL Utility for Java — zestaw gotowych klas służących do generowania dokumentów w

XML na podstawie zapytań w SQL oraz do wczytywania dokumentów w XML do struktur ba-
zy danych;

Oracle XSQL Servlet — przygotowana z wykorzystaniem XML SQL Utility aplikacja przezna-

czona do wykonania na serwerze danych lub aplikacji (servlet), umożliwiająca wstawianie za-
pytań SQL wprost do dokumentów w XML i dynamiczne wykonywanie tych zapytań; po-
zwala także na dokonywanie przez serwer transformacji dokumentów w XML na podstawie
skryptów w XSL.

Podsumowanie

Jak można się było spodziewać, język XML zdobywa coraz szersze uznanie i okazuje się przy-

datny w licznych zastosowaniach z wielu różnych dziedzin. Język zyskał poparcie wszystkich
znaczących producentów oprogramowania. Jego specyfikacja jest nadal udoskonalana, dodawane
są też nowe istotne komponenty.

XML został zauważony także przez producentów baz danych. Pojawiły się narzędzia wspiera-

jące zastosowania XML w systemach z bazami danych. Także firma Oracle wyposażyła swe sys-
temy zarządzania bazami danych w odpowiednie dodatki, ułatwiające wykorzystanie XML.

XML staje się nowym, standardem przekazywania danych. Wydaje się atrakcyjny dla bardzo

różnych grup użytkowników. Wykorzystanie XML stanie się zapewne już w najbliższych latach
powszechne. Wpłynie to na pewno znacząco na rozwój technologii systemów informacyjnych, a w
szczególnym stopniu na systemy internetowe i systemy z bazami danych.

Literatura:

[1] T.Traczyk, W.Macewicz: „Język XML w aplikacjach z bazami danych — możliwości zasto-

sowania, pierwsze doświadczenia”. Materiały IV Konferencji Developerów i użytkowników
Oracle Ewolucja systemów informatycznych: dane, sprzęt, oprogramowanie i aplikacje, Za-
kopane 1998.

[2] Extensible Markup Language (XML) 1.0. W3C Recommendation REC-XML-19980210.
[3] XML Linking Language (XLink). W3C Working Draft WD-xptr-19980303.
[4] XML Pointer Language (XPointer). W3C Working Draft WD-xlink-19980303.
[5] Extensible Stylesheet Language (XSL) 1.0. W3C Working Draft WD-xsl-19981216.
[6] Namespaces in XML. W3C Recommendation REC-xml-names-19990114.
[7] XML-Data. W3C Note, NOTE-XML-data-19980105.

background image

13

[8] J.Robbie: The Design of XQL.

http://www.texcel.no/whitepapers/xql-design.html

[9] PLMSQL Utilities and Demos.

http://www.oracle.com/plsxml/index.html

[10] XML Support in Oracle8i and Beyond.

http://www.oracle.com/xml/documents/xml_twp/

[11] T.Traczyk: Zastosowanie WWW w systemie wspomagającym zarządzanie dużym wydziałem

wyższej uczelni. Materiały II szkoły PLOUG Rozproszone aplikacje baz danych, Zakopa-
ne 1996.


Wyszukiwarka

Podobne podstrony:
05 Komunikacja aplikacji z ser Nieznany
język XML, Pomoce naukowe, studia, informatyka
Jezyk japonski id 222080 Nieznany
Jezyk angielski 1 id 221932 Nieznany
arkusz Jezyk polski poziom r ro Nieznany (12)
jezyk hiszpanski etap wojewodzk Nieznany
jezyk angielski matura poziom Nieznany (4)
Jezyk praslowianski id 222250 Nieznany
Jezyk niderlandzki id 222111 Nieznany
f 7459 2 jezyk angielski id 167 Nieznany
Jezyk rosyjski poziom 4189277 i Nieznany
Jezyk zarfatit id 222282 Nieznany
JP SS 3 jezyk C klasy id 228754 Nieznany
integracja aplikacji opartych n Nieznany
Laboratorium jezyk c2 2013 id 3 Nieznany
arkusz Jezyk polski poziom r ro Nieznany (11)
Jezyk tybetanski id 222263 Nieznany

więcej podobnych podstron