XML Schema. David Massey MBIB

Like dokumenter
XML Kurs for earkivar

NOIS-PIAH XML-import Filformat

XML. Databaser Leksjon 14c: XML - 1

XSLT 1. David Massey MBIB

Teknisk håndbok SPESIFIKASJON. Påmelding i XML-FORMAT. versjon Status: Gjeldene. Påmelding XML format versjon 2.9

Teknisk håndbok efaktura Spesifikasjon Påmelding i XML-format Innhold

Semistrukturerte data og XML

1. XML Grunnlag

Læringsmål XML. Markering av tekst. SGML-familien. Forstå prinsippene bak XML og XHTML. Forstå hva XML kan brukes til og hvordan.

Forslag til nasjonal standard for sending av vedlegg til nasjonale XML-meldinger

XML - kurs. XML-kurs for nybegynnere. ICONS Management Elisabeth Buntz

Spørretjenesten pasientens frikortstatus

Vedlegg til meldinger

Markeringsspråk og XML

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Markeringsspråk og XML Nettsider og XHTML

Rapport fra arbeidet med eksport av data fra SFX til BIBSYS

Bruk av base64-koding i hodemeldingen

MPEG-7. Problemstilling:

HIS 1023:2010. Pasientliste Informasjonsmodell og XML meldingsbeskrivelse

XSLT 2. David Massey MBIB

Semistrukturerte data og XML

HIS 1036:2011. Elektronisk samhandling Vedlegg til meldinger. endret KITH 21/08:2012

Grensesnittene mellom Legemiddelverket og de andre eresept-aktørene

Standard for kommunikasjon av EPJ-innhold Informasjonsmodell og XML meldingsbeskrivelse

ER-BASERT ABONNEMENT PÅ ENDRINGER FRA GREP

IPLOS Teknisk kravspesifikasjon. Teknisk kravspesifikasjon Versjon Gyldig for innsending av IPLOS januar 2020

ER-BASERT ABONNEMENT PÅ ENDRINGER FRA GREP

Pass og stell av barn

NOIS-PIAH XML-import Filformat for sykehus

Beskrivelse av filformatet for opplysninger om "Kjøp fra primærnæring Pelsdyrskinn" til Skatteetaten

Proof of Concept Web-tjenester (web services) i en tjenesteorientert arkitektur Understøttelse av "Fullverdig elektronisk verdikjede"

Teknisk kravspesifikasjon Versjon 3.0.5

1. Lage og vise et enkelt XML-dokument

og XML Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information?

Ebrev - abonnementtjenester NAV

Innrapportering av trekk til NAV

Transaksjonsstandard for virkesomsetningen i Norge. Business Acknowledge. Versjon 2.0. Desember 2007 SKOG-DATA AS

Veiledning for utvikling. Bruk av BKWSDL

HØGSKOLEN I SØR-TRØNDELAG

HVA ER XML? extensible Markup Language En standardisert måte å strukturere ulike typer data Åpent format Enkelt:

1. XHTML. Innhold Innledning

Skatteetaten Boligsameie Beskrivelse av filformatet for innsending av opplysninger til Skatteetaten Gjelder fra og med innrapportering i januar 2016

Brukerdokumentasjon. Webservices og webklient for kodeverk/ kodeverdi verifisering

Godtgjørelse til opphavsmann til åndsverk

BEHANDLERKRAV. Informasjonsmodell og XML meldingsbeskrivelse. Versjon KITH Rapport R18/06 Status: Til utprøving ISBN

Vurdering av arbeidsmulighet / sykmelding

K I T H. eresept M Referansenummer. Informasjonsmodell og XML meldingsbeskrivelse. VERSJON 2.4 Status: Til utprøving KITH-rapport 19/08

Markeringsspråk og XML

Skatteetaten Drosjesentraler Beskrivelse av filformatet for innsending av opplysninger til Skatteetaten Gjelder fra inntektsåret 2013 Versjon 1.0.

K I T H. Vurdering av arbeidsmulighet / sykmelding. Informasjonsmodell og XML meldingsbeskrivelse

