XML merkintäkielten perusteet. Luento 3 Pekka Aarnio

Samankaltaiset tiedostot
XML merkintäkielten perusteet. Luento 3 Pekka Aarnio

Helsingin yliopisto / TKTL XML-Metakieli XML Schema

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

P e d a c o d e ohjelmointikoulutus verkossa

Julkishallinnon XML-skeemat v0.5 JHS-suositus

CSE-A1200 Tietokannat

Luento 2: XML:n syntaksi

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

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

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

Schema ReitinTilaus.xsd

Tietojen toimittaminen Skeemat Käsittelypalautteen kysely Kansallisen tulorekisterin perustamishanke

Schema Asiakasprofiili.xsd

Tietojen toimittaminen Skeemat Vastaanottokuittaus Kansallisen tulorekisterin perustamishanke

Hohde Consulting 2004

Helsingin yliopisto/tktl XML-metakieli XPath

Tietojen jakelu Skeemat Palvelupyyntö Kansallisen tulorekisterin perustamishanke

Tietojen jakelu Skeemat Palvelupyyntö Kansallisen tulorekisterin perustamishanke

XML-metakieli, k

Tietojen toimittaminen Skeemat Käsittelypalautteen kysely Kansallisen tulorekisterin perustamishanke

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

JHS XXX Julkishallinnon XML-skeemat

Opiskeluoikeudet. Kaaviokuva

JHS 170 Julkishallinnon XML-skeemat

4 XML Schema: tyyppihierarkiat ja avaimet

Luento 7: XML-ohjelmointirajapinnat

Tietojen toimittaminen Skeemat Vastaanottokuittaus Kansallisen tulorekisterin perustamishanke

Arvosanatietojen siirto oppilaitoksista opintopolkuun 2017

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

Varmennepalvelu Rajapintakuvaus Kansallisen tulorekisterin perustamishanke

Tietojen jakelu Skeemat Viestit Kansallisen tulorekisterin perustamishanke

Yhteentoimivuutta edistävien työkalujen kehittäminen

Tietojen jakelu Skeemat Viestit Kansallisen tulorekisterin perustamishanke

Hohde Consulting 2004

Tietojen toimittaminen Skeemat Viestit Kansallisen tulorekisterin perustamishanke

6 XML-työkalut 1. 6 XML-työkalut

Apuja ohjelmointiin» Yleisiä virheitä

Tietojen toimittaminen Skeemat Mitätöintitiedot Kansallisen tulorekisterin perustamishanke

Tietojen toimittaminen Skeemat Käsittelypalaute Kansallisen tulorekisterin perustamishanke

Tietojen toimittaminen Skeemat Mitätöintitiedot Kansallisen tulorekisterin perustamishanke

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

Opintosuoritukset. Kaaviokuva

M. Merikanto 2012 XML. Merkkauskieli, osa 2

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

JUHTA Julkisen hallinnon tietohallinnon neuvottelukunta

3 XML Schema: datatyypit

Tietojen toimittaminen Skeemat Käsittelypalaute Kansallisen tulorekisterin perustamishanke

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

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

Tietojen jakelu Skeemat Lokitiedot Kansallisen tulorekisterin perustamishanke

Tietojen toimittaminen Skeemat Viestit Kansallisen tulorekisterin perustamishanke

Koodistopalvelun REST-rajapinnat

Luento 3: Tietorakenteiden esittäminen

JHS XXX Julkishallinnon XML-skeemat

C++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi

Kuva-aineistojen arkisto XUA-allekirjoituksen määritys

Varmennepalvelu Rajapintakuvaus Tulorekisteriyksikkö

Ohjelmointi 1 Taulukot ja merkkijonot

XML / DTD / FOP -opas Internal

XML johdatus: DTD. Jaana Holvikivi

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Kvarkki XUA: sähköisen allekirjoituksen määritys 1 (6) V 1.0. Kvarkki XUA: sähköisen allekirjoituksen määritys

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

XML merkintäkielten perusteet. Luento 2 - XSLT Pekka Aarnio

Digitaalisen median tekniikat xhtml - jatkuu

Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1

Product: Maa-ainesluvat Reporter: jesse

Luento 5. Timo Savola. 28. huhtikuuta 2006

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site

