Timo Helander
42862v
Ti N
<timo.helander@iki.fi>
XML:stä povataan ratkaisua sovellusten väliseen kommunikointiin ja integraatioon. HTML:stä poiketen XML mahdollistaa tyyppi- ja rakennetiedon liittämisen siirrettäviin tiedostoihin. Tiedostojen tai dokumenttien rakenteellisuus mahdollistaa esimerkiksi niiden yksinkertaisemman koneellisen käsittelyn. XML voitaisiin esimerkiksi käyttää elektronisessa kaupankäynnissä varasto-, hinta- ja tuotetietojen vaihdossa yritysten tietojärjestelmien kesken. XML dokumentteihin voidaan myös liittää sisältöä kuvaava metatietoa, jonka upottaminen dokumentteihin mahdollistaa älykkäämpien hakutoimintojen toteuttamisen. XML:ään liittyy suuri joukko valmiita- ja puolivalmiita standardeja sekä suosituksia, joista tärkeimpiä ovat XSL, RDF ja DOM. Suositukset ovat kuitenkin puutteellisia, ja ne eivät suoraan sovellu XML:ää käyttävien sovellusten kehittämiseen. Suurin ongelma on DOM rajapinnan geneerisyys ja matala abstraktiotaso, jonka vuoksi sovellusten ja DOM rajapinnan väliin on toteutettava sovitin kerros, joka tarjoaa sovellukselle yksinkertaisemman ja palvelukeskeisemmän rajapinnan.
Tietojärjestelmien välinen tiedonvaihto ja erityisesti järjestelmien integraatio ovat eräitä tietojenkäsittelyn perinteisempiä ongelmia [2]. Tiedonvaihdossa kaksi sovellusta keskustelee siten, että sovellus A pystyy ymmärtämään sovelluksen B lähettämän viestin merkityksen. Integraation yksi keskeinen tavoite on järjestelmien ja erityisesti niiden hallitsemien tietojen koherentti yhteiskäyttö, joka voidaan toteuttaa esimerkiksi yhdenmukaistamalla niihin liittyvät prosessit, mallit ja esitystavat. Molemmissa tapauksissa käsiteltävän tiedon semantiikalla on suuri merkitys.
Elektronisessa kaupankäynnissä on esimerkiksi oleellista, että automaattisesti kommunikoivat sovellukset ymmärtävät minkä maan valuuttaa on käytetty hintatietojen esittämisessä tai mitä mittayksikköä on käytetty kappaleen koon kuvaamisessa. Tämän kaltaiset ongelmat korostuvat yritysten verkottuessa, jolloin yksi yritys voi vastaanottaa tietoja suurelta joukolta täysin erillaisia järjestelmiä. Internetin ja extranettien käytön yleistyessä voidaankin olettaa, että yhä suurempi määrä tiedonvaihdosta käydään automaattisesti eri sovellusten välillä, jolloin kommunikoivien osapuolten on sovittava tietyt pelisäännöt tarjottavan informaation semantiikan kuvaamiseksi.
XML (extensible markup language) on SGML:n osajoukko, jota voidaan käyttää Internetissä siirrettävän tiedon sisällön kuvaamiseen [7]. XML on saanut julkisuutta HTML:n seuraajana, mutta XML soveltuu muuhunkin kuin WWW sivujen esittämiseen. Esimerkiksi XML/EDI Group tutkii kuinka EDI (Electronic Data Interchange) liikenne voidaan kapseloida XML:n sisälle [1, 11]. Myös Agilesoft Corp. suunnittelee siirtävänsä valmistukseen liittyvää tietoa XML:n avulla [3]. Myös suuret yritykset ja ohjelmistotalot kuten Microsoft, IBM ja Oracle uskovat Internetissä tapahtuvan sovellusten välisen tiedonvaihdon perustuvan tulevaisuudessa XML:n käyttöön.
XML perustuu ajatukseen, jonka mukaan dokumenteista voitaisiin tehdä sekä rakenteellisia, että oman semantiikkansa kuvaavia. Toisaalta dokumenttien sisältö ja sen esittäminen on erotettu toisistaan, jolloin sama XML dokumentti voidaan esittää eri tavoin. Dokumentin sisällön merkityksen upottaminen dokumenttiin mahdollistaa esimerkiksi dokumentin käyttötarkoituksen kuvaamisen, jolloin hakukoneet voisivat käyttää tätä tietoa hyväkseen hakujen yhteydessä. Sovellusten välisessä tiedonvaihdossa XML:n käyttö mahdollistaa vaihdettavan tiedon semantiikan kuvaamisen, jolloin sovellusten on helpompi koneellisesti ymmärtää vastaanotettavan tiedon merkitys ja käyttötarkoitus. Esimerkisi hintojen yhteydessä voidaan kertoa mistä valuutasta on kyse, jolloin monesta lähteestä vastaanottava sovellus voi helposti muuntaa kaikki hinnat yhteismitallisiksi. Myös erillaiset erillaiset tietopalvelut voivat lisätä sähkeisiin avainsanoja sähkeen kirjoitusvaiheessa, joiden avulla sisällöltään lyhyetkin sähkeet voidaan kohdistaa asiakkaille, jotka ovat ilmoittaneet millaiset aihepiirit heitä kiinnostavat. [7]
XML perustuu siis W3C:n suositukseen, jonka lisäksi siihen liittyy joukko muita standardeja sekä suosituksia. Näistä oleellisimmat Internet sovellusten välisen tiedonvaihdon suhteen ovat:
Document Object Model (DOM), joka kuvaa sovellusalusta ja ohjelmointikieli riippumattoman rajapinnan XML ja HTML dokumenttien käsittelemiseen. Tason 1 määrittely kuvaa perusrajapinnan XML dokumenttien esittämiseksi puuna. Tason 2 määrittelyn on tarkoitus kuvata kehittyneemmät ominaisuudet dokumenttien käsittelyyn, kuten kyselyrajapinnan. Tavoitteena on kuvata rajapinta, jota eri valmistajien toteuttamat XML tulkit voisivat käyttää XML dokumentin esittämiseksi. Esimerkiksi IBM XML parseri toteuttaa DOM rajapinnan. Internet sovellusten välisessä tiedonvaihdossa DOM soveltuu sovellusten rajapinnaksi XML tiedostoihin. [5,6]
Resource Description Framework (RDF), joka kuvaa mallin ja viitekehyksen metatiedon esittämiseksi ja lisäämiseksi Internetin resursseihin. Metatiedolla tarkoitetaan esimerkiksi HTML sivuun lisättäviä kenttiä, joiden perusteella hakukoneet voivat paremmin ymmärtää mitä asioita dokumentissa käsitellään. XML:ää käytetään yhtenä RDF:n syntaksina, mutta RDF itse on syntaksi riippumaton. Tietojen vaihdossa RDF soveltuu käsiteltävän tiedon semantiikan kuvaamiseen.[9]
Extensible Stylesheet Language (XSL) kuvaa kielen XML dokumenttien esitysmuodon määrittelemiseksi. XSL:llä voidaan esimerkiksi kuvata kuinka XML dokumentista generoidaan HTML sivu. Tämä tarkoittaa myös sitä, että kieltä voidaan käyttää apuna esimerksi uusien XML dokumenttien generoimisessa. Microsoft on lisäksi esittänyt XSL:n laajennuksen XQL:n, jota voitaisiin käyttää eräänlaisena kyselykielenä XML maailmassa ja kielenä jolla voitaisiin muuntaa XML dokumentteja muodosta toiseen. Tiedonvaihdossa XSL:ää voidaan hyödyntää muunnettaessa XML tiedostoja eri sovellusten ymmärtämään muotoon. [4,8]
Vaikka XML soveltuukin yhteiseksi esitystavaksi, niin sovellusten on tarjottava rajapinta XML:n ja sovelluksen välille. Tyypillinen ratkaisu on käyttää Document Object Model (DOM) rajapintaa XML dokumenttien parsimiseen ja muodostamiseen [5]. Kuva 1 esittää kahden sovelluksen välistä kommunikointia, jossa sovellukset käsittelevät XML dokumentteja DOM rajapinnan välityksellä.