Markeringsspråk og XML

Beskrivelse av filformatet for likningsoppgaven boligsameie

Beskrivelse av filformatet for likningsoppgaven pass og stell av barn

SAS FANS NYTT & NYTTIG FRA VERKTØYKASSA TIL SAS 4. MARS 2014, MIKKEL SØRHEIM

Implementasjonsguide for elektronisk sykmeldingsattest

1. Mer om oppbyning av XML-dokument

Beskrivelse av filformatet for likningsoppgaven tilskudd til vitenskapelig forskning eller yrkesopplæring

INF1040 Oppgavesett 5: XML

Android-Programmering. Vår 2017

Beskrivelse av filformatet for opplysninger fra drosjesentraler til Skatteetaten

LEGEOPPGJØRSMELDING. Informasjonsmodell og implementasjonsbeskrivelse. Versjon Status: Til utprøving

Kalkulator-leksjonen (nesten ferdig)

Interface to building application

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

K I T H. M25 Varer i bruk. Informasjonsmodell og XML meldingsbeskrivelse. VERSJON 2.4 Status: Til utprøving KITH-rapport 16/08

Angivelse av EHF profiler og dokumenttyper

Individuelle pensjonsordninger

Underholdsbidrag. Beskrivelse av filformatet for innsending av opplysninger til Skatteetaten

Kjøp fra primærnæring Tømmer. Beskrivelse av filformatet for innsending av opplysninger til Skatteetaten

Tilskudd til vitenskapelig forskning eller yrkesopplæring

case forts. Alternativ 1 Alternativer Sammensetning Objekt-interaktor med valg

Kjøp fra primærnæring - Egg

Transaksjonsstandard for virkesomsetningen i Norge. Transportoppdrag. Versjon 2.0. Desember 2007 SKOG-DATA AS

Beskrivelse av filformatet for opplysninger om "Kjøp fra primærnæring Melk" til Skatteetaten

Kjøp fra primærnæring Pelsdyrskinn

Når en bruker skriver sitt navn ("Ole") i et form-element med name="fornavn" som attributt. klikker på submit-knappen

XML. Figur Et eksempel på et XML-dokument

XML structures (v2.0): Byggsøk Sentral godkjenning

Navngivning av XML elementer

SOSI Produktspesfikasjon Produktnavn: KYV_Ankringsområder v Produktspesifikasjon: KYV_Ankringsområder

Etternavn Fornavn Født Død Annet Felt

NKKN typeforslag versjon Definisjon av grunntypene

Dokumentasjon av XML strukturer for ByggSøk

Innskudd, utlån og renter

Bruk av komponenter i ADDML

Betalinger til selvstendige næringsdrivende

XML structures (v2.0): Byggsøk and Sentral godkjenning

1. Innføring i bruk av MySQL Query Browser

Navngiving- og Design Regler. for. Felles XML-Skjema i Bærum Kommune

Veileder for Geography Markup Language (GML) <UTKAST>

Datamodellering 101 En tenkt høgskoledatabase

Hvorfor ikke bruke Word?

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

Vedlegg 5 Bilag Vedlegg 2. Bruk av EKWebService. Notat

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive,

Skattepliktig kundeutbytte

Forespørsel om fastlege Informasjonsmodell og XML meldingsbeskrivelse HIS 1022:2010

NOIS-PIAH XML-import Filformat for sykehus

SOSI Produktspesfikasjon Produktnavn: KYV_ISPS_Havneanlegg v Produktspesifikasjon: KYV_ISPS_Havneanlegg

Transkript:

XML Schema David Massey MBIB4140 29-8-2017

Structured information toolkit "XML's new playmates include stylesheets for display and transformation, strong methods for linking resources, tools for data manipulation and querying, error checking and structure enforcement tools, and a plethora of development environments. As a result of these applications, XML is assured a long and fruitful career as the structured information toolkit of choice." Ray, Learning XML, 2003, s. xi

Velformet? Gyldig? XML XML DTD / XSD Program som kan sjekke om et XML dokument er velformet Program som kan sjekke om et XML dokument er gyldig Ja Nei Ja Nei

