XML-metakieli, k

Samankaltaiset tiedostot
Helsingin yliopisto / TKTL XML-Metakieli XML Schema

2 XML Schema: johdanto ja rakenteiden perusteet

2 XML Schema: johdanto ja rakenteiden perusteet

3 XML Schema: datatyypit

XML kielioppi. Elementtien ja attribuuttien määrittely. Ctl230: Luentokalvot Miro Lehtonen

NELLI-Tunnis. Käyttäjän tunnistus NELLI-tiedonhakuportaalissa yleisissä kirjastoissa. Versio Ere Maijala Kansalliskirjasto

GML-mallinnus. 1 Johdanto 1/27. Paikkatietojen mallintaminen tiedonsiirtoa varten. Liite III

XML standardeja. nimiavaruudet, namespaces XHTML XML Schema linkitys Jaana Holvikivi 1

XML merkintäkielten perusteet. Luento 3 Pekka Aarnio

XML merkintäkielten perusteet. Luento 3 Pekka Aarnio

4 XML Schema: tyyppihierarkiat ja avaimet

JHS 162 Paikkatietojen mallintaminen tiedonsiirtoa varten Liite 3 GML-mallinnus

XML-pohjaiset rakennemäärittelyt

XML and XML Schema 29

Tekninen rajapinta Zip-tiedosto sovelluskehittäjälle Kansallisen tulorekisterin perustamishanke

SÄHKE-hanke. Tekninen mallintaminen SÄHKE-metatietojen XML Schema

Tekninen rajapinta Zip-tiedosto sovelluskehittäjälle Kansallisen tulorekisterin perustamishanke

Tutkija Mikko Salmenperä. huone: sd109. TTY / Systeemitekniikan laitos. puh:

Helsingin yliopisto Tietojenkäsittelytieteen laitos XML-metakieli (2011) Harri Laine 1. Jäsennys ja sarjallistaminen

Luento 3: Tietorakenteiden esittäminen

XML johdatus: DTD. Jaana Holvikivi

7 DTD ja entiteetit: dokumentin fyysinen rakenne

OpusCapitaTYVI asiakasjärjestelmäliittymä 2.2

Julkishallinnon XML-skeemat v0.5 JHS-suositus

Opintosuoritukset. Kaaviokuva

Schema ReitinTilaus.xsd

Java-kielen perusteet

7 DTD ja entiteetit: dokumentin fyysinen rakenne

Omat Lähdöt ohjelmointirajapinta: Versio 1.01

Helsingin yliopisto/tktl XML-metakieli XPath

P e d a c o d e ohjelmointikoulutus verkossa

JHS 162 Paikkatietojen mallintaminen tiedonsiirtoa varten

Schema Asiakasprofiili.xsd

RAKENNEKUVAUSTEN HYÖDYNTÄMINEN KONFIGUROINTITIEDOSTOJEN VALIDOINNISSA. Aki Ollenberg

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002

Paikkatiedot ja Web-standardit

17. Javan omat luokat 17.1

Java-kielen perusteet

CSE-A1200 Tietokannat

Opiskeluoikeudet. Kaaviokuva

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Tietojen toimittaminen Skeemat Käsittelypalautteen kysely Kansallisen tulorekisterin perustamishanke

XML:n käyttötavat työeläkejärjestelmässä. Versio 2

XML ja SAS. Mitä tänä päivänä voidaan SASista tehdä XML-muotoon

Ohjelmointi 1 Taulukot ja merkkijonot

12 Dokumenttiluokan toteuttamisesta

Sosiaalihuollon asiakasasiakirjojen tietomallinnus Tietomallit teknisen asiakirjamäärittelyn näkökulmasta

17. Javan omat luokat 17.1

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

T2V2 Vaaratilanneilmoitussanomakuvaus

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

7/20: Paketti kasassa ensimmäistä kertaa

