Tutkija Mikko Salmenperä huone: sd109 TTY / Systeemitekniikan laitos puh: 040-849 0061 email: mikko.salmenpera@tut.fi
Luennon sisällys Historiaa ja pohjatietoa Miksi XML tekniikkaa tarvitaan? XML dokumentin rakenne ja esitystapa XML standardiperhe
XML kehityksen historia XSL XHTML 2000 1998 XML GML = Genralised Markup Language SGML = Standard Generalised Markup Language XML = extensible Markup Language XSL = extensible Stylesheet Language HTML = Hyper Text Markup Language 1992 HTML WWW 1986 SGML 1969 GML IBM: Charles Goldfarb Edward Mosher Raymond Lorie Internet
W3C To lead the World Wide Web to its full potential by developing protocols and guidelines that ensure long term growth for the Web. Founded in 1994 by Tim Berners Lee @ MIT 418 member organizations (as of Sep. 2008) Output includes 60+ technical specifications Recommendations: HTML, XML, Namespaces, XML Schema, XML Query, XML Protocol, SOAP, etc. http://www.w3.org/
W3C: The Web is an application built on top of the Internet
Extensible Markup Language (XML) 1.1 W3C Recommendation 1.0 in 1998 Extensible Markup Language (XML) 1.0 (Fourth Edition) 16 th August 2006. Extensible Markup Language (XML) 1.1 (Second Edition) 16 th August 2006. http://www.w3.org/tr/xml11/ http://www.w3.org/tr/xml names11/ The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document. 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 suosituksen suunnittelun reunaehdot XML shall be straightforwardly usable over the Internet. XML shall support a wide variety of applications. XML shall be compatible with SGML. It shall be easy to write programs which process XML documents. The number of optional features in XML is to be kept to the absolute minimum, ideally zero. XML documents should be human legible and reasonably clear. The XML design should be prepared quickly. The design of XML shall be formal and concise. XML documents shall be easy to create. Terseness in XML markup is of minimal importance. terseness = tylyys, ytimekkyys, selkeys (NetMOT)
1.0 > 1.1 Vain pieniä muutoksia ja taaksepäin yhteensopivasti. XML 1.0 dokumentit ovat yhteensopivia XML 1.1 suuntaan. Syitä uuden version tekemiseen: Unicode standardi on muuttunut XML 1.1 tukee kaikkia unicode versioita. Rivinloppumerkkejä lisää (Unicode) Erikoismerkkeihin viitataan #x1 tyylisesti. Käsite fully normalized XML document määritelty You are encouraged to create or generate XML 1.0 documents if you do not need the new features in XML 1.1; XML Parsers are expected to understand both XML 1.0 and XML 1.1.
XML soveltuu melkein mihin tahansa? XSL (XML style language) XSLT (XML based transformation language) XHTML (HTML based on XML) WML (Markup language for WAP mobiles) MathML (Math formula definition) CML (Chemical Markup Language SVG (Scalable Vector Graphics) XML RPC (XML Remote Procedure Call) SOAP (Simple Object Access Protocol)
XML the Web the Internet Miksi XML tekniikkaa tarvitaan? Miten nykyiseen tilanteeseen on päädytty?
Aluksi oli käytössä HTML Internetin suosion myötä HTML:n käyttö lisääntyi räjähdysmäisesti. Sisältää sekä rakennetta <emp>, että ulkoasua <b> kuvaavia elementtejä Yksinkertainen ja nopea oppia Tiettyyn rajaan asti helppokäyttöinen. SGML speksin sovellus
Miksei HTML kelpaa? HTML:n ongelmia: Löysät säännöt dokumentin rakenteessa ja merkkauksessa. Merkkausta käytetään etupäässä dokumentin ulkoasun määrittelemiseen. Ei laajennettavissa. (Uusia elementtejä ei voi itse määritellä) Puutteellinen ja suoranaisesti virheellinenkin HTML kelpaa useimmille selaimille. Tästä johtuen virheellinen HTML on yleistä.
Yksinkertaisempiakin vaitoehtoja olisi ollut S expressions, vuodelta 1958 (kurssi (luento (aihe xml perusteet )(sali sd302 )... ) )
XML rakenne eroon ulkoasusta ja datasta? Keskitytään oleelliseen eli itse tietoon. Aineiston automaattinen käsittely on huomattavasti helpompaa, kun myös tiedon rakenteet kuvataan. Samasta lähdedokumentista voidaan tuottaa eri esiintymiä vähemmällä vaivalla. Rakennetta muokataan automaattisesti ennalta annettujen sääntöjen mukaan (XSL, XSLT) Esimerkiksi HTML: Ulkoasumääritykset eivät ole aina yksikäsitteisiä eivätkä selkeitä. Eri selaimet tarvitsevat erilaisen html dokumentin saman sivu tuottamiseen.
XML:n perusidea XML dokumentti sisältää tiedon sisällön rakenteesta ja itse tiedon. Lisäksi dokumentissa voi olla tiedon ja rakenteen merkitystä kuvaavaa metatietoa. XML speksi määrittelee kieliopin, esitystavan ja tarvittavat käytännöt xml muotoisen sisällön kuvaukseen. XML dokumentti kootaan yksittäisistä alkioista (elements). Elementit pitää itse nimetä XML speksi määrittelee niiden sallitut käyttötavat. SGML sovellusprofiili.
Esimerkki HTML ja XML dokumenteista HTML: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <DL> <DT>Virtalähde <DD>Hirschmann </DL> <UL> <LI>Valmistaja: Hirschmann <LI>Malli: RPS 60 <LI>Tilausnumero: 943 662-001 <LI>Syöttöjännite: 230V </UL> </DL> XML: <?xml version="1.0" encoding="utf-8"?> <VARAOSA> <LUOKKA>Virtalähde</LUOKKA> <VALMISTAJA>Hirschmann</VALMISTAJA> <MALLI>RPS 60</MALLI> <TILAUSNUMERO>943 662-100 </TILAUSNUMERO> <SYÖTTÖJÄNNITE>230V</SYÖTTÖJÄNNITE> </VARAOSA>
XML:n hyviä puolia: siirrettävyys XML parantaa merkittävästi tiedon siirrettävyyttä: XML dokumentti tallennetaan tekstimuodossa. Useat binääritallennustavan ongelmat häviävät. Tiedoston koko kasvaa huomattavasti binääri esitykseen verrattuna. Määritellään oma esitystapa tiedolle tai käytetään muiden tekemiä rakenne määrityksiä omalle tiedolle. Muuntaminen (XSLT) muodosta toiseen voidaan automatisoida. Merkistöt tuottavat kaikesta huolimatta päänvaivaa. <?xml version="1.0" encoding="utf 8"?> Ongelmat johtuvat lähinnä huonosti toimivista tai väärin konfiguroiduista työkaluista.
XML hyviä puolia XML dokumentti on ihmisen (ja koneen) helposti ymmärtämässä muodossa: (google search esimerkki) <?xml version='1.0' encoding='utf 8'?> <soap11:envelope xmlns="urn:googlesearch" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/"> <soap11:body> <dogooglesearch> <key>00000000000000000000000000000000</key> <q>sample soap message</q> <start>0</start> <maxresults>10</maxresults> <filter>true</filter> <restrict></restrict> <safesearch>false</safesearch> <lr></lr> <ie>latin1</ie> <oe>latin1</oe> </dogooglesearch> </soap11:body> </soap11:envelope>
XML hyviä puolia: standardit Mahdollisuus määritellä yleisiä standardoituja esitystapoja: Alemman tason bitin viilaaminen jää vähemmälle. Mahdollisuus keskittyä oman sovelluksen kannalta oleelliseen, eli tietosisältöön ja toimintalogiikkaan. Financial Exchange (IFX), Electronic Business XML Initiative (ebxml), RosettaNet, Banking Industry Technology Secretariat (BITS) PSK (kansallinen)... Eri sovellusten välinen tiedonsiirto helpottuu jos kumpikin nojaa samaan standardiin tietomalliin.
XML hyviä puolia Dokumentissa on kuvattuna tiedon rakenne ja osittain myös merkitys: <?xml version="1.0"?> <KOULU> <KURSSI tyyppi="seminaari"> <NIMI>Tuotannon informaatiojärjestelmien integrointi</nimi> <NUMERO>7601050</NUMERO> <ALKAA>18.9.2002</ALKAA> <OSALLISTUJAT> <OPISKELIJA status="läsnä"> <ETUNIMI>Teemu</ETUNIMI> <SUKUNIMI>Teekkari</SUKUNIMI> </OPISKELIJA> <OPISKELIJA status="keskeyttänyt"> <ETUNIMI>Taavi</ETUNIMI> <SUKUNIMI>Taulapää</SUKUNIMI> </OPISKELIJA> </OSALLISTUJAT> </KURSSI> </KOULU>
XML esimerkkejä: XHTML <?xml version="1.0" encoding="utf-8"?> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title>huomenta!</title></head> <body> <h1>otsikko</h1> Tekstiä </body> </html>
Esimerkki: ebxml <MultiPartyCollaboration name="dropship"> <BusinessPartnerRole name="customer"> <Performs initiatingrole='//binarycollaboration[@name="firmorder"]/ InitiatingRole[@name="buyer"]' /> </BusinessPartnerRole> <BusinessPartnerRole name="retailer"> <Performs respondingrole='//binarycollaboration[@name="firmorder"]/ RespondingRole[@name="seller"]' /> <Performs initiatingrole='//binarycollaboration[...]/ InitiatingRole[@name="buyer"]' /> </BusinessPartnerRole> <BusinessPartnerRole name="dropship Vendor">... </BusinessPartnerRole> </MultiPartyCollaboration>
Sisällys XML kielioppi ja esitystapa
Tärkeitä asioita huomata käytännön kannalta XML erottelee isot ja pienet kirjaimet. XML speksi määrittelee yksikäsitteisesti kelvollisen merkkauksen (markup) XML dokumentille. XML dokumenteille voidaan määritellä tarkasti hyväksyttävä rakenne. (Schema tai DTD)
Well formed: Well formed & Valid Dokumentti noudattaa XML speksiä, eli ainakin jokainen elementti on suljettu. (<>...</>) Kaikki attribuuttien arvot ovat lainausmerkeissä. (id= 1 ) Dokumentin puurakenne on ehjä ja siinä on tasan yksi juurielementti. Valid: Well formed Dokumentti on tarkastettu ja noudattaa sen rakenteen määrittelevää DTD tai SCHEMA määritystä.
Well formed & Valid Alussa pitää myös olla prolog elementti, eli ennen juurielementtiä xml versio, eli <?xml version= 1.0?> <lyhyt> </lyhyt> Dokumentti ei voi olla valid, ennen kuin sille on tehty tyyppimäärittely.
XML dokumentin perusrakenne XML dokumentti muodostaa hierarkkisen rakenteen: <?xml version="1.0"?> <KOULU> <KURSSI tyyppi="seminaari"> <NIMI>Tuotannon informaatiojärjestelmien integrointi</nimi> <NUMERO>7601050</NUMERO> </OSALLISTUJAT> </KURSSI> </KOULU> <ALKAA>18.9.2002</ALKAA> <OSALLISTUJAT> <OPISKELIJA status="läsnä"> <ETUNIMI>Teemu</ETUNIMI> <SUKUNIMI>Teekkari</SUKUNIMI> </OPISKELIJA> <OPISKELIJA status="keskeyttänyt"> <ETUNIMI>Taavi</ETUNIMI> <SUKUNIMI>Taulapää</SUKUNIMI> </OPISKELIJA> KOULU KURSSI NIMI NUMERO AIHE ALKAA OSALLISTUJAT ETUNIMI OPISKELIJA SUKUNIMI ETUNIMI OPISKELIJA SUKUNIMI
XML dokumentin perusrakenne Prosessointi ohje Dokumentin tyyppimääritys <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE library SYSTEM "dokumentti.dtd" > <TERVEHDYS> <OTSIKKO>XML TERVEISET</OTSIKKO> <VIESTI >TERVETULOA XML-KURSSILLE</VIESTI> </TERVEHDYS> Merkkidataa (Character data) Elementti
XML dokumentin perusrakenne XML Dokumentin rakenne jakautuu speksin mukaan kahteen osaan fyysiseen ja loogiseen Fyysinen (käytännön) toteutus on haluttu irrottaa tiedon loogisesta mallintamisesta ja esittämisestä Fyysinen Rakenne Dokumentin konkreettisesti muodostavat osat (Entity). Tiedostoja tms. (Storage unit). yksi XML dokumentti voi siis olla jakaantuneena useaan osaan. Entiteetit jaotellaan vielä kahteen osaan: Jäsenneltävä (dataa ja merkkausta) Jäsentämätön (ei XML muotoista sisältöä)
XML dokumentin looginen rakenne XML dokumentin loogisen rakenteen määrittelevä osa on XML:n ydin XML dokumentti koostuu speksin mukaan: document ::= prolog element Misc* (EBNF muoto) Prolog on otsikko osuus, jossa on dokumentin käsittelemiseen tarvittavaa tietoa. pakollinen juurielementti sisältää varsinaisen informaation. Juurielementtejä voi ja pitää olla XML dokumentissa tasan yksi.
XML dokumentin looginen rakenne XML dokumentti koostuu kahden tyyppisistä osista: merkkauksesta (markup) <Elementti></Elementti> merkkidatasta (parseable character data) <Elementti>Tämä on dataa</elementti> Merkkidata (Parseable character data) on XML dokumentissa olevaa informaatiota, jota ei enää haluta jäsentää lisää. Englanninkielinen nimi parseable character data on harhaanjohtava, koska nimenomaan tätä dataa XML jäsenninohjelmistot eivät käsittele.
Merkkidata (CDATA) Merkkidata on tekstimuotoista dataa. Merkkidata ei voi sisältää erikoismerkkejä, joita käytetään merkkauksessa. (<,>,,'). Erikoismerkkejä voidaan käyttää datan joukossa kahdella tavalla: merkkiviittausten avulla < merkki tehdään käyttämällä < koodia CDATA lohkon avulla: <![CDATA[<hello>Hello, world!</hello>]]>
Merkkaus Merkkaukseen (rakenteen kuvaus) kuuluvat: elementin alku elementin loppu tyhjän elementti attribuutti CDATA lohko <elementti> </elementti> <elementti/> <elementti status = läsnä > <![CDATA[<hello>Hello, world!</hello>]]> kommentti <! kommentti >
merkkiviittaus < Merkkaus dokumentin tyyppimäärittely <!DOCTYPE greeting SYSTEM "hello.dtd"> prosessointiohje <?xml version="1.0" encoding="utf 8"?> Harvinainen tapaus: entiteettiviittaus <!ENTITY hatch pic SYSTEM../grafix/OpenHatch.gif" NDATA gif > &hatch pic;
Elementti (Element) Elementti on nimetty osa XML dokumenttia. Elementin nimen on tarkoitus kuvata sen sisältämän datan merkitys Elementti voi sisältää tekstidataa tai olla tyhjä. <MITTAUS>1.0</MITTAUS> <MITTAUS></MITTAUS> <MITTAUS/> Elementti voi sisältää myös muita elementtejä. Tiedon rakenne kuvataan laittamalla elementtejä sisäkkäin <LISTA> <MITTAUS>1.0</MITTAUS> <MITTAUS>0.2</MITTAUS> </LISTA>
Attribuutti (Attribute) Attribuutilla voidaan liittää elementtiin lisäinformaatiota. Attribuutti on aina osa elementin aloittavaa merkkausta. Elementeissä voi olla useita attribuutteja. <MITTAUS aika= 9.9.2002@10.00.00.0000 > 1.0 </MITTAUS>
Attribuutit vs. Elementit Sama tieto voidaan esittää elementtien ja attribuuttien erilaisina yhdistelminä. Oikeaa tapaa päättää esitystavasta ei ole. Valintaan vaikuttaa mm. kkäytäntö Käytettyjen ohjelmistojen ominaisuudet Attribuuttien käyttöön kannattaa ottaa selkeä ja johdonmukainen lähestymistapa. <OPISKELIJA status= läsnä /> <OPISKELIJA> <STATUS>läsnä</STATUS> </OPISKELIJA>
Attribuutit vs. Elementit Yksi attribuuttien käyttöä puoltava tekijä on kuvata toisia elementtejä sisältävän säiliöelementin metadataa. Jos säiliö on tyhjä, ei sen mahdollisesti sisältämistä elementeistä ole mitään informaatiota (ilman skeemaa joka kuvaa rakenteen). <osallistujalista/> <osallistujalista tyyppi= osallistujat ></osallistujalista> <osallistujalista tyyppi= poissaolijat ></osallistujalista>
Kommentti Kommentti: Määritellään merkkauksella <! > XML jäsentimet eivät huomioi kommentteja mitenkään. <! HUOM. LISTA EI OLE VIELÄ VALMIS > <LISTA> <NIMI>MIKKO</NIMI> </NIMI> <LISTA>
DTD (Document Type Declaration) DTD on XML speksissä määritelty perusmenetelmä XMLdokumentin sallitun rakenteen kuvaamiseen. Määritellään merkkauksella <!DOCTYPE...>. Pitää olla dokumentin alussa ennen varsinaista juurielementtiä. Rakenteen kuvaus voi olla samassa tai eri tiedostossa (entity), kuin xml dokumentin juurielementti. Huono puoli DTD määrittelyssä on rajoittunut kyky määritellä elementtien sallittuja tyyppejä. Ei itsessään XML muotoista.
DTD esimerkki <?xml version="1.0" encoding="utf-8"?> <!-- Viittaus toiseen entiteettiin (tiedostoon) --> <!DOCTYPE DOKUMENTTI SYSTEM "./DOKUMENTTI.dtd"> <!--vaihtoehtoisesti määrittely samassa tiedostossa--> <!DOCTYPE DOCUMENT [ <!ELEMENT TERVEHDYS (OTSIKKO, VIESTI)> <!ELEMENT OTSIKKO (#PCDATA)> <!ELEMENT VIESTI (#PCDATA)> ]> <TERVEHDYS> <OTSIKKO>XML TERVEISET</OTSIKKO> <VIESTI >TERVETULOA XML-KURSSILLE</VIESTI> </TERVEHDYS>
Prosessointiohje (Processing instruction) Määritellään merkkauksella <?...?> Sisältää tietoa XML jäsentimille. XML määrittelee erityisen prosessointiohjeen, jossa esitetään kolme tietoa: <?xml version="1.0" encoding="utf 8" standalone= yes?> XML versio Käytettävä merkistö Standalone, eli onko dokumentista viittauksia toisiin tiedostoihin, vain onko kaikki data kerätty samaan dokumenttiin.
Entiteettiviittaus ( entity reference ) Entiteettiviittaukset mahdollistavat: Vakio merkkijonojen nimeämisen ja liittämisen merkkidatan joukkoon. XML dokumentin jakamisen fyysisiin osiin. Liittää ei XML pohjaisia osia XML dokumenttiin. Kuusi eri tyyppiä: dokumenttientiteetti sisäinen entiteetti ulkoinen jäsenettävä entiteetti jäsentämätön entiteetti sisäinen parametrientiteetti ulkoinen parametrientiteetti
XML Standardiperhe Namespaces XML Schema XML Inclusions (Xinclude) XML Information Set XML Fragment Interchange XML Base xml:id XSLT XSL XPath XQuery XML Linking Language (Xlink) XML Pointer Language (XPointer)
XML Standardiperhe XML 1.0 standardi esittää vain tavan jäsentää tietoa puumaiseksi rakenteeksi. Se määrittelee: XML dokumentin merkkauksen. Tavan kuvata XML dokumentin sallittu rakenne. XML dokumenttien käyttö edellyttää vielä paljon muutakin. XML Standardiperheessä määritellään lisäominaisuuksia ja uutta semantiikkaa XML dokumenttien hyödyntämiseen.
XML Standardiperhe Namespaces
XML Namespaces Keskeisin laajennos XML speksiin. XML dokumentti voi sisältää elementtejä, jotka noudattavat eri rakenne määrityksiä (DTD tai Schema), mutta ovat saman nimisiä. Törmäykseksi sanotaan tilannetta jossa kaksi elementtiä on nimetty samoin. Nimiavaruudet poistavat törmäysten aiheuttamat ongelmat. Johdonmukaisuuden ja yksikäsitteisyyden säilyttämiseksi pitää eri merkityksen omaavat elementit erotella toisistaan, vaikka niiden nimi olisikin sama.
XML Namespaces Törmäyksiä syntyy kun eri ihmiset käyttävät saman nimistä elementtiä eri tarkoitukseen: <osoite> http:\\www.ac.tut.fi</osoite> <osoite> korkeakoulunkatu 3</osoite>
XML Namespaces XML Namespaces speksi ratkaisee saman nimisten elementtien aiheuttaman ongelman lisäämällä nimiavaruuden käsitteen elementtiin. Nimiavaruus on yksilöllinen tunnistemerkkijonoa. Nimiavaruus johdetaan olemassa olevasta yksikäsitteisestä URInimestä joka liittyy niman määrittelijään. <osoite xmlns="http://ac.tut.fi/mikkos/"> http:\\ac.tut.fi </osoite>
XML Namespaces Nimiavaruusmäärittely voidaan perytyy lapsi elementeille Nimiavaruuteen voidaan viitata eksplisiittisesti käyttämällä prefix notaatiota. Esimerkki: <Lista xmlns:lyhenne= http://www.ain.rd.tut.fi/mikkos xmlns=http://www.tut.fi > <osoite> Korkeakoulunkatu 3 </osoite> <lyhenne:osoite>https://www.ain.rd.tut.fi/wiki/</osoite> </lista>
XML Information Set (Second Edition) http://www.w3.org/tr/2004/rec xml infoset 20040204/ This specification defines an abstract data set called the XML Information Set (Infoset). Its purpose is to provide a consistent set of definitions for use in other specifications that need to refer to the information in a well formed XML document [XML]. Esimerkki: element 1. [namespace name] The namespace name, if any, of the element type. If the element does not belong to a namespace, this property has no value. 2. [local name] The local part of the element type name. This does not include any namespace prefix or following colon. 3. [prefix] The namespace prefix part of the element type name. If the name is unprefixed, this property has no value. Note that namespaceaware applications should use the namespace name rather than the prefix to identify elements....
XML Base http://www.w3.org/tr/xmlbase/ The XML Linking Language [XLink] defines Extensible Markup Language (XML) 1.0 [XML] constructs to describe links between resources. One of the stated requirements on XLink is to support HTML [HTML 4.01] linking constructs in a generic way. The HTML BASE element is one such construct which the XLink Working Group has considered. BASE allows authors to explicitly specify a document's base URI for the purpose of resolving relative URIs in links to external images, applets, formprocessing programs, style sheets, and so on.
XML Base <?xml version="1.0"?> <doc xml:base="http://example.org/today/" xmlns:xlink="http://www.w3.org/1999/xlink"> <head> <title>virtual Library</title> </head> <body> <paragraph>see <link xlink:type="simple" xlink:href="new.xml">what's new</link>!</paragraph> <paragraph>check out the hot picks of the day!</paragraph> <olist xml:base="/hotpicks/"> <item> <link xlink:type="simple" xlink:href="pick1.xml">hot Pick #1</link> </item> <item> <link xlink:type="simple" xlink:href="pick2.xml">hot Pick #2</link> </item> <item> <link xlink:type="simple" xlink:href="pick3.xml">hot Pick #3</link> </item> </olist> </body> </doc>
XML Fragment Interchange http://www.w3.org/tr/xml fragment The XML standard supports logical documents composed of possibly several entities. It may be desirable to view or edit one or more of the entities or parts of entities while having no interest, need, or ability to view or edit the entire document.
XML Inclusions (XInclude) http://www.w3.org/tr/xinclude/ This document specifies a processing model and syntax for general purpose inclusion. Inclusion is accomplished by merging a number of XML information sets into a single composite infoset. Specification of the XML documents (infosets) to be merged and control over the merging process is expressed in XML friendly syntax (elements, attributes, URI references).
http://www.w3.org/tr/xpath Xpath Yleinen syntaksin määrittely, jolla voi osoittaa XMLdokumentissa olevaa tietoa. Käytetään Xpointer ja XSLT speksien tukena. Ei ole itse XML pohjaista. Esimerkki: Pattern: match="book/para" Location: <book><para> match="child::book" <book> <para> match="parent::para" <book> <para>... lisäksi: tietotyyppejä, funktioita, operaatioita, filttereitä... (regexp tyyliin)
Xpointer Sallii XML dokumentin sisällä oleviin elementteihin osoittamisen. Mahdollisia kohteita ovat: elementit tekstidata attribuutit Osoitettava tieto voi olla monipuolista (yksi elementti, alue, joukko elementtejä). Yksikäsitteinen viittaaminen XML dokumentin rakenteeseen on mahdollista vaikka dokumentissa ei olisikaan käytetty mitään erityisiä ID tms. arvoja....#xpointer(//recipe[4])...#xpointer(//rcp:recipe[./rcp:title ='Zuppa Inglese'])...#element(/1/5)...#r102
Xlink Xlink tarjoaa mahdollisuuden luoda linkkejä eri resurssien välille. Esimerkkinä HTML <a> elementti, jolla merkitään yksisuuntainen hyperlinkki toiseen HTML dokumenttiin. Xlink tarjoaa monipuolisemman tavan luoda linkkejä. Linkkejä voi olla mm. useiden resurssien välille tai kaksisuuntainen. Linkkiin voidaan liittää myös sitä kuvaavaa metadataa. <mylink xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="extended"> <myresource xlink:type="locator" xlink:href="students.xml#carl" xlink:label="student"/> <myresource xlink:type="locator" xlink:href="students.xml#fred" xlink:label="student"/> <myresource xlink:type="locator" xlink:href="teachers.xml#joe" xlink:label="teacher"/> <myarc xlink:type="arc" xlink:from="student" xlink:to="teacher"/> </mylink>
Esimerkkejä XML sovelluksista WSDL - sovelluspalveluiden kuvaamiseen
Mitä/mikä WSDL oikein on? WSDL on XML muotoinen kuvaus Web sovelluspalvelusta WSDL dokumentissa kuvataan palvelu, sen kutsuttavissa olevat funktiot, niiden parametrit, kutsumistavat ja verkko osoite(et) josta palvelu löytyy Palvelun kuvaus siis sisältää yhdessä dokumentissa sekä loogisen, että fyysisen kuvauksen Soveltuu myös muun tyyppisten palveluiden kuvaamiseen, vaikka onkin keskeinen WS palveluiden kuvaamisessa
WSDL dokumentin rakenne WSDL dokumentissa on seitsemän pääelementtiä: <types> Sisältää tietorakenteiden kuvauksia. <message> Sisältää siirrettävän datan tyypitetyt kuvaukset. <operation> Kutsun abstrakti kuvaus <port type> Kokoelma kutsuja joita jokin päätepiste (endpoint) tukee. <binding> <port> Konkreettinen määrttely käytettävästä kutsumenetelmästä ja protokollasta. Liittää <binding> määritykseen internet osoitteen. <service> Kokoelma toisiinsa liittyviä <port> määrityksiä.
WSDL esimerkki: Google web API <types> <xsd:complextype name="googlesearchresult"> <xsd:all> <xsd:element name="documentfiltering" type="xsd:boolean"/> <xsd:element name="searchcomments" type="xsd:string"/> <xsd:element name="estimatedtotalresultscount" type="xsd:int"/> <xsd:element name="estimateisexact" type="xsd:boolean"/> <xsd:element name="resultelements" type="typens:resultelementarray"/> <xsd:element name="searchquery" type="xsd:string"/> <xsd:element name="startindex" type="xsd:int"/> <xsd:element name="endindex" type="xsd:int"/> <xsd:element name="searchtips" type="xsd:string"/> <xsd:element name="directorycategories" type="typens:directorycategoryarray"/> <xsd:element name="searchtime" type="xsd:double"/> </xsd:all> </xsd:complextype> </types>
Esimerkkejä XML sovelluksista SOAP - XML pohjainen tietoliikenne protkolla
SOAP ( Simple Object Access Protocol ) W3C Recommendation 24 June 2003 SOAP suosituksen ensimmäiset julkiset versiot ovat vuodelta 1999. Microsoft on SOAP:n isä ja edelleenkin voimakkaasti mukana kehitystyössä.
Mitä SOAP määrittelee? SOAP speksi määrittelee tavan kuljettaa tietoa XML muotoisten viestien avulla kahden päätepisteen välillä. SOAP perustuu puhtaasti XML dokumenttien siirtoon ohjemien välillä. Ei sinällään mitään uutta, mutta toteutus on huomattavasti enemmän XML sidonnainen kuin vastaavat perinteiset: MOM (Message Oriented Middleware) COM/DCOM GORBA/IIOP RMI XML RPC
Mitä SOAP tarkoittaa? Transport binding Message exchange patterns SOAP message structure Data model (optional) XMLScema XML 1.0 + Namespaces
Data model SOAP määrittelee tavan tietorakenteiden esittämiselle XMLmuodossa. Encoding (tietorakenteet xml muotoon) SOAP RPC (funktiokutsut xml muotoon) Käyttäminen on vapaaehtoista, myös omaa tietomallia voi vapaasti soveltaa. Nimiavaruudet kertovat käytetyn tietomallin
Sample soap message: Google web search <?xml version='1.0' encoding='utf-8'?> <soap11:envelope xmlns="urn:googlesearch" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/"> <soap11:body> <dogooglesearch> <key>00000000000000000000000000000000</key> <q>sample soap message</q> <start>0</start> <maxresults>10</maxresults> <filter>true</filter> <restrict></restrict> <safesearch>false</safesearch> <lr></lr> <ie>latin1</ie> <oe>latin1</oe> </dogooglesearch> </soap11:body> </soap11:envelope>
SOAP message structure XMLSchema määritys sallitusta SOAP viestin rakenteesta Kolme peruselementtiä: Envelope Header (valinnanvarainen) Body Header ja Body elementtien sisältö jää suurelta osalta sovelluksen kehittäjän vastuulle. Sisältö riippuu käytetystä tietomallista
Sample soap message: Google web search <?xml version='1.0' encoding='utf-8'?> <soap11:envelope xmlns="urn:googlesearch" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/"> <soap11:body> <dogooglesearch> <key>00000000000000000000000000000000</key> <q>sample soap message</q> <start>0</start> <maxresults>10</maxresults> <filter>true</filter> <restrict></restrict> <safesearch>false</safesearch> <lr></lr> <ie>latin1</ie> <oe>latin1</oe> </dogooglesearch> </soap11:body> </soap11:envelope>
Message exchange patterns (MEP) Tilakone viestiliikenteen hoitamiseen Yksinkertainen Request Response malli
Transport binding Formaali määrittely SOAP viestien kuljettamiseksi jonkin toisen alemmantason tietoliikenne protokollan päällä. SOAP on alusta asti määritellyt HTTP Transport Binding:n. Myöhemmin mukaan on tullut Email Transport Binding. (SMTP Simple Mail Transfer Protocol) Sovellus voi määritellä myös oman kuljetuskerroksensa. JMS (Java Messaging Service...) FTP...
HTTP Transport binding HTTP Transport binding määrittely sisältää kaiken tarvittavan SOAP viestin kuljettamiseksi HTTP protokollan avulla. HTTP protokollan otsikkokenttä laajennos. SOAP viesti on XML pohjainen, joten se sopii suoraan HTTP viestiin hyötykuormaksi (payload).
HTTP Transport binding POST /objecturi HTTP/1.1 Host: www.foo.com SOAPMethodName: http://www.google.com/googlesearch Content Type: text/xml Content Length: 1024 <?xml version='1.0' encoding='utf 8'?> <soap11:envelope xmlns="urn:googlesearch" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/"> <soap11:body> <dogooglesearch> <key>00000000000000000000000000000000</key> <q>sample soap message</q> <start>0</start> <maxresults>10</maxresults> <filter>true</filter> <restrict></restrict> <safesearch>false</safesearch> <lr></lr> <ie>latin1</ie> <oe>latin1</oe> </dogooglesearch> </soap11:body> </soap11:envelope>
HTTP/1.1 200 OK Content Type: text/xml; charset="utf 8" Content Length: nnnn HTTP Transport binding <?xml version='1.0' encoding='utf 8'?> <soap11:envelope xmlns="urn:googlesearch" xmlns:google="urn:googlesearch" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/"> <soap11:body> <dogooglesearchresponse> <return> <documentfiltering>false</documentfiltering> <estimatedtotalresultscount>3</estimatedtotalresultscount> <directorycategories soapenc:arraytype="google:directorycategory[0]"></directorycategories> <searchtime>0.194871</searchtime> <resultelements soapenc:arraytype="google:resultelement[3]"> <item>...
... www.w3.org Verkosta löytyy vaikka mitä! www.xml.org (Industrial XML portal) www.xml.com (Oreilly) xml.apache.org www.alphaworks.ibm.com