DTD eller XSD DTD = Document Type Definition Henger igjen fra SGML Spesielt for enkelt innhold Fortsatt i bruk pga eldre løsninger i systemer XSD = XML Schema Definition Basert på XML Kraftigere Støtter navnerom og datatyper

Gyldig (valid) XML Schemas express shared vocabularies and allow machines to carry out rules made by people. They provide a means for defining the structure, content and semantics of XML documents. https://www.w3.org/xml/schema

XML skjema definerer Elementer og attributter i et XML dokument Rekkefølgen av elementer Hvilke elementer er underordnede elementer Antall underordnede elementer Om elementer kan være tom, eller må inneholde data Datatyper for elementer og attributter Standard og faste verdier for elementer og attributter

Prøv selv Åpner XML Copy Editor Lag et velformet XML-dokument med opplysningene fra tabellen. Bruk et attributt til kundenr. kundenr 123 124 fornavn Ole Kari etternavn Olsen Hansen fødselsdato 17. mai 1970 22. desember 1973 kjønn Mann Kvinne

Prøv selv Opprett et XML-schema i XML Copy Editor File > New > Velg XML Schema (*.xsd) fra listen Lagrer filen uten å endre, som personer.xsd

Prøv selv Opprett en XML dokument med følgende innhold: <?xml version="1.0" encoding="utf-8"?> <root> <element>en meningsløs dokument.</element> <element>men stemmer overens med XSDen!</element> </root> Lagre dokumentet som personer2.xml

Prøv selv Koble XSDen til XMLen på følgende måte: Ha personer2.xml åpent og velg XML > Associate > XML Schema... Finn frem til personer.xsd Resultatet skal ligne dette:

Prøv selv Valider personer2.xml XML > Validate > DTD/XML Schema Eller F5 Eller Resultatet vises under XML-dokumentet:

XML <?xml version="1.0" encoding="utf-8"?> <root> <element>en meningsløs dokument.</element> <element>men stemmer overens med XSDen!</element> </root> XSD <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> <xs:element name="root"> <xs:complextype> <xs:sequence> <xs:element name="element" type="xs:string" minoccurs="0" maxoccurs="unbounded"/> </xs:sequence> </xs:complextype> </xs:element> </xs:schema>

<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> <xs:element name="root"> <xs:complextype> <xs:sequence> <xs:element name="element" type="xs:string" minoccurs="0" maxoccurs="unbounded"/> </xs:sequence> </xs:complextype> </xs:element> </xs:schema> Elementer: complextype simpletype

simpletype Kan ikke inneholde andre elementer, kun data. Kan heller ikke ha attributter. Hva heter elementet? Hvilken datatype innholder elementet? <xs:element name="element" type="xs:string" minoccurs="0" maxoccurs="unbounded"/> Hvor mange ganger kan elementet forekomme (maksimum)? Hvor mange ganger kan elementet forekomme (minimum)?

simpletype <xs:element name="element" type="xs:string" minoccurs="0" maxoccurs="unbounded"/> <?xml version="1.0" encoding="utf-8"?> <root> </root> <?xml version="1.0" encoding="utf-8"?> <root> <element>en</element> <element>meningsløs</element> <element>dokument.</element> <element>men stemmer overens med XSDen!</element> </root>

Datatyper String (Robert De Niro) Integer (1236) Decimal (67.2) Date (ÅÅÅÅ-MM-DD, f.eks.: 1970-05-17) Time (TT:MM:SS, f.eks.: 08:30:00) datetime (ÅÅÅÅ-MM-DDTTT:MM:SS, f.eks.: 1970-05-17T08:30:00) Flere datatyper: https://www.w3schools.com/xml/schema_dtypes_string.asp

Prøv selv Endre personer.xsd til dette: <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> <xs:element name="person"> <xs:complextype> <xs:sequence> <xs:element name="fdato" type="xs:date" minoccurs="0" maxoccurs="1"/> </xs:sequence> </xs:complextype> </xs:element> </xs:schema>