XML-merkkaus. Merkkidata, prosessointikomennot, kommentit

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Tietueet. Tietueiden määrittely

Kielioppia: toisin kuin Javassa

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

Taulukot. Jukka Harju, Jukka Juslin

15. Ohjelmoinnin tekniikkaa 15.1

FINVOICE- VÄLITYSPALVELU ILMOITTAMISPALVELUN SOVELTAMISOHJE

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Hohde Consulting 2004

18. Abstraktit tietotyypit 18.1

6 DTD ja dokumentin tyyppimääritys

Luento 2: XML:n syntaksi

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML

JHS XXX Julkishallinnon XML-skeemat

JHS 183 Julkisen hallinnon palvelujen tietomalli ja ryhmittely verkkopalveluissa Liite 3 XML-skeeman kuvaus ja esimerkit

JHS 170 Julkishallinnon XML-skeemat

JUHTA Julkisen hallinnon tietohallinnon neuvottelukunta

Yhteentoimivuutta edistävien työkalujen kehittäminen

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

Tietojen jakelu Skeemat Palvelupyyntö Kansallisen tulorekisterin perustamishanke

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Modulaariset tietosisältömäärittelyt Tilannekatsaus

Varmennepalvelu Rajapintakuvaus Kansallisen tulorekisterin perustamishanke

Massahaun tulosten tulkintaa

sana puuttuu, pitäisikö olla yhtenäinen nimeäminen ainakin elementin sisällä. Product: Rakennusvalvonta Reporter: jesse

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

15. Ohjelmoinnin tekniikkaa 15.1

Tietojen toimittaminen Skeemat Viestit Kansallisen tulorekisterin perustamishanke

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

ILMOITTAMISPALVELUN SOVELTAMISOHJE

Helsingin yliopisto/tktl XML-metakieli CSS XML-dokumenttien käsittely. XML-dokumenttien käsittely

Poikkeusinfo XML-rajapinnan kuvaus, rajapinnan versio 2 Seasam Group

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit:

VeRan laboratoriotietojen siirtoformaatti

Koodistopalvelun REST-rajapinnat

SÄHKE-hanke. Tekninen mallintamisen Siirtotiedoston metatietokuvaukset

7. Näytölle tulostaminen 7.1

Transkriptio:

DTD:n puutteita DTD ei ole XML-muotoinen Jäsennys vaatii omat työkalut Eri dokumenttityyppien yhteiskäyttöä ei tueta DTD-määritelmien lainailua ja yhdistelyä ei voi validoida Tietotyyppejä on rajoitetusti: sisältöä ei voi täysin validoida Arvoalueita ei voi määritellä On vain yksi merkkijonotyyppi Sekasisällön voi määritellä vain yhdellä tava Käyttö rajoittuu tekstidokumenttien tekstisisältöön ID-tyyppiset attribuuttien arvot globaaleja koko dokumentissa Attribuuteille, elementeille ja tekstisisällölle ei voi määritellä avainrajoitteita W3C:n tavoite kehittää parempi määrittelykieli ilmaisuvoimaisempi, XML-rakenteinen mahdollista käsitellä xml-työkaluilla itsedokumentoiva enemmän tietotyyppejä, myös omia yksinkertainen Tekniseltä kannalta tuki nimiavaruuksille käyttäjän omat tietotyypit määritysten perintä tuki määritysten evoluutiolle upotettu dokumentaatio 1 2 W3C:n dokumentit (28.10.2004) Part 0: Primer Selkeät kuvaukset, paljon esimerkkejä Ei-normatiivinen määrittely Part 1: Structures Elementtien ja attribuuttien määrittely Sisältömit Skeeman tietomi Skeema-validointi Part 2: Datatypes Tyyppien määrittely (sekä simple että complex) Esimerkkidokumentteja Dokumentista Part 0: Primer po.xml, po.xsd Erilaisia määrittelyjä elementeille ja attribuuteille Globaaleja ja paikisia määritelmiä Yksinkertaisia tyyppejä: ei elementtisisältöä, ei attribuutteja Komplekseja tyyppejä: elementtisisältö ja/tai attribuutteja Jaettuja tyyppejä Pakollisuusrajoitteita 3 4 perustuu tietotyyppimäärityksiin yksinkertaiset (merkkauksia sisältämättömät) rakenteiset Elementtimääritys kytkee elementin tietotyyppiin yksinkertaiseen tai rakenteiseen Attribuuttimääritys kytkee attribuutin yksinkertaiseen tietotyypiin Esimerkki dokumentti: <card> <name>john Doe</name> <title>ceo, Widget Inc.</title> <email>john.doe@widget.com</email> <phone>(202) 555-1414</phone> <logo uri="widget.gif"/> </card> 5 6 Harri Laine 1