XML-merkkaus. Merkkidata, prosessointikomennot, kommentit

Vaasan yliopiston toimintaa tukevat informaatiopalvelut ovat käytettävissä WWW:n kautta.

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Omat Lähdöt ohjelmointirajapinta: Versio 1.01

XML rakenteen suunnittelu. Jaana Holvikivi

Poikkeusinfo XML-rajapinnan kuvaus, rajapinnan versio 2 Seasam Group

Digitaalisen median tekniikat xhtml - jatkuu

Tietueet. Tietueiden määrittely

Flash ActionScript osa 4

2 XML Schema: johdanto ja rakenteiden perusteet

LASKUTUSAINEISTON MUUTTAMINEN XML-MUOTOON

3 Verkkosaavutettavuuden tekniset perusteet

Vaatimusten versiointi DOORSissa

Tietojen toimittaminen Skeemat Työnantajan erillisilmoitukset Kansallisen tulorekisterin perustamishanke

Ohjelmoinnin peruskurssien laaja oppimäärä

FINVOICE- VÄLITYSPALVELU ILMOITTAMISPALVELUN SOVELTAMISOHJE

2 XML Schema: johdanto ja rakenteiden perusteet

Ctl160 Tekstikorpusten tietojenkäsittely p.1/15

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

Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta.

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

Muutokset suoran sanoma-asioinnin webservicepalvelun

Extensible Stylesheet Language (XSL)

XML and XML Schema 29

HL7 Finland koulutus. FHIR profilointi osa , Helsinki. Tietohiisi, Mika Tuomainen

RAKENNEKUVAUSTEN HYÖDYNTÄMINEN KONFIGUROINTITIEDOSTOJEN VALIDOINNISSA. Aki Ollenberg

Luento 4: XPath ja XLink

Tietojen toimittaminen Skeemat Aineistotilaukset Kansallisen tulorekisterin perustamishanke

Tietojen toimittaminen Skeemat Työnantajan erillisilmoitukset Kansallisen tulorekisterin perustamishanke

T2V2 Vaaratilanneilmoitussanomakuvaus

Transkriptio:

XML merkintäkielten perusteet Luento 3 Pekka Aarnio 1

Luennon sisältö OSA 1: XML-Schema OSA 2: XML-Schema ja nimiavaruudet 2

Osa 1: sisältö Osa 1 1. Mikä on XML-Schema-kieli 2. Tietotyypit ja elementtien tyyppihierarkia 3. Elementtien määrittely 4. Simple type elementit 5. Complex type elementit 6. Attribuuttien määrittely 3

Luento 3: OSA1 XML-SCHEMA 4

1. Esimerkki Miltä yksinkertainen XML Schema dokumentti näyttää? XML dokumentti 09-08.xml & XML Schema dokumentti 09-06.xsd XML dokumentti 09-08.xml XML Schema dokumentti 09-06.xsd 5

XML Schema XML Schema on kieli, jolla määritellään muita XML-pohjaisia kieliä XML Schema -määrittelyillä luodaan kielen rakenteet määritellään käytettävissä olevat elementit ja attribuutit asetetaan rajoituksia elementtien sisäkkäisyydelle ja peräkkäisyydelle määritetään attribuuttien arvoilla tyypit ja mahdolliset raja-arvot lisätään attribuuteille oletusarvot tai todetaan tietyt attribuutit pakollisiksi Kielen rakenteen pohjalta syntyy dokumentin sisältö ja semantiikka XML-dokumenttien kielenmukaisuus voidaan validoida kielen schemaa vasten määritelty rakenne mahdollistaa dokumenttien tarkistuksen ja helpottaa dokumenttien koneellista käsittelyä Katso myös: http://www.w3.org/xml/schema#dev Online validation tool: http://www.xpathtester.com/validate 6