Prøv selv Husk å lagre XSDen Endre personer2.xml slik at det er gyldig i forhold til den oppdaterte XSDen

complextype Elementer som inneholder andre elementer. I dette eksempelet: person <xs:element name="person"> <xs:complextype> <xs:sequence> <xs:element name="fornavn" type="xs:string" /> <xs:element name="etternavn" type="xs:string" /> <xs:element name="kjønn" type="xs:string" /> <xs:element name="fdato" type="xs:date" /> </xs:sequence> </xs:complextype> </xs:element> Hvis minoccurs eller maxoccurs mangler brukes 1 som standardverdier. xs:sequence betyr at underordnede elementer til person (dvs. fornavn, etternavn og fdato) må forekommer i denne rekkeløge hvis de finnes.

Prøv selv Endre personer.xsd til dette: <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> <xs:element name="person"> <xs:complextype> <xs:sequence> <xs:element name="fornavn" type="xs:string" /> <xs:element name="etternavn" type="xs:string" /> <xs:element name="kjønn" type="xs:string" /> <xs:element name="fdato" type="xs:date" /> </xs:sequence> </xs:complextype> </xs:element> </xs:schema>

Prøv selv Husk å lagre XSDen Oppdater personer2.xml slik at den er gyldig i forhold til XSDen Hva skjer hvis du endrer rekkefølgen av elementene? Hva skjer hvis du legger inn 17. mai 1970 som fødselsdato? Hva skjer om du utelater fødselsdato? Hvordan endrer du XSDen slik at fødselsdato er valgfritt?

complextype xs:all kan brukes istedenfor xs:sequence for å ha valgfri rekkefølge av underordnede elementer. <xs:element name="person"> <xs:complextype> <xs:all> <xs:element name="fornavn" type="xs:string" /> <xs:element name="etternavn" type="xs:string" /> <xs:element name="kjønn" type="xs:string" /> <xs:element name="fdato" type="xs:date" /> </xs:all> </xs:complextype> </xs:element>

XSD <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" elementformdefault="qualified"> <xs:element name="personer"> <xs:complextype> <xs:sequence> <xs:element name="person" type="personinfo" minoccurs="1" maxoccurs="unbounded" /> </xs:sequence> </xs:complextype> </xs:element> <xs:complextype name="personinfo"> <xs:sequence> <xs:element name="fornavn" type="xs:string" /> <xs:element name="etternavn" type="xs:string" /> <xs:element name="kjønn" type="xs:string" /> <xs:element name="fdato" type="xs:date" /> </xs:sequence> </xs:complextype> </xs:schema> XML <personer> <person> <fornavn></fornavn> <etternavn></etternavn> <kjønn></kjønn> <fdato></fdato> </person> <person> <fornavn></fornavn>... </person>... </personer>

Prøv selv Oppdater personer.xsd med reglene fra forrige lysark. Oppdater personer2.xml med personopplysninger fra dagens første oppgave (glem kundenr foreløpig). Sjekk at XMLen er gyldig i forhold til XSDen.

Attributter <xs:complextype name="personinfo"> <xs:sequence> <xs:element name="fornavn" type="xs:string" /> <xs:element name="etternavn" type="xs:string" /> <xs:element name="kjønn" type="xs:string" /> <xs:element name="fdato" type="xs:date" /> </xs:sequence> <xs:attribute name="kundenr" type="xs:integer" use="required" /> </xs:complextype> <personer> <person kundenr="123"> <fornavn></fornavn> <etternavn></etternavn> <kjønn></kjønn> <fdato></fdato> </person>... </personer> Kun for complextype. Legges til etter xs:sequence (evt. xs:all). Fjern use="required" for å gjøre attributtet valgfritt.

Prøv selv Oppdater XSDen med reglen for attributtet kundenr Legg til kundenr i XMLen og valider

Tomme elementer som kun ha attributter <xs:element name="timezone"> <xs:complextype> <xs:attribute name="id" type="xs:string" /> <xs:attribute name="utcoffsetminutes" type="xs:integer" /> </xs:complextype> </xs:element> <timezone id="europe/oslo" utcoffsetminutes="120"/>