käytettävä xml-kieli (nimistö) lyhenne <xsd:schema xmlns:xsd tunnus ="http://www.w3.org/2001/xmlschema"> <xsd:element name="card" type="card_type"/> <xsd:element name="name" type="xsd:string"/> <xsd:element name="title" type="xsd:string"/> <xsd:element name="email" type="xsd:string"/> <xsd:element name="phone" type="xsd:string"/> <xsd:element name="logo" type="logo_type"/> <xsd:attribute name="uri" type="xsd:anyuri"/> <xsd:complextype name="card_type"> <xsd:element ref="name"/> valinnaisia <xsd:element ref="title"/> <xsd:element ref="email"/> <xsd:element ref="phone" minoccurs="0"/> <xsd:element ref="logo" minoccurs="0"/> rakenteinen tyyppi <xsd:complextype name="logo_type"> <xsd:attribute ref= uri" use="required"/> </xsd:schema> 7 8 / yksinkertaiset tyypit primitiivityypit Yksinkertainen tietotyyppi on joukko merkkijonoja, joihin liittyy semanttinen tulkinta Esim. decimal: desimaaliluvuksi tulkittava merkkijono merkkijonojen välille on määritelty järjestys XML schema:ssa on määritelty joukko primitiivityyppejä sekä mekanismit johdettujen tyyppien määrittelyyn rajoitteiden, listakonstruktion ja yhdisteen avulla ennalta määritelty merkitys 9 string any Unicode string boolean true, false, 1, 0 decimal 3.1415 valinnainen aikavyöhyketieto float 6.02214199E23 double 42E970 datetime 2004-09-26T16:29:00-05:00 time 16:29:00-05:00 date 2004-09-26 hexbinary 48656c6c6f0a base64binary SGVsbG8K anyuri http://www.brics.dk/ixwt/ QName rcp:recipe, recipe... 10 johdettuja tyyppejä johdettuja tyyppejä määrittelee valmiiksi myös joitain johdettuja tyyppejä positiveinteger nonpositiveinteger long ID IDREF NMTOKEN Name jne 11 Rajoitteet johdettujen tyyppien määrittelyssä Rajoite esitetään piirremäärityksen (facet) avulla length, minlength, maxlength pattern (säännöllinen lauseke) enumeration (luetteloalkio) whitespace (tyhjän tilan käsittely) maxinclusive, maxexclusive, mininclusive, minexclusive (ala ja ylärajoja) totaldigits, fractiondigits 12 Harri Laine 2