Kuva 1 Kahden sovelluksen välinen kommunikointi XML:n välityksellä
DOM rajapintaa käytettäessä ongelmaksi muodostuu rajapinnan geneerisyys, jonka vuoksi rajapinnan päälle on tehtävä sovelluskohtainen sovitin (adapter), joka toimii tulkkina sovelluksen tietomallin ja XML dokumenttimallin välillä. DOM rajapintaa voidaakin kutsua tietokeskeiseksi rajapinnaksi (data-centered interface), koska siinä on yksi selkä rajapinta erityyppisten XML dokumenttien käsittelyyn. Rajapinnan kannalta on yhdentekevää mitä sen käsittelemät dokumentit sisältävät, jolloin rajapintaa käyttävän sovelluksen on ymmärrettävä XML dokumenttien rakenne ja merkitys.
Vaihtoehtona on toiminnallinen (functional) tai palvelukeskeinen (service-oriented) rajapinta, jossa rajapinnan käyttäjän ei tarvitse ymmärtää XML dokumenttien rakenteesta mitään. Esimekkinä tälläisestä on WebMethodsin Web Interface Definition Language (WIDL). WIDL:n avulla voidaan määritellä toiminnallisia rajapintoja XML dokumentteihin. XML syntaksia noudattavista WIDL kuvauksista voidaan generoida sovellusten käyttämät sovittimet. [10]
Ohessa on esimerkki WIDL kuvauksesta.
<WIDL NAME="FedExShipping" Template="Shipping"
BASEURL="http://www.FedEx.com" VERSION="2.0">
<SERVICE NAME="TrackPackage" METHOD="GET" URL="/cgi-bin/track_it"
INPUT="TrackInput" OUTPUT="TrackOutput" />
<BINDING NAME="TrackInput" TYPE="INPUT">
<VARIABLE NAME="TrackingNum" TYPE="String" FORMNAME="trk_num" />
<VARIABLE NAME="DestCountry" TYPE="String" FORMNAME="dest_cntry" />
<VARIABLE NAME="ShipDate" TYPE="String" FORMNAME="ship_date" /></BINDING>
<BINDING NAME="TrackOutput" TYPE="OUTPUT">
<CONDITION TYPE="FAILURE" REFERENCE="doc.title[0].text"
MATCH="FedEx Warning Form"
REASONREF="doc.p[0].text['&.*']" />
<CONDITION TYPE="SUCCESS" REFERENCE="doc.title[0].text"
MATCH="FedEx Airbill:*"
REASONREF="doc.p[1].value" />
<VARIABLE NAME="disposition" TYPE="String"
REFERENCE="doc.h[3].value" MASK="$*" />
<VARIABLE NAME="deliveredOn" TYPE="String"
REFERENCE="doc.h[5].value" MASK="%%%$*" />
<VARIABLE NAME="deliveredTo" TYPE="String"
REFERENCE="doc.h[7].value" MASK="*:" /></BINDING></WIDL>
Kuva 2 esittää yksinkertaista XML pohjaista järjestelmää, jonka on tarkoitus yhdistää kolmesta tietolähteestä tulevat tiedot ja esittää ne käyttäjälle HTML sivuina. Järjestelmä hakee tuotteisiin liittyvät kuvaukset sekä hintatiedot kahdesta relaatiotietokannasta. Lisäksi haetaan varastonhallintajärjestelmästä sen hetkinen tilanne varastossa. Tiedot yhdistetään XML palvelimessa, jonka jälkeen ne muunnetaan HTML sivuiksi ja jaetaan WWW palvelimen kautta. Oheinen järjestelmä soveltuu hyvin yritykselle, joka haluaa yhdistää olemassaolevat operatiiviset järjestelmät Internettiin.