XML-dokumentin validointi XML Schema XML DOC XMLprosessori Validointi XML DOC Validoinnissa verrataan XML-dokumenttia sen XML Schemaan dokumentin jokainen elementti, attribuutti ja tekstikenttä tarkastetaan mikäli Schema ei salli jotain komponenttia tai jokin vaadittu komponentti puuttuu, dokumentti ei ole Scheman mukainen ja validointi epäonnistuu Validoinnilla sovellus voi varmistaa, että sisään luettu dokumentti on ainakin syntaktisesti oikein validointi ei löydä semanttisia tai loogisia virheitä HUOM: Validi dokumentti ei tarkoita samaa kuin oikeamuotoisuus (well formed). Kaikkien XML-dokumenttien tulee olla oikeamuotoisia. Kun taas validi XML-dokumentti on jonkin Scheman määrittelemän kieliopin mukainen. 7

Tietointegraatio Standardoitu tiedonsiirto XSLTdoc. STD Schema Sovellus 1 XMLdoc1. XSLTprosessori STD XML STD XML XMLprosessori Validointi Sovellus 2 STD Schema XSLTdoc. STD XML XMLprosessori Validointi XMLprosessori XSLTprosessori XMLdoc3. Sovellus 3 8

XML Scheman ominaisuudet Käyttää XML:n syntaksia toisin kuin DTD (Document Type Definition)* Tukee nimiavaruuksia Mahdollistaa tietotyyppien käytön valmiiksi määritellyt käyttäjän itse määrittelemät Mahdollistaa monimutkaisten ja uudelleenkäytettävien mallien rakentamisen Käyttää perintää Ei tue entiteettien määrittelyä Tähän tarkoitukseen on käytettävä edelleen DTD:ta *HUOM: DTD:tä ei käsitellä tällä kurssilla. [Goldberg, Ch.6] 9

(AUX: Entiteettien määrittely DTD:n avulla) http://www.w3schools.com/xml/xml_dtd.asp 10

XML-dokumentti <-> XML-schema XML-dokumentissa viitataan XML-Schemaan kahdella eri tavalla riippuen XML-Scheman määrittelyistä: 1. tapa: jos XML-Schema määrittelee vain validin dokumentin rakennekieliopin: xsi:nonamespaceschemalocation 2. tapa*: jos XML-Schema määrittelee validin dokumentin rakenteen lisäksi myös kohdenimiavaruuden (targetnamespace), johon elementtien ja attribuuttien nimet määritellään kuuluviksi: xsi:schemalocation *Tapa2: Nimiavaruuden määrittelevään XML-Schemaan viittaaminen esitellään tarkemmin luennon osassa B 11

XML-dokumentti <-> XML-schema tapa1 XML-dokumentissa viitataan validin dokumentin kieliopin määrittelevään XML-Schemaan Viittaus esitetään dokumentin juurielementin attribuutilla: xsi:nonamespaceschemalocation* attribuutti kuuluu XMLSchemainstance nimiavaruuteen, joten ko. nimiavaruus täytyy myös määritellä juurielementissä XML-Schema-dokumentin juurielementti on xs:schema, joka kuuluu XMLSchemanimiavaruuteen Dokument file: 09-06.xml Schema file: 09-06.xsd *Huom: Nimiavaruuden määrittelevään XML-Schemaan viitataan toisella tavalla. Ks tarkemmin luennon osa B) 12

XML-Schema ELEMENTTIEN MÄÄRITTELY 13

Tietotyypit XML Schema määrittää kaksi tietotyyppikategoriaa yksinkertainen (simpletype) attribuuttien arvot tekstikentät elementeissä valmiiksi määritellyt (built-in) tyypit käyttäjän omat johdetut tyypit (derived custom simple types) monitahoinen (complextype) lapsielementtejä ja/tai attribuutteja sisältävät elementit ei ole valmiiksi määriteltyjä tyyppejä kaikki monitahoiset tyypit täytyy johtaa XML-dokumentin elementit voivat olla joko yksinkertaisia tai monitahoisia 14

Elementtien tyyppihierarkia Yksinkertaista tyyppiä oleva elementti voi sisältää Vain tekstiä Mutta ei attribuutteja simpletype anytype complextype no attributes : only text : Built-in types Derived types Monitahoista tyyppiä oleva elementti voi sisältää Attribuutteja ja tekstiä Attribuutteja ja lapsielementtejä Attribuutteja Attribuutteja ja lapsielementtejä ja tekstiä Ei mitään simplecontent text only : attributes & text complexcontent element only : attributes & child elements empty element : attributes mixed content : attributes & child elements & text 15