johdettuja tyyppejä johdettuja tyyppejä Ala- ja ylärajat <xsd:simpletype name="score_from_0_to_100"> <xsd:restriction base="xsd:integer"> <xsd:mininclusive value="0"/> <xsd:maxinclusive value="100"/> 13 Säännöllinen lauseke rajoittimena <xsd:simpletype name="percentage"> <xsd:restriction base="xsd:string"> <xsd:pattern value="([0-9] [1-9][0-9] 100)%"/> Luettelo rajoittimena <xsd:simpletype name="kieli"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="en" /> <xsd:enumeration value="fi" /> 14 johdettuja tyyppejä johdettuja tyyppejä Listatyyppi perustyypeistä <xsd:simpletype name="integerlist"> <xsd:list itemtype="xsd:integer"/> Tyhjätilamerkein eroteltu lista perustyypin mukaisia merkkijonoja 15 Yhdistetyyppi <xsd:simpletype name="suomiruotsi_sana"> <xsd:union> <xsd:simpletype> <xsd:restriction base="suomenkielen_sana"/> <xsd:simpletype> <xsd:restriction base="ruotsinkielen_sana"/> </xsd:union> 16 Attribuuttiin voidaan kytkeä vain yksinkertaisia tyyppejä. Elementteihin voidaan kytkeä joko yksinkertaisia tai rakenteisia tyyppejä (complex type) Nimestään huolimatta rakenteisen tyypin määrittely on oikeastaan elementin sisällön ja/tai elementin attribuuttien määrittely määrittelyssä ei viitata alkeellisempiin tietotyyppeihin vaan viittaukset kohdistuvat elementteihin ja attribuutteihin Rakenteisen tyypin määrittely muodostuu elementti- tai attribuuttiviittauksista (tai elementtien ja attribuuttien esittelyistä), jotka kootaan erityisten rakenne-elementtien avulla rakenteiksi elementtiviittaus <xsd:element ref="nimi" /> attribuuttiviittaus <xsd:attribute ref="nimi" /> 17 18 Harri Laine 3

Rakenne esitetään peräkkäisyys-, valinta-, tai kokoelmaelementtien avulla sequence-elementti sulkee sisäänsä peräkkäiset elementit a-elementtiä seuraa b-elementti, esitetään tällöin <xsd:complextype name= ab > choice-elementti sulkee sisäänsä vaihtoehtoiset elementit jokin elementeistä a, b tai c esitetään: <xsd:complextype name= oneof_abc > <xsd:choice> <xsd:element ref= c /> </xsd:choice> 19 20 Toisto esitetään elementtiviittauksen attribuuttien minoccurs ja MaxOccurs avulla. Näiden oletusarvona on 1. Toistomääreet voi liittää myös rakenne-elementteihin a?b*cc?: mahdollisesti a, sitten 0-n b:tä sitten 1-2 c:tä <xsd:complextype name= repeating > <xsd:element ref= a minoccurs= 0 /> <xsd:element ref= b minoccurs= 0 maxoccurs= unbounded /> <xsd:element ref= c maxoccurs= 2 /> Järjestämättömän kokoelman määrittelyyn on tarjolla -elementti a,b ja vähintään yksi c missä tahansa järjestyksessä <xsd:> <xsd:element ref= c maxoccurs= unbounded /> <xsd:> 21 22 Elementtiviittaus identifioi tietyn elementtityypin. Sen asemesta voidaan käyttää any-elementtiä viittaamaan mihin tahansa elementtityyppiin. Tarvittaessa any-elementtiin voidaan liittää namespace - attribuutti, jolla rajoitetaan situt elementit kyseiseen nimistöön (kieleen) kuuluviin, a XHTML:ään <xsd:complextype name="whateverxhtml"> <xsd:any namespace="http://www.w3.org/1999/xhtml" minoccurs=0 maxoccurs="unbounded"> 23 Rakenne-elementtien sisäkkäistä käyttöä on rajoitettu, seuraavat upotukset kiellettyjä: sequence choice choice sequence 24 Harri Laine 4

