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



Podobne dokumenty
LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML

Wprowadzenie do technologii XML

extensible Markup Language, cz. 1 Marcin Gryszkalis, mg@fork.pl

Aplikacje internetowe laboratorium XML, DTD, XSL

Model semistrukturalny

5.14 JSP - Przykład z obiektami sesji Podsumowanie Słownik Zadanie... 86

29. Poprawność składniowa i strukturalna dokumentu XML

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Podstawy języka XML. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Komunikacja i wymiana danych

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

KARTA KURSU. Przetwarzanie dokumentów XML i zaawansowane techniki WWW

METODY REPREZENTACJI INFORMACJI

XML i nowoczesne technologie zarządzania treścią

DTD - encje ogólne i parametryczne, przestrzenie nazw

Rok akademicki: 2013/2014 Kod: ZZIP IN-s Punkty ECTS: 2. Kierunek: Zarządzanie i Inżynieria Produkcji Specjalność: Informatyka w zarządzaniu

GML w praktyce geodezyjnej

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Rola języka XML narzędziem

XML extensible Markup Language 3

Prezentacja i transformacja

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, O STRUKTURZE PRZEDMIOTOWEJ

Język XSLT. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

XML w bazach danych i bezpieczeństwie

Otwarte protokoły wymiany informacji w systemach ITS

Szczegółowy opis zamówienia:

XPath XML Path Language. XPath. XSLT część 1. XPath data model. Wyrażenia XPath. Location paths. Osie (axes)

Relacyjne bazy danych a XML

Bazy danych. Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI

Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych

Programowanie obiektowe

Kazienko P.: Rodzina języków XML. Software nr 6 (90) czerwiec 2002, s Rodzina języków XML. Przemysław Kazienko

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Część II. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Wprowadzenie do XML. Joanna Jędrzejowicz. Instytut Informatyki

Dokument poprawnie sformułowany jest zgodny z ogólnymi zasadami składniowymi:

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

INTEGRACJA I EKSPLORACJA DANYCH

UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

XML materiały dydaktyczne - Kurs Podstawowy XSL - wprowadzenie. XSL warstwa przekształcania (XSLT) oraz prezentacji informacji (XSL FO).

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

Przykładowy dokument XML

Bazy danych i strony WWW

OfficeObjects e-forms

Spis treści. Przedmowa

Spis wzorców. Działania użytkownika Strona 147 Obsługa większości Działań użytkownika za pomocą kodu JavaScript przy użyciu metod obsługi zdarzeń.

XML extensible Markup Language. Paweł Chodkiewicz

XML w bazach danych i bezpieczeństwie

Tom 6 Opis oprogramowania

Wykład I. Wprowadzenie do baz danych

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Wybrane działy Informatyki Stosowanej

PHP: bazy danych, SQL, AJAX i JSON

Extensible Markup Language III

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Zasady Nazewnictwa. Dokumentów XML Strona 1 z 9

Plan. Raport. Tworzenie raportu z kreatora (1/3)

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Środowisko publikacyjne oparte na XML-u. Szymon Zioło 1 maja 2004

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI. asix. Aktualizacja pakietu asix 4 do wersji 5 lub 6. Pomoc techniczna

Wymagania dla cyklu dwugodzinnego w ujęciu tabelarycznym. Gimnazjum nr 1 w Miechowie

Tomasz Grześ. Systemy zarządzania treścią

Języki formatowania dokumentów strukturalnych. XSL przekształcenia XML-a. XSL a XSLT. XSL części składowe. Zasada działania przekształcenia XSLT

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU

1 90 min. Aplikacje WWW Harmonogram spotkań, semestr zimowy (studia stacjonarne)

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

O stronach www, html itp..

INFORMATYKA Pytania ogólne na egzamin dyplomowy

Propozycja standaryzacji usługi lokalizacji adresu

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

CENTRUM PROJEKTÓW INFORMATYCZNYCH MINISTERSTWA SPRAW WEWNĘTRZNYCH I ADMINISTRACJI

E.14.1 Tworzenie stron internetowych / Krzysztof T. Czarkowski, Ilona Nowosad. Warszawa, Spis treści

Plan. Aplikacja. Architektura aplikacji. Architektura aplikacji Tworzenie aplikacji Application Builder podstawy

Liczba godzin. N (nauczyciel) studia niestacjonarne

Wykorzystanie standardów serii ISO oraz OGC dla potrzeb budowy infrastruktury danych przestrzennych

World Wide Web? rkijanka

egroupware czy phpgroupware jest też mniej stabilny.

Bazy danych 2. Wykład 1

XML DTD XML Schema CSS

Budowa i oprogramowanie komputerowych systemów sterowania. Laboratorium 4. Metody wymiany danych w systemach automatyki DDE

Witryny i aplikacje internetowe - rozkład godzin dla technikum informatycznego

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

c TP: anything: 13 listopada 2004 roku 1

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

Ministerstwo Finansów

2 Podstawy tworzenia stron internetowych

