Markup languages and an introduction to XML 14
Markup languages Used e.g. to structure information separating the logical structure from the content add metainformation add processing information... Metalanguages and markup languages metalanguages (e.g. XML and SGML) are used to define the actual syntax and rules for a markup language markup languages (e.g. XHTML and XMI) are used to add (meta)information to information based on a specific coding mechanism Enable computerized manipulation ->various applications in software engineering, e.g. Web services 15 Tarkoituksenmukaisen ja hyödyllisen tiedon manipuloinnin kannalta on oleellista, että tiedon rakenne voidaan erottaa sen sisällöstä. Esimerkiksi rakenteisiin dokumentteihin liittyy tietokoneen tulkittavissa oleva rakennemäärittely. Tällöin sisällöllä tarkoitetaan varsinaista informaatiota, kun taas sen looginen rakenne voi muodostua esim. luvuista, kappaleista, otsikoista, viitteistä jne. Formaali rakenteen määrittely mahdollistaa esimerkiksi aineiston esittämisen eri tavoin eri kohderyhmille, erilaisten hakujen tekemisen, tiedon eri osien välisen linkityksen, jne. Metainformaatiota (eli tietoa tiedosta) voidaan käyttää eri tietolähteiden yhdistämiseen ja kategorioimiseen, hakuavaimina erilaisille kyselyille, versionhallintaan jne. Esimerkiksi editointipäivämäärillä merkatut dokumentit voidaan luokitella editointivuoden mukaan. Internetin välityksellä tehtävän tehokkaan tiedonsiirron kannalta metainformaatio on erityisen oleellista: sen sijaan, että siirrettäisiin laajoja dokumentteja, voidaan metainformaatiota hyväksi käyttäen hakea ja siirtää vain oleellinen tieto.
What else is needed besides a markup language? Enough users and commitment for the specific markup language, e.g. A common file format that supports interoperability among CASE-tools (XMI) A common format for communication/messaging, e.g. SOAP that is used to communicate with Web services Applications that use the markup language Tool support The above is difficult to achieve, therefore... -> let s define a metalanguage that nails down the format for various languages -> XML...even if the languages themselves differ, at least, they can be prosessed by standard tools 16 Edellytyksiä tiettyyn merkkauskieleen kommittoitumiselle ovat kieli on helppo oppia ja omaksua informaatiota, tutoriaaleja, esimerkkejä ja opastusta on saatavilla työkalutukea on saatavilla: rakenteisen informaation editointi ja visualisointi, itse rakenteen (merkkauskieli itsessään) editointi kriittinen massa eli tarpeeksi muita käyttäjiä Koska edellä mainitut vaatimukset ovat hankalia toteuttaa ja erityisesti koska tietystä kielestä on vaikeaa tai joissain tapauksissa mahdotonta päästä yhteisymmärrykseen tarjoaa XML metakielenä hyvän vaihtoehdon: se määrittelee yhteisen formaatin eri kielien rakenteiden merkkaamiselle. Näin ollen eri XML-pohjaisia kieliä voidaan käsitellä standardityökaluin (jäsentäminen, prosessointi, editointi jne.), vaikka kielet itsessään eroavaisivatkin. Merkkauskieliä käytetään usein tiedonsiirtoformaattina CASE-työkalujen välillä. OMG on esimerkiksi kehittänyt Metadata Interchange (XMI) kielen, jota voidaan käyttää Meta-Object Facility (MOF) - spesifikaation mukaisten mallien (kuten UML) tallettamiseen. Käytännössä kuitenkin eri CASEtyökalujen kehittäjät edellyttävät tiedonsiirtoformaatilta erilaisia asioita. Lisäksi UML itsessään on laajennettava. Näistä puolestaan seuraa se, että myös XMI:stä on kehitetty eri murteita, jotka on toteutettu eri CASE-työkaluissa. Näin ollen tiedon siirrettävyydestä joudutaan tinkimään yhteisestä tiedonsiirtoformaatista huolimatta! XMI-kieltä käsitellään lisää tällä kurssilla myöhemmin. Viestiformaatit hyödyntävät myös usein merkkauskieliä. Niiden avulla voidaan esimerkiksi merkata etäkutsut (kutsuttava metodi, parametrit jne.). Esimerkkejä XML-pohjaisista viestiformaateista ovat XML-RPC ja SOAP. SOAPiin tutustutaan myöhemmin Web-palvelukonseptin yhteydessä.
Markup and metalanguages Metalanguages SGML (Standard Generalized Markup Language) expressive language includes ways to describe various document types metalanguage: can be used to define markup languages ISO (8879) (rather) complicated...and old (1986) XML (Extensible Markup Language) easier to use than SGML Markup languages HTML (HyperText Markup Language) an example SGML document type for hypertext documents XHTML, MathML, SVG, RDF,... 17 Eri merkkauskoodeille tarvitaan formaali kielioppi, jotta ne olisivat ohjelmallisesti luettavissa. Tämä oli pääsyynä SGML-kielen kehittämiseen. SGML on itse asiassa merkkauskielten määrittelykieli ja XML-kielen kantaäiti. MathML on matemaattisiin esityksiin kehitetty merkkauskieli. Siitä on jo jonkin aikaa povattu tulevan varteenotettavaksi kilpailijaksi perinteisesti käytetyille TeX ja LaTeX kielille. Extensible HyperText Markup Language (XHTML) on puolestaan HTML 4.0:sta kehitetty puhtaasti XML-syntaksin omaava merkkauskieli. Sitä voidaankin kutsua HTML:n uusimmaksi versioksi. Puhtaasti XML-pohjaisena kielenä se voikin hyödyntää erilaisia XML:n tarjoamia mahdollisuuksia (toisin kuin vanha HTML). Käytännössä selaimet tukevat jo XHTML:ää. Scalable Vector Graphics (SVG) on alunperin Adoben kehittämä standardi vektorigrafiikalle. Uusin versio SVG 1.1 on W3C:n suositus. Kehitteillä oleva versio 1.2 on jo myös saatavilla W3C:n sivuilla. SVG:tä käytetään kaksidimensioisen grafiikan ja graafisten sovellusten esittämiseen XML-muodossa. Selaimet eivät välttämättä tue SVG:tä suoraan, yhteensopivuus saadaan aikaan pluginin avulla. Tosin esimerkiksi Mozillan Firefoxin uusimassa versiossa tuki SVG:lle on jo mukana vakiovarusteena. Resource Description Framework (RDF) salliin WWW:n eri resurssien metatietojen kuvailun. Resurssi voi olla mikä tahansa, jolla on URI (esim. HTML-sivu, XML-dokumentti, kuva, PDFtiedosto jne.). Metatieto puolestaan on tietoa tiedosta. Esimerkiksi HTML-sivun metatieto voi sisältää tiedon viimeisestä editointipäivämäärästä. RDF-kuvaus on käytännössä verkko, jonka solmuina ovat resurssit. Solmuja yhdistävät resurssien väliset relaatiot.
HTML + the most well-known and most used markup language defined in SGML, easy to learn + W3C recommendation + for certain kinds of documents (e.g., WWW pages), efficient for describing the logic structure that influences the appearance + portability, most systems and browsers support HTML limited not powerful/general enough for constructing all kinds of documents inflexibility procedural marking method: content description is missing from HTML (while that is the thing that makes markup languages powerful!) 18 HTML on eniten käytetty ja parhaiten tunnettu SGML-kieli. Se on myös varsin helppo oppia. HTML on lisäksi W3C:n suositus. Sitä käytetään pääasiallisesti verkkosivujen tekemiseen. Käytännössä kaikki selaimet tukevat HTML:ää. HTML:n heikkoutena (ja toisaalta myös vahvuutena) on sen yksinkertaisuus: sen avulla voidaan rakentaa vain rajoitetunlaisia dokumentteja. Lisäksi HTML:stä puuttuu yksi merkkauskielille tärkeimmistä ominaisuuksista: se ei salli sisällön kuvausta (metainformaatio). HTML:n uusin versio on XHMTL, joka on puhtaasti XML-pohjainen kieli. HTML on pohjimmiltaan kuvaileva eli deklaratiivinen merkintäkieli. Tämä tarkoittaa sitä, että dokumentit tulisi merkata niiden ajateltujen rakenteellisten ominaisuuksien eikä ulkoasun perusteella. Elementtien merkitys on kuvattu HTML-spesifikaatiossa, mutta ei näiden ulkoasua: ulkoasun määrää dokumentin esittävä selainohjelma. Käytännössä HTML kuitenkin määrittelee myös dokumentin ulkoasuun liittyviä piirteitä. Yksi HTML:n perinteisistä ongelmista on ollut se, että kehittäjät haluavat SGML-filosofian kuvailevan merkkauksen sijaan itse määritellä HTML-dokumenttiensä ulkoasun. Dokumenttien kirjoittaminen niiden ulkoasun perusteella on kuitenkin ylläpidon ja tiedon käytettävyyden näkökulmasta työlästä ja se pahimmillaan hukkaa informaatiota. Yksi tapa HTML-dokumentin ulkoasun määrittämiseen on dokumentin HTML-rakenteeseen puetun tietosisällön ja esitystavan erottaminen toisistaan tyylien (stylesheet) käytön avulla.
XML XML 1.1 recommendation (W3C) says: XML is a subset of SGML. Its goal is to enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML. XML has been designed for ease of implementation and for interoperability with both SGML and HTML. XML is a subset of SGML features not commonly used and those hindering interoperability have been omitted a significantly reduced version of SGML XML reference: ~ 30 pages SGML reference: ~ 500+100 pages 19 XML on SGML:n huomattavasti suppeampi alijoukko. Sen kehittämisessä on tähdätty mm. SGML:ää parempaan siirrettävyyteen. Siirrettävyyttä hankaloittavien ominaisuuksien lisäksi XML:ään ei ole sisällytetty joitain SGML:n harvoin käytettyjä ominaisuuksia. XML- spesifikaatio kuvaa XML-dokumentin geneerisen rakenteen EBNF-notaation (Extended Backus- Naur Form) avulla, mikä käytännössä tarkoittaa tuottosääntöinä annettua kontekstivapaan kielen kielioppimäärittelyä. Huom! EBNF:ää ei kuitenkaan käytetä yksittäisten dokumenttien merkkaamiseen. Halutussa XML-pohjaisessa kielessä käytetyt elementit ja attribuutit määritellään XML Schema kielen tai DTD:n avulla. XML Schema kieleen palataan myöhemmin.
Valid XML documents Definition: An XML document is valid if it has an associated document type declaration and if the document complies with the constraints expressed in it. Definition: The XML document type declaration contains or points to markup declarations that provide a grammar for a class of documents. This grammar is called document type definition (DTD) In short, an XML document is valid if it fulfills the requirements specified in the DTD. 20 XML-dokumentti on siis validi, jos se on annetun kielioppimäärityksen mukainen. Annettu kielioppimääritys (DTD) kertoo esimerkiksi mitä elementtejä, attribuutteja jne. ko. kieliopin mukaisissa XML-dokumenteissa voidaan käyttää. Huomaa, että termit tyyppideklaraatio (document type declaration) ja tyyppimääritys/kielioppimääritys (document type definition) eivät tarkoita samaa. Tyyppideklaraatio on yksi XML-dokumentin pakollinen osa, josta selviää missä itse tyyppimääritys (document type definition) on annettu. Tämä tyyppimääritys voi sisältyä myös dokumentin tyyppideklaraatio-osaan. Tyyppimääritys voidaan antaa DTD:n avulla. XML-dokumentin validisuus tarkoittaa siis sitä, että dokumentti noudattaa DTD-määrittelyä.
Valid and well-formed XML documents Definition: A textual object is a well-formed XML document if: 1. Taken as a whole, it matches the production labeled document. That is, 1. it contains one or more elements and 2. there is exactly one element, called the root, no part of which appears in the content of any other element. All other elements, delimited by start and end tags, nest properly within each other. 2. It meets all the well-formedness constraints given in the XML specification. 3. Each of the parsed entities, which are referenced directly or indirectly within the document, are wellformed. 21 Hyvin muodostetussa XML-dokumentissa on tasan yksi juurielementti ja sen alku- ja lopputagit vastaavat toisiaan (vrt. sulutus). Kalvolla on esitetty tarkka määritys sille, milloin XML-dokumentti on hyvin muodostettu. Huomaa myös, että XML-dokumentti voi olla hyvin muodostettu, vaikka siihen ei liittyisi lainkaan DTD-määrittelyä. Tämä on huomattava kevennys SGML-standardiin verrattuna. Onko alla oleva XML-dokumentti hyvin muodostettu? <xml? Version= 1.0?> <name>patsy</name> <name>edina</name> Ei, koska dokumentilla on kaksi juurielementtiä. Siitä saadaan hyvinmuodostettu lisäämällä yksi ylemmän tason elementti: <xml? Version= 1.0?> <names> <name>patsy</name> <name>edina</name> </names>
Strengths of XML + well suited for Web + no validity requirement, but documents need to be well-formed (physical structure) for instance, for every non-empty start tag (<course>) there should be a corresponding end tag (</course>) + content and appearance descriptions are clearly separated + unlike in HTML, XML does not contain appearance descriptions (no stylesheet) + XSL (Extensible Style Language) offers a model and a language for describing how the XML data is to be presented (in XML syntax) 22 SGML ja XML eivät poikkea paljon toisistaan tiedon tallentamisen tehokkuudessa. Suurempi ero (ja XML:n hyöty) on jaeltavuudessa verkossa. XML-dokumenttien ei tarvitse olla valideja, eikä niiden mukana tarvitse siirtää DTD:tä. Riittää, että ne ovat hyvinmuodostettuja (sovellus voi tarvittaessa tulkita DTD:n merkkauskoodien käytön perusteella). DTD:n käyttö ja validointi on kuitenkin tarvittaessa mahdollista. SGML:ssä pakollinen dokumentin tyyppimäärittely ei siis ole pakollinen XML:ssä. Tosin selaimet ja XML-dokumenttia tulkitsevat ohjelmat eivät luonnollisesti osaa tehdä mitään kovin hyödyllistä mielivaltaisesti merkatulle XML-dokumentille. Huom! Validi dokumentti on aina hyvin muodostettu, mutta hyvin muodostettu dokumentti ei ole välttämättä validi! Lisäksi sisällön ja sen esitystavan erottaminen on yksi XML:n eduista. Näin ei asia ole (käytännössä) esimerkiksi HTML:n suhteen. XML-dokumentin esitystavan voi määritellä XSL-kielellä. XSL(T)- kieltä ei käsitellä tällä kurssilla, mutta siihen tutustutaan Matematiikan laitoksen järjestämällä Rakenteiset dokumentit kurssilla.
+ Simplicity Strengths of XML + based on Unicode characters (UTF-8, UTF- 16) -> readable, understandable + able to present data in a tree structure + simpler than ASN.1 + Internet rule: Simplicity wins, efficiency loses + the name of the game is openess (accessibility & availability) 23 Jotta XML:ssä ei tarvitisi käyttää maakohtaisia merkistöjä, käytetään siinä tarpeeksi kattavaa Unicode merkistöä. Unicode standardi (http://www.unicode.org/) on kehittynyt versiosta 2.0 versioon 5.0 ja siitä luultavimmin edelleen. Se määrittelee tekstinkäsittelyssä yleisimmin tarvittavat symbolit (kirjaimet, numerot + muut). Koodaustavat (esim. UTF-8 ja UTF-16) määrittelevät puolestaan miten Unicode otetaan käyttöön (ts., miten Unicode-symbolin indeksin esittämiseen tarvittava kahden tavun mittainen numero koodataan tiedostoon). UTF-8 on suunniteltu niin, että yleisesti käytössä oleva 7- bittinen US-ascii on UTF-8:n osajoukko (indeksit 32-127). XML:n yksinkertaisuus on valtti (esim. binääriformaatteihin verrattuna)...maksu tulee sitten dokumenttien koon muodossa. Toinen XML:n etu binääriformaatteihin verrattuna on se, että XML on tekstipohjainen ja siten ihmisen luettavissa ja ymmärrettävissä. Lisäksi tekstipohjaisuus tarkoittaa sitä, että XML:ää on helppo lukea, kirjoittaa ja modifioida standardityökaluilla (tekstieditorit). Näin ollen esimerkiksi XML-viestien ymmärtäminen ja analysoiminen on huomattavasti helpompaa kuin binääriformaattien. Toinen XML:n etu on se, että se mahdollistaa puurakenteisen tiedon esittämisen. Abstract Syntax Notation One (ASN.1) on avoin standardi (binääridata) puurakenteisen tiedon esittämiseksi. Sitä käytetään esim. monissa kommunikaatioprotokollissa. ASN.1 on kehitetty/optimoitu tehokkuusnäkökulmasta datan koon minimoimiseksi. Tämä puolestaan vääjäämättömästi tekee sen ymmärtämisen vaikeaksi. ASN.1 standardiin verrattuna XML on yksinkertaisempi ja ymmärrettävämpi (ja helpompi käsitellä ). Internetin kohtalaisen lyhyen käytön yksi opetus on: Yksinkertaisuus voittaa ja tehokkuus häviää. Tämä johtuu osin siitä, että Internetissä pelin henki on avoimuus. Toisin sanoen, tiedon pitää olla saavutettavissa ja saatavilla.
Weaknesses of XML requirements for information exchange capacity the basic requirement is the same as for HTML XML allows descriptions of various kinds of information -> exchanged documents may be quite large -> may cause problems (e.g., processing becomes slow) 24 Koska XML-pohjaisilla merkkauskielillä voidaan kuvata useammanlaista informaatiota kuin HTML:llä, on odottettavissa, että siirrettävät tietomäärät kasvavat huomattavasti. Suurten XMLdokumenttien prosessointi puolestaan on tyypillisesti hidasta, erityisesti mikäli dokumentti tulee myös validoida ja mikäli käytetään ns. DOM-jäsentäjää. DOM-jäsentäjään ja XML-dokumenttien prosessointia käsitellään myöhemmin lisää. XML-dokumenttien koko kasvaa helposti myös siksi, että XML-merkkaus itsessään on verboosia; merkkauksen osuus voi olla hyvinkin puolet koko dokumentin koosta.
Defining XML languages DTD (like in SGML) http://www.w3.org not sufficient: e.g., limited data types and problems (from semantic point of view) with namespaces XML Schema http://www.w3.org markup itself OO features (e.g., inheritance) namespace management RELAX and RELAX NG (OASIS) http://www.relaxng.org/ easy to be migrated with Schemas (e.g., RELAX borrows builtin datatypes of XML Schema Part 2) etc. 25 Tällä kurssilla käydään lyhyesti ja kerraten läpi lähinnä XML Schema -määrittelyjen perusasioita.
XML in software engineering Web applications and B2B applications sending, receiving, verifying, and manipulating XML documents exchanged among companies interfacing back-end databases in three-tier applications 1. tier: Web browser or a client application acting as a user interface 2. tier: A Web server or an application server 3. tier: Backend systems providing database and/or transaction services Web-based solutions 26 XML:llä on useita käyttötarkoituksia ja sovelluskohteita ohjelmistotuotannossa. Tällä kurssi ei pyritä kattamaan niitä kaikkia, vaan keskitytään XML:ää hyödyntäviin menetelmiin, jotka tukevat sovellusten välistä integraatiota ja kommunikointia. XML:ää käytetään paljon tavalla tai toisella tiedon siirtämiseen eri ohjelmien välillä. Tämä edellyttää sekä lähettävältä että vastaanottavalta osapuolelta XML-dokumenttien prosessointia. XMLpohjaisen tiedon tallettaminen tietokantaan erityisesti relaatiotietokantaan voi olla jossain määrin ongelmallista. Näitä ongelmia käsitellään kurssilla myöhemmin. Toisaalta tietokanta saattaa olla hyvinkin oleellinen myös Web-palvelukonseptin kannalta: Web-palvelut voivat käyttää tietokantoja tiedon varastoimiseen tai tietokanta itsessään voi sopivan rajapinnan kautta tarjota palvelun.
Towards decentralized applications Distributed programming technologies do not provide true independence e.g., CORBA, (D)COM, RMI middleware, programming language or platform dependent -> Towards decentralized XML-based (Web) applications Not only processing of data, but also the management is distributed any application (independently from the middleware technology used) can be integrated applications using XML for information exchange are easier to be integrated with other applications because of less dependencies on their running environment From software components to Web services Web applications are provided as services available on the Internet -> enabling dynamic (run-time) integration Difference: Distributed systems: component structure Service-oriented systems: services functionality (user s point of view) 27 Hajautusta tukevia tekniikoita on useita, esimerkiksi CORBA, (D)COM ja RMI. Nämä tekniikat eivät kuitenkaan ole saavuttaneet puhdasta riippumattomuutta sovellusten kesken. Hyvin usein nämä tekniikat ovat joko ohjelmointikieli- tai alustariippuvia. Lisäksi ne usein tukevat vain RPC-tyyppistä (Remote Procedure Call) kommunikointia. Ei-keskitetyt järjestelmät poikkeavat hajautetuista järjestelmistä järjestelmän hallinnan osalta. Hajautetuissa järjestelmissä pyritään jakamaan kuormaa usealle prosessoivalle yksikölle. Eikeskitetyissä järjestelmissä puolestaan myös järjestelmän hallinta on hajautettu. Web-palveluissa esimerkiksi pyritään välttämään hajautettuja järjestelmiä vaivaavia riippuvuuksista ja pääsemään askeleen lähemmäksi todellista riippumattomuutta. Järjestelmän integroiminen XML:n avulla on helpompaa ja mahdollistaa paremmin riippumattomuuden kuin hajautustekniikat, koska sidokset ympäristöön ovat vähäiset. Lisäksi Web-palveluvision mukaisesti sidonta käytettävään palveluun tapahtuu ajonaikaisesti eikä staattisesti. Useat Web-palvelutyökalut tarjoavat sekä staattisen että dynaamisen sidonnan toteuttamisen mahdollisuuden. Ero hajautettujen järjestelmien ja toisaalta palveluorientoituneiden järjestelmien välillä ei ole aina kovin selvä. Yksi periaatteellinen ero näissä kuitenkin näyttää olevan. Hajautus tehdään tyypillisesti ohjelman rakenteen perusteella ja myös itse hajautettuja komponentteja käsitellään usein rakenteen näkökulmasta. Palveluorientituneissa järjestelmissä puolestaan palvelut muodostetaan ja niitä tarkastellaan niiden toiminnallisuuden näkökulmasta, toisin sanoen millaista toiminnallisuutta ko. palvelu tarjoaa asiakasohjelmille.
XML in SE (cont d) Using XML as an exchange and/or file format e.g., XMI for UML-based designs or for service composition models Usage of metadata, i.e., information about information e.g. RDF and Semantic Web Using XML to describe the configuration parameters of software complex software has complex configuration files -> XML can be used to structure them e.g., Tomcat uses XML extensively Wrapping legacy systems In general: when structure is useful to be separated from the content and for tasks requiring interoperability! 28 XML:ää käytetään laajasti tiedonsiirto- ja tallennusformaattina. Tällä kurssilla tutustutaan XMI-kielen pääominaisuuksiin. XMI:tä käytetään mm. UML-mallien tallettamiseen XML-muodossa ja se näin ollen mahdollistaa ainakin periaatteessa ko. mallien siirron eri CASE-työvälineiden kesken. Lisäksi XMI:tä voidaan käyttää paveluiden orkestrointikuvauksissa. XML:ää hyödynnetään myös semanttisessa Webissä ja metatiedon kuvaamisessa yleisemminkin. Myös erilaiset konfigurointitiedostot ovat usein XML-muodossa sen helpon prosessoinnin vuoksi: laajojen konfigurointitiedostojen rakenne voidaan helposti määrätä XML:n avulla. XML:ää käytetään myös olemassa olevien ns. legacy-systeemien käyttöönottamiseksi uudessa ympäristössä. Tällöin ko. systeemille tehdään XML-muotoinen paketointi (wrapping). Yleistettynä kaikki edellä mainitut sovelluskohteet pyrkivät samaan tavoitteeseen: yhteensopivuuden (interoperabiliteetin) lisäämiseen. XML:stä ja sen soveltamisesta löytyy runsaasti esimerkkejä. Jokaisen kannattaa tutustua ainakin XML spesifikaatioon (www.w3.org). Suomenkielistä informaatiota XML:stä, Semanttisesta Webistä ja W3C:n toiminnasta yleensäkin löytyy Suomen W3C toimiston sivuilta (http://www.w3c.tut.fi).