Kuva 2 Esimerkki XML pohjaisesta kommunikoinnista
Esimerkissä WWW palvelin tarjoaa käyttäjälle HTML lomakkeen, jonka kautta käyttäjä voi kertoa XML palvelimelle mistä tuotteista hän on kiinnostunut. Hakuehdoiksi soveltuvat esimerkiksi nimi, hinta tai tuotekategoria.
XML palvelin analysoi lomakkeen kautta annetut tiedot ja käyttää XML rajapintoja hakeakseen ehtoja vastaavien tuotteiden tiedot. Oheisessa esimerkissä XML palvelin hakee tietoja kolmesta ulkopuolisesta tietolähteestä. XML palvelin voi keskustella XML rajapintojen kanssa esimerkiksi HTTP:n tai JAVA RMI:n välityksellä.
Rajapinta tietovarastoihin ja operatiivisiin sovelluksiin voidaan rakentaa pienellä vaivalla. Rajapinta sisältää esimerkiksi pienen XML generaattorin ja hakukoneen, joka suorittaa SQL kyselyitä (relaatiotietokannat) tai käyttää operatiivisen sovelluksen ulkoisia rajapintoja hakeakseen tarvittavat tiedot. Hakuja tehdään tarvittaessa useampia, kunnes kaikki XML palvelimen haluamat tiedot on haettu. Hakujen tuloksista generoidaan yksi XML dokumentti, joka välitetään takaisin XML palvelimelle. XML:n generoinnissa voidaan käyttää apuna XSL:ää tai DOM rajapintaa.
Vastaukset saatuaan XML palvelin yhdistää sopivan XSL tyylimäärityksen avulla eri XML rajapintojen kautta saadut XML dokumentit yhdeksi HTML dokumentiksi, joka välitetään WWW palvelimen kautta käyttäjälle. Erityisesti tietojen yhdistämisessä on huomioitava dokumenttien sisällön semantiikka. Esimerkiksi hinnaston yhteydessä käytetty luokitus eri tuotekategorioihin voi olla erillainen kuin varastonhallinnassa. Tuotteiden yhteydessä käytetyt avainsanat voivat olla samat, vaikka niiden merkitys eroaisikin eri järjestelmissä.
HTML sivuihin voidaan vielä lisätä RDF:ää käyttämällä metatietoa, joka mahdollistaa HTML sivun helpomman koneellisen käsittelyn ja mahdollisen muunnoksen takaisin XML:ksi.
XML soveltuu hyvin yhteiseksi esitysmuodoksi, mutta XML itsessään ei ratkaise esitettävän tiedon semantiikkaan liittyviä ongelmia. Sovellusten välillä on oltava yhteinen ymmärrys käytettävistä nimekkeistä ja tietomalleista. Tarvittaessa sovellukset voivat muuntaa paikalliset nimikkeet ja tietomallit yhteiseen esitysmuotoon, jota voidaan käyttää sovellustun välisessä kommunikoinnissa. Muunnosten määrittelyssä voidaan käyttää XSL kieltä ja XSL prosessoria, jolloin XML dokumentteja voidaan muuntaa kahden XML tietomallin välillä [8].
XML tarjoaa työkalut dokumenttien semantiikan määrittämiseen (RDF), mutta se ei tarjoa riittäviä työkaluja sovellusten ja XML dokumenttien välille [9]. Ongelmana on DOM rajapinnan geneerisyys, jonka vuoksi sovellusten on tyypillisesti käytettävä DOM rajapintaa sovelluskohtaisen sovittimen kautta. Sovitin tarvitaan, jotta rajapinta XML dokumentteihin olisi semantiikaltaan rikkaampi ja ilmaisuvoimaisempi. Sovittimien generoimiseen voidaan käyttää kaupallisia työkaluja kuten WIDL [10].
|
Bryan, M. & XML/EDI Group, Guidelines for using XML for Electronic Data Interchange, version 0.05 25.1.1998 [viitattu 22.2.1999] |
|
|
Hardwick, M., Spooner, D.L., Rando, T. and Morris, K.C. Sharing Manufacturing Information in Virtual Enterprises. Communications of the ACM, Volume 39, No. 2 (Feb. 1996), 46-54 |
|
|
Holt, S., Enterprise Computing -- A Supply Chain Lingua France?, InfoWorld E-Print, Reprinted from InfoWorld, 28.12.1998/4.1.1999, Vol 20/21, Issue 52/1 [viitattu 21.2.1999] |
|
|
Schach, D., Lapp, J. & Robje, J. Querying and Transforming XML, 18.3.1999 [viitattu 18.3.1999] |
|
|
W3C, Document Object Model (DOM) Level 1 Specification, W3C Recommendation 1.10.1998 [viitattu 18.3.1999] |
|
|
W3C, Document Object Model (DOM) Level 2 Specification, W3C Working Draft 4.3.1999 [viitattu 18.3.1999] |
|
|
W3C, Extensible Markup Language (XML) 1.0, W3C Recommendation 10.2.1998 [viitattu 22.2.1999] |
|
|
W3C, Extensible Stylesheet Language (XSL), W3C Working Draft 16.2.1998 [viitattu 18.3.1999] |
|
|
W3C, Resource Description Framework (RDF) Model and Syntax Specification, W3C Recommendation 22.2.1999 [viitattu 18.3.1999] |
|
|
WebMethods Inc, About WIDL, 2.4.1999 [viitattu 2.4.1999] |
|
|
XML/EDI Group, Welcome to XML/EDI Group's Home Page, 22.2.1999 [viitattu 22.2.1999] |
|
Bosak, J., XML, Java, and the future of the Web, 3.10.1997 [viitattu 22.2.1999] |
|
D'Ambrogio, A. and Iazeolla, G. A CORBA-based Approach to Design Gateways for Multidatabase Systems. Proceedings of WETICE'97, Cambridge, Massachusetts, USA, June 18-20 1997 |
|
Flynn, P., et. al., Frequently Asked Questions about the Extensible Markup Language, Version 1.41 6.10.1998 [viitattu 22.2.1999] |
|
Garshol, L.M., Free XML software, 19.2.1999 [viitattu 22.2.1999] |
|
Microsoft Corp., XML Scenarios, 11.8.1998 [viitattu 22.2.1999] |
|
Microsoft Corp., XML: Enabling Next-Generation Web Application, 3.4.1998 [viitattu 22.2.1998] |
|
Web Review, A Guide to XML Resources, 22.2.1999 [viitattu 22.2.1999] |
|
XMLINFO, The XML Information Site, 15.1.1999 [viitattu 22.2.1999] |