Elementtien määrittely Elementit määritellään scheman <xs:element>-elementillä: <xs:element name="document"/> määriteltiin XML-dokumentin elementti: <document> attribuuteilla voidaan lisätä määreitä elementtiin, esimerkiksi säätää elementin sisältö pelkäksi tekstiksi <xs:element name="document" type="string"/> 16

Paikallinen ja globaali tyyppi Elementin sisältö voidaan määrittää joko paikallisesti (local type) tai käyttäen globaaleja tyyppejä (global type) paikallisessa määrittelyssä <xs:element> sisältää joko <xs:complextype> tai <xs:simpletype> elementin globaalissa määrittelyssä viitataan valmiiksi määriteltyyn tyyppiin voi olla joko Scheman tyyppi tai itse määritelty itse määritellyt globaalit tyypit mahdollistavat dokumentin sirpaleiden (fragment) määrittelyn ja niiden käytön useassa eri kohdassa dokumenttia globaali tyyppi määritellään tyypinmäärittelyelementillä <xs:complextype>, joka on <xs:schema> elementin lapsi ja siten viitattavissa koko schema-dokumentissa Määritelty tyyppi nimetään name-attribuutilla, jotta siihen voidaan viitata 17

Globaalin tyypin määrittäminen Globaali tyyppi määritetään käyttäen elementtiä <complextype> schema-dokumentin juuritasolla (schemaelementin lapsielementtinä) <schema> <complextype name="chaptertype"> <sequence> <element name="para" type="string"/> </sequence> </complextype> </schema> Globaali tyyppi 18

Globaalit elementit Tyyppien määritysten* sijasta on mahdollista käyttää uudestaan jo määriteltyjä globaaleja elementtejä** elementti määritellään normaalisti scheman juuritasolla ko. elementtiin viitataan ref-attribuutilla määrittelyn sisältä: <schema> <element name= story" type="string"/> Globaali elementti <complextype name= historytype"> <sequence> <element ref= story"/> ** </sequence> </complextype> * <element name= history" type= won:historytype"/> 19

SIMPLE TYPE ELEMENTTI 20

Elementtien tyyppihierarkia anytype simpletype complextype no attributes : only text: Built-in types Derived types simplecontent complexcontent text only : attributes & text element only : attributes & child elements mixed content : attributes & child elements & text empty element : attributes 21

Elementti - Simple type Yksinkertaista tyyppiä (Simple type) oleva elementti voi sisältää Vain tekstiä (numeroita, kirjaimia, erikoismerkkejä, unicode-merkkejä) Mutta ei attribuutteja Tekstisisällön tyyppi voi olla esimerkiksi String Integer Boolean Date Tai mitä tahansa muuta XML-Scheman built-in tyyppiä (ks seur. Kalvo) Tai built-in tyypeistä johdettuja tyyppejä Tai yksinkertaisia tietorakenteita kuten Range Enumeration List Regex pattern HUOM: Tyhjä elementti täytyy kuitenkin määritellä monitahoisena 22

Valmiit built-in tietotyypit 23

Built-in tietotyypit Xs:string Xs:integer Xs:date (YYYY-MM-DD) Xs.time (hh:mm:ss) Xs:dateTime (YYYY-MM-DDT hh:mm:ss) Duration (PnYnMnDTnHnMnS) P=Period T=Time -05:00= - 5 hour offset from UTC 24

Built-in tietotyypit Tekstikentän arvon etukäteismäärittely Oletusarvo (default) (the value of an element if it s empty or omitted) Kiinteä arvo (fixed) (the value of an element must be this value or the element omitted) 25

Johdetut tietotyypit Johdetut tietotyypit <xs:restriction base= xs:string > 26

Johdetut tietotyypit Arvoalueen määrittely (range) Lokaali määrittely: Globaali määrittely: 27

Yksinkertaiset tietorakenteet Enumeration 28

Yksinkertaiset tietorakenteet List Z=UTC 29

Yksinkertaiset tietorakenteet Regex pattern: Regular expressions = säännölliset lausekkeet http://www.freeformatter.com/regex-tester.html 30