Restrictions enumeration kan brukes for å spesifisere en liste av lovlige verdier. <xs:element name="kjønn"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:enumeration value="mann" /> <xs:enumeration value="kvinne" /> </xs:restriction> </xs:simpletype> </xs:element> <person> <fornavn>ola</fornavn> <etternavn>olsen</etternavn> <kjønn>m</kjønn> <fdato>1970-05-17</fdato> </person> <person> <fornavn>ola</fornavn> <etternavn>olsen</etternavn> <kjønn>mann</kjønn> <fdato>1970-05-17</fdato> </person>

Restrictions <xs:complextype name="personinfo"> <xs:sequence> <xs:element name="fornavn" type="xs:string" /> <xs:element name="etternavn" type="xs:string" /> <xs:element name="kjønn"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:enumeration value="kvinne" /> <xs:enumeration value="mann" /> </xs:restriction> </xs:simpletype> </xs:element> <xs:element name="fdato" type="xs:date" /> </xs:sequence> <xs:attribute name="kundenr" type="xs:integer" use="required" /> </xs:complextype>

Prøv selv Legg restriction inn i personer.xsd Prøv ulike verdier i kjønn og valider

Restrictions length antall tegn i verdien. <xs:element name="personnummer" minoccurs="1" maxoccurs="1"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:length value="12" /> </xs:restriction> </xs:simpletype> </xs:element> <person> <fornavn>ola</fornavn> <etternavn>olsen</etternavn> <kjønn>mann</kjønn> <personnummer>170570</personnummer> </person> <person> <fornavn>ola</fornavn> <etternavn>olsen</etternavn> <kjønn>mann</kjønn> <personnummer>170570171277</personnummer> </person>

Restrictions pattern lovlig regex <xs:element name="personnummer" minoccurs="1" maxoccurs="1"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="[0-3][0-9][0-1]\d{8}" /> </xs:restriction> </xs:simpletype> </xs:element> <person> <fornavn>ola</fornavn> <etternavn>olsen</etternavn> <kjønn>m</kjønn> <personnummer>70051771277</personnummer> </person>

Restrictions pattern: lovlig regex <xs:element name="kjønn" minoccurs="0" maxoccurs="1"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="mann Kvinne" /> </xs:restriction> </xs:simpletype> </xs:element> Flere regex eksempler: https://www.w3schools.com/xml/schema_facets.asp

Restrictions minlength maxlength mininclusive maxinclusive

Restrictions også for attributtverdier <xs:attribute name="kundenr" use="required"> <xs:simpletype> <xs:restriction base="xs:integer"> <xs:maxinclusive value="9999" /> </xs:restriction> </xs:simpletype> </xs:attribute> <person kundenr="10000"> <fornavn>ola</fornavn> <etternavn>olsen</etternavn> <kjønn>m</kjønn> </person> <person kundenr="12"> <fornavn>ola</fornavn> <etternavn>olsen</etternavn> <kjønn>m</kjønn> </person>

Prøv selv Last ned: http://edu.hioa.no/mbib4140/h17/ressurser/xsd/eksnotat.xsd Ta opp XSDen i XML Copy Editor Lag et XML-dokument som er gyldig i forhold til XSDen Evt. forbedre XSDen Eksempelet er fra W3Schools (https://www.w3schools.com/xml/schema_howto.asp)

Prøv selv Last ned: http://edu.hioa.no/mbib4140/h17/ressurser/xsd/eksbok.xsd Ta opp XSDen i XML Copy Editor Lag et XML-dokument som er gyldig i forhold til XSDen Evt. forbedre XSDen Eksempelet er fra Alexandre Joseph (https://gist.github.com/jexhson/8011541)

Prøv selv Last ned: http://edu.hioa.no/mbib4140/h17/ressurser/xml/yrkikut.xml Ta opp XML-dokumentet i XML Copy Editor Lag en XSD som samsvarer med strukturen i XML-dokumentet og valider dokumentet Flytt på kommentartegnene (dvs <!--) etterhvert som du utvider XSDen

Neste uke XQuery og XPath