Rakenteisen tyyppin määrittelyyn voidaan sisällyttää myös attribuuttiviittauksia. Jos tyyppiin sisältyy sekä elementtirakenne että attribuuttiviittauksia on elementtirakenteen oltava määrityksessä aiemmin. Attribuuttiviittaukseen voidaan liittää attribuutti use, arvot: optional (oletusarvona) ja required kuvaamaan pakollisuutta <xsd:complextype name="order_type" mixed="true"> <xsd:choice> <xsd:element ref="address"/> <xsd:element ref="email" merkkitietoa ja elementtejä minoccurs="0" maxoccurs="unbounded"/> <xsd:element ref="phone"/> </xsd:choice> <xsd:attribute ref= id" use="required"/> 25 26 Edellä esitetyillä rakenteilla ei pystytä määrittelemään elementtejä, joiden sisältö on merkkitietoa ja joilla on attribuutteja Tätä varten on oma rakenteensa <xsd:complextype name="styled_text"> <xsd:simplecontent> <xsd:extension base="xsd:string"> <xsd:attribute ref="style" use="required" /> </xsd:extension> </xsd:simplecontent> Myös restriction-rakennetta voi käyttää <xsd:complextype name="labelled_short_styled_text"> <xsd:simplecontent> <xsd:restriction base="styled_text"> <xsd:maxlength value="20"/> <xsd:attribute ref="label" /> </xsd:simplecontent> näillä siis attribuutti style ja label 27 28 Edellisen kaltaista laajennusmekamismia voi käyttää myös rakenteisten tyyppien yhteydessä <xsd:complextype name= ab > käytetään hyväksi aiempaa määritystä <xsd:complextype name= abc > <xsd:complexcontent> <xsd:extension base="ab /> <xsd:element ref= c /> </xsd:complexcontent> 29 :ssa on rakenteen määrittelyyn tarjolla myös DTD:n nimettyjä parametrikohteita vastaava group-rakenne, samoin attributegroup: <group name="heading"> <choice> <element ref="xhtml:h1" /> <element ref="xhtml:h2" /> <element ref="xhtml:h2" /> </choice> </group> <complextype name="block" midex="true"> <choice minoccurs="0" maxoccurs="unbounded"> <element ref="xhtml:p" /> <group ref="xhtml:heading" /> </choice> <complextype> 30 Harri Laine 5

Edellä kaikki elementti- ja tyyppimäärittelyt on esitetty erillisinä nimettyinä elementteinä (ns. global style). Näin ei välttämättä tarvitse tehdä, vaan elementtimäärittelyn voi upottaa rakenteisen tyypin määrittelyyn. Myös attribuuttiesittelyt voidaan upottaa. Upotetuilla määrityksillä ei ole nimeä, joten niitä ei voi uudelleenkäyttää Määrittely nimettyjä elementtejä käyttäen: <xsd:element name="card type="card_type"/> <xsd:element name="name type="xsd:string"/> <xsd:complextype name="card_type"> <xsd:element ref="name"/>... 31 32 Määrittely upottama rakennetieto elementtimäärittelyyn: <xsd:element name="card > <xsd:complextype> <xsd:element name="name type="xsd:string"/>... Kaikki upotettuina: <xsd:complextype name="purchaseordertype"> <xsd:element name="shipto" type="usaddress"/> <xsd:element name="billto" type="usaddress"/> <xsd:element ref="comment" minoccurs="0"/> <xsd:element name="items" type="items"/> <xsd:attribute name="orderdate" type="xsd:date"/> 33 34 <xsd:complextype name="items"> <xsd:element name="item" minoccurs="0 maxoccurs="unbounded"> <xsd:complextype> <xsd:element name="productname" type="xsd:string"/> <xsd:element name="quantity"> <xsd:simpletype> <xsd:restriction base="xsd:positiveinteger"> <xsd:maxexclusive value="100"/> <xsd:element name="usprice" type="xsd:decimal"/> <xsd:element ref="comment" minoccurs="0"/> <xsd:element name="shipdate" type="xsd:date minoccurs="0"/> <xsd:attribute name="partnum" type="sku use="required"/> 35 36 Harri Laine 6

Tyhjät elementit <xsd:element name="product"> <xsd:complextype> <xsd:attribute name="prodid" type="xsd:positiveinteger"/> 37 Harri Laine 7