Yksinkertaiset tietorakenteet Regex ja union esimerkki: Regular expressions= säännölliset lausekkeet <xs:pattern> elementillä voidaan määritellä minkä muotoinen merkkijonon on oltava Sallittu muoto määritellään säännöllisellä lausekkeella Ks. Tarkemmin: Goldberg p. 132 http://www.w3schools.com/jsref/jsref_obj_regexp.asp [http://fi.wikipedia.org/wiki/s%c3%a4%c3%a4nn%c3 %B6llinen_lauseke] 31

RegExp säännölliset lausekkeet A regular expression is an object that describes a pattern of characters. Regular expressions are used to perform pattern-matching and "search-and-replace" functions on text. [http://www.w3schools.com/jsref/jsref_obj_regexp.asp]32 http://www.freeformatter.com/regex-tester.html

COMPLEX TYPE ELEMENTTI 33

Elementtien tyyppihierarkia anytype simpletype complextype no attributes : only text: Built-in types Derived types simplecontent complexcontent text only : attributes & text element only : attributes & child elements mixed content : attributes & child elements & text empty element : attributes 34

Monitahoinen elementti Monitahoinen (complex type) lapsielementtejä ja/tai attribuutteja sisältävät elementit Ei ole valmiiksi määriteltyjä tyyppejä Kaikki monitahoiset tyypit täytyy johtaa Monitahoiset elementit jaetaan edelleen kahteen alaryhmään Yksinkertainen tietosisältö (simple content) Täytyy eksplisiittisesti määritellä Monitahoinen tietosisältö (complex content) HUOM: Oletussisältötyyppi, joten tätä alaryhmää ei tarvitse aina määritellä HUOM: Oletus on monitahoinen sisältö tyyppi (complex type::complex content), joka johdetaan anytype:stä [Goldberg p. 139] 35

Simple content text only Yksinkertainen tietosisältö (simple content) Attribuutteja & tekstiä Täytyy eksplisiittisesti määritellä elementillä: <xs:simplecontent> HUOM: Oletus on monitahoinen sisältö tyyppi (complex type::complex content), joka johdetaan anytype:stä [Goldberg p. 139] 36

Complex content Oletustyyppi: xs:anytype tyypistä rajoittamalla johdettu xs:complexcontent tietotyyppi Koska se on oletusarvo se usein jätetään merkitsemättä (mikä on hämäävää) Johdettujen tyyppien tapauksessa xs:complexcontent-elementti täytyy kuitenkin esittää (ks. Kalvo 45) Johdettu xs:simplecontent tietotyyppi täytyy siis aina eksplisiittisesti määritellä 37

Esimerkki: Simple & complex content Huom: oletusmäärittely on jätetty pois: <xs:complexcontent> <xs:restriction base="xs:anytype > 38

Complex type::complex content elementit SISÄLTÖMALLIT 39

Model group Content models - sisältömallit Elementtejä sisältävän monitahoisen tyypin määrittely Sisältömalli (content model): Määriteltävän tyypin lapsielementit Rakenteen ja lapsielementtien järjestyksen määrittelevä malliryhmä (model group) 1. Elementtien järjestetty sekvenssi (sequence) 2. Elementtien järjestämätön lista (all) 3. Elementtien vaihtoehtoiset valinnat (choise) Huom: oletussisältömäärittely on jätetty pois: <xs:complexcontent> <xs:restriction base="xs:anytype > 40

Sisältömalli - sekvenssi Sequence-elementti määrittelee tyypin lapsielementtien järjestetyn listan Sekvenssin esiintymiskerrat määritellään attribuuteilla minoccurs ja maxoccurs Tietotyypin sekvenssi-malliryhmään kuuluvat lapsielementit määritellään xs:element-elementillä name-attribuutin arvo määrää lapsielementin nimen lapsielementin mahdollinen lukumäärä määritellään minoccurs ja maxoccurs attribuuteilla (molempien oletusarvo on yksi 1) Sekvenssissä määriteltyjen lapsielementtien tulee esiintyä validissa XML-instanssidokumentissa sekvenssi-määrittelyn mukaisessa järjestyksessä Sequence-malliryhmä voi sisältää toisia sequence- ja/tai choisemalliryhmiä 41

Sisältömalli järjestämätön lista All-elementti määrittelee tyypin lapsielementtien järjestämättömän listan All-malliryhmän esiintymiskerrat määritellään attribuuteilla minoccurs ja maxoccurs, mutta niiden arvot voivat olla vain nolla (0) tai yksi (1) Tietotyypin all-malliryhmään kuuluvat lapsielementit määritellään xs:element-elementillä name-attribuutin arvo määrää lapsielementin nimen Lapsielementin mahdollinen lukumäärä määritellään minoccurs ja maxoccurs attribuuteilla, jotka voivat saada vain arvot nolla (0) tai yksi (1) All-malliryhmässä määritellyt lapsielementit voivat esiintyä validissa XML-instanssidokumentissa missä tahansa järjestyksessä Jos tietotyyppi määrittelee All-malliryhmän, muita malliryhmiä ei voida määritellä 42

Sisältömalli - vaihtoehdot Choise-elementti määrittelee tyypin lapsielementtien mahdolliset vaihtoehtoiset lapsielementtivalinnat Choice-malliryhmän esiintymiskerrat määritellään attribuuteilla minoccurs ja maxoccurs Tietotyypin Choice-malliryhmään kuuluvat lapsielementit määritellään xs:element-elementillä name-attribuutin arvo määrää lapsielementin nimen lapsielementin mahdollinen lukumäärä määritellään minoccurs ja maxoccurs attribuuteilla (molempien oletusarvo on yksi 1) Vain yksi Choice-malliryhmän lapsielementeistä saa esiintyä validissa XML-instanssidokumentissa (lukumäärän tulee olla kardinaliteettimäärittelyjen mukainen) Choise-malliryhmä voi sisältää sequence- ja/tai choise-malliryhmiä 43

Malliryhmien sisäkkäisyys Malliryhmät sequence ja choise saavat sisältää toisiaan Mutta all-malliryhmä ei saa sisältää muita malliryhmiä ja sen tulee olla ainoa tyyppimäärittelyn malliryhmä Sequence sequence choise All Choise sequence choise 44

Esimerkki - malliryhmät Sequence model group Nested Sequence and Choise model groups 45

Esimerkki - malliryhmät All model group 46

mixed content & empty element Ks. Goldberg sivu 148 & 147 Ks. http://www.w3.org/xml/schema#dev Online validation tool: http://www.xpathtester.com/validate 47

Johdetut monitahoiset tyypit Jo määritellyistä monitahoisista tyypeistä voidaan edelleen johtaa uusia monitahoisia tyyppejä Johdetulla tyypillä on aluksi perustyypin (base type) kaikki ominaisuudet; johtamisessa ominaisuuksien joukkoa joko laajennetaan (extension) tai rajoitetaan (restriction) Määrittelyn rakenne: <xs:complextype name= uusi nimi > <xs:complexcontent> <xs:extension base= perustyyppi > tai <xs:restriction base= perustyyppi > extension Base type: historytype Derived type: newhistorytype lisätään uusi elementti Derived type: newhistorytype restriction HUOM: Määrittelyssä on nyt käytettävä <xs:complexcontent> elementtiä kiinnitetään elementin arvo 48

ATTRIBUUTTIEN MÄÄRITTELY 49

Attribuuttien määrittely Attribuuttien määrittely Kaikki elementit, joilla on attribuutteja kuluvat, johonkin neljästä monitahoisen tyypin (complex type) ryhmästä Attribuutit itsessään ovat aina yksitahoista tyyppiä (simple type) Attribuutit määritellään elementillä <xs:attribute> Sen name-attribuutin arvo määrää attribuutin nimen attribuutin tyyppi määritellään joko type-attribuutin arvolla tai rajoittamalla (restriction) tai laajentamalla (extension) jotain basetyyppiä 50

Attribuutit restriction 51

OSA 2 XML SCHEMA JA NIMIAVARUUDET 52

Osa 2: sisältö Osa 2 1. XML Schema ja nimiavaruudet 53

(Uusinta: XML-dokumentti <-> XML-schema) XML-dokumentissa viitataan XML-Schemaan kahdella eri tavalla riippuen XML-Scheman määrittelyistä: 1. tapa: jos XML-Schema määrittelee vain validin dokumentin rakennekieliopin: xsi:nonamespaceschemalocation 2. tapa*: jos XML-Schema määrittelee validin dokumentin rakenteen lisäksi myös kohdenimiavaruuden (targetnamespace), johon elementtien ja attribuuttien nimet määritellään kuuluviksi: xsi:schemalocation *Tapa2: Nimiavaruuden määrittelevään XML-Schemaan viitaaminen esitellään tarkemmin luennon osassa B 54

Nimiavaruuden määrittelevä XML-schema XML Schema määrittelee mitä elementtejä ja attribuutteja validi XML-dokumentti voi sisältää XML Schema voi myös määritellä mitä elementtejä ja attribuutteja kuuluu tiettyyn XML-nimiavaruuteen (populating the namespace) Kohdenimiavaruuden nimi määritellään xs:schema-juurielementin attribuutilla: targetnamespace Sama nimiavaruus täytyy myös määritellä schema-dokumentin oletusnimiavaruudeksi (ei prefixiä), jotta schema:ssa määriteltyihin elementteihin ja attribuuteihin voidaan viitata oikein XML-Schema-dokumentin XMLSchemanimiavaruuteen kuuluvien elementtien prefix:ksi asetetaan yleensä xs: Schema file: 13-03.xsd = xs: Huom: XML-Schema-dokumentin XMLSchemanimiavaruus täytyy myös määritellä ja siihen kuuluvien elementtien prefix:ksi asetetaan yleensä xs: 55

Nimiavaruuden määrittelevä XML-schema tapa2 XML-dokumentissa viitataan validin dokumentin kieliopin ja nimiavaruuden määrittelevään XML-Schemaan (tapa2) Viittaus esitetään dokumentin juurielementin attribuutilla: xsi:schemalocation Attribuutin arvoksi lainausmerkkien väliin tulee: kohdenimiavaruuden URI välilyönti schema-dokumentin URL, joka on polku ko. dokumenttiin attribuutti kuuluu XMLSchemainstance nimiavaruuteen, joten ko. nimiavaruus täytyy myös määritellä juurielementissä Dokument file: 13-04.xml Schema file: 13-03.xsd (Huom: Nimiavaruudettomaan XML- Schemaan viitataan toisella tavalla. Ks tarkemmin luennon osa 1) 56

kvalifiointivaatimus Kvalifioidut (qualified) elementit ja attribuutit ovat nimiavaruudella identifioituja Oletusarvoisesti ainoastaan globaalit elementit* liitetään kohdenimiavaruuteen (target namespace), kun se määritellään XML Scheman avulla Lokaalit komponentit voidaan liittää kohdenimiavaruuteen xs:schema-elementin attribuuteilla: elementformdefault= qualified attributeformdefault= unqualified (yleensä ainoastaan elementit kvalifioidaan) Kaikki kohdenimiavaruuden komponentit täytyy kvalifioida myös XML-dokumentissa, jotta se olisi validi * Globaali elementti ks. Osa: elementtien määrittely, kalvo 18. [Goldberg s. 174] 57

XML <-----------> XSD 3. 1. 2. <wonder> Miksi ei prefixiä? Goldberg p. 172-173 <wonder> Koska määritelty lokaalisti 58

Lähdeviitteet Kurssikirja: Goldberg, K.,H.2009. XML-Visual QuickStart Guide. 2.e. Peachpit Press XML. : Introduction, Ch1, Ch2, Ch3, Ch4, Ch9, Ch10, Ch11, Ch12, Ch13, Ch14, Ch15. http://www.kehogo.com/examples (E-book: Beginning XML, (4th ed.) by David Hunter et al., Wrox Press (Ch 1-3, 5,7,8 )) Muita lähteitä: Tutorials: http://www.w3schools.com/ W3C:n Määrittelyt: http://www.w3.org/xml/core/ http://www.w3.org/style/xsl/; http://www.w3.org/xml/schema#dev Tools Online tool: xpath, xslt, schema validate: http://www.xpathtester.com Online tool: Regular Expression Tester: http://www.freeformatter.com/regex-tester.html Command line tool: Xmlstarlet command line XML toolkit: Download for windows: http://xmlstar.sourceforge.net/download.php XML editors EditX Lite free version: http://www.freexmleditorsite.com/download.html MindFusion XML Viewer on Ilmainen editori. Sopii ainakin XSLT-muunnoksien harjoitteluun. 59