Semistrukturalne bazy danych Wykład dla studentów matematyki

Transkrypt:

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.

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, koncentrują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 zastosowania 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 Recommendation, 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 podlegać 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 definiować 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ę dobrze sformułowanym (well-formed). Strukturę dokumentu definiuje się za pomocą tzw. DTD (Document Type Definition). Dokument zgodny z DTD nazywa się prawidłowym (valid). Należy zwrócić uwagę, że ten stopień poprawnoś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 sprawdzenie poprawności struktury dokumentu np. przy przetwarzaniu danych zawartych w dokumencie. 2

Przykład Przedstawiony poniżej przykład dokumentu w XML pochodzi z systemu wspomagającego zarzą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]. 3

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. przestrzeni 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 przestrzeni 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 elementó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ż hierarchia 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.: 4

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 sformalizowane 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 poprawności typów danych. Łączniki Dokument w XML może zawierać łączniki odwołania do innych dokumentów. Sposób tworzenia łą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 sieciowy, 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, obejmują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 ilustrację (show= embed ); być prezentowany w nowym kontekście, np. w nowym oknie albo zamiast dotychczas prezentowanego dokumentu (show= new ). Odczyt tekstu wskazywanego przez łącznik może następować na żądanie (actuate= 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. 5

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 skomplikowane 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 danym 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 identyfikatorze KBD2, czyli element slowo_kluczowe. Jeśli adres URI wskazuje na wnętrze dokumentu w XML, to zawarty w URI identyfikator fragmentu 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 standardowe oprogramowanie. Najbardziej powszechną formą przetwarzania jest niewątpliwie prezentacja 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 programach. 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 typograficznego. 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ą specyfikacji języka XSL (extensible Stylesheet Language) [5], który służy do definiowania arkuszy stylistycznych. 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 identyfikowane za pomocą wzorców (templates), które mogą w elastyczny sposób określać miejsce znacznika 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 pomocą 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="/"> 6

<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 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 match="konspekt"> <H3>Konspekt</H3> <xsl:apply-templates/> <xsl:template match="czesc_konspektu"> <H4><xsl:value-of select="@id"/></h4> <xsl:apply-templates/> <xsl:template match="p"> <P><xsl:apply-templates/></P> <xsl:template match="i"> <I><xsl:apply-templates/></I> <xsl:template match="ul"> <UL><xsl:apply-templates/></UL> <xsl:template match="li"> <LI><xsl:apply-templates/></LI> <xsl:template match="text()"> <xsl:value-of/> </xsl:stylesheet> Istotę działania XSL stanowi rekurencyjne przetwarzanie znaczników. Fraza <xsl:applytemplates/> 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 dokumentu wynikowego. Nazwy poprzedzone znakiem @ oznaczają odwołanie do wartości atrybutu. Efekty formatowania przykładowego dokumentu za pomocą powyższego skryptu przedstawia Rysunek 1. 7

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 przetwarzanie 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 specjalnego 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. repozytorium). 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 slowo_kluczowe, bezpośrednio zawarte w elemencie przedmiot, oraz zawierające je elementy 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ęzyków zapytań jest zgodność modelu danych wynikowych z modelem danych przeszukiwanych, 8

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 manipulowanie 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 (Dynamic 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ę modelu DOM oraz umożliwiający walidację dokumentów z użyciem DTD. MSIE potrafi prezentować 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. 9

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 programach 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 tekstowych czy arkuszy kalkulacyjnych) w formacie HTML. Należało jednak zapewnić odwracalność zapisu, tzn. możliwość ponownego otworzenia przez programy MS Office tak zapisanego dokumentu 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 oprogramowania 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. 10

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 prezentowania grafiki wektorowej, a zapisywane są w nim m.in. rysunki OfficeArt wykonywane za pomocą 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 exchange 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 producentó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, zapisywanych 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 przygotowują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 wbudowanej w DBMS maszyny wirtualnej języka Java (Oracle8i Java VM), procedur składowanych pisa- 11

nych w Javie i wydajnego interfejsu JDBC. Zbudowano zestaw narzędzi wspomagających wykorzystanie 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ą strukturalizację ł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 wykorzystujących XML: parser XML dla języka PL/SQL, pozwalający na przetwarzanie dokumentów w XML za pomocą 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 bazy danych; Oracle XSQL Servlet przygotowana z wykorzystaniem XML SQL Utility aplikacja przeznaczona do wykonania na serwerze danych lub aplikacji (servlet), umożliwiająca wstawianie zapytań SQL wprost do dokumentów w XML i dynamiczne wykonywanie tych zapytań; pozwala 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ę przydatny 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 wspierające zastosowania XML w systemach z bazami danych. Także firma Oracle wyposażyła swe systemy 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 zastosowania, pierwsze doświadczenia. Materiały IV Konferencji Developerów i użytkowników Oracle Ewolucja systemów informatycznych: dane, sprzęt, oprogramowanie i aplikacje, Zakopane 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. 12

[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, Zakopane 1996. 13