html5-img
1 / 27

XMLSchema

XMLSchema. XMLSchema. Innledende eksempler:. 1. <?xml version="1.0" encoding="ISO-8859-1"?> 2. <not at > 3. <t il >Tove</t il > 4. <fr a >Ja n ni</f ra > 5. < tittel > Huskelapp </ tittel > 6. < melding > Ikke glem avtalen til helgen </ melding > 7. </not at>.

don
Download Presentation

XMLSchema

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XMLSchema

  2. XMLSchema • Innledende eksempler: 1.<?xml version="1.0" encoding="ISO-8859-1"?> 2.<notat> 3.<til>Tove</til> 4.<fra>Janni</fra> 5.<tittel>Huskelapp</tittel> 6.<melding>Ikke glem avtalen til helgen</melding> 7.</notat> Vi har sett DTD’en til dette xml dok. Her kommer XMLSchema til samme dokument:

  3. XMLSchema <?xml version="1.0"?> <xs:schemaxmlns:xs=http://www.w3.org/2001/XMLSchema xmlns="http://www.osir.hihm.no/sfi/kurs/3ip80" targetNamespace="http://www.osir.hihm.no/sfi/kurs/3ip80"> <xs:element name="notat"> <xs:complexType> <xs:sequence> <xs:element name="til" type="xs:string"/> <xs:element name=”fra" type="xs:string"/> <xs:element name=”tittel" type="xs:string"/> <xs:element name=”melding" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

  4. XMLSchema • I eksempelet ovenfor kan en se at notater av kompleks type, fordi den inneholder flere elementer. • De andre elementene er av simple typer fordi de ikke inneholder andre elementer. • Referanse til et XMLSchema: <?xml version="1.0" encoding="ISO-8859-1"?> <notat xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="notat.xsd"> <til>Tove</til> <fra>Janni</fra> <tittel>Huskelapp</tittel> <melding>Ikke glem avtalen til helgen</melding> </notat>

  5. XMLSchema • <schema> elementet er rot elementet i et XMLSchema. • En schema deklarasjon ser ofte slik ut: <xs:schemaxmlns:xs=http://www.w3.org/2001/XMLSchema targetNamespace =http://www.osir.hihm.no/sfi/kurs/3ip80 xmlns="http://www.osir.hihm.no/sfi/kurs/3ip80"> • Følgende linje: • xs:schemaxmlns:xs=http://www.w3.org/2001/XMLSchema • Indikerer at elementer og datatyper (schema, element, complexType, sequence, string, boolean, etc.)kommer fra http://www.w3.org/2001/XMLSchema navnerom, og at elementene og datatypene som kommer fra http://www.w3.org/2001/XMLSchema navnerommet skal ha :xs som prefiks. (denne url har til hensikt å beskrive navnerommet.)

  6. XMLSchema • xmlns=http://www.osir.hihm.no/sfi/kurs/3ip80 • Standard navnerom • targetNamespace=http://www.osir.hihm.no/sfi/kurs/3ip80 • Indikerer at et xml dokument hvor elementene er deklarert til å tilhøre navnerommet til schemaet, skal valideres mot XMLScema.

  7. XMLSchema • Referanse til et XMLSchema: <notat xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="notat.xsd"> • Første og andre linje: • xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation="notat.xsd” • For å assosiere Schema med xml dokumentet. • Bruker schemaLocation for å spesifisere schema fila.

  8. XMLSchema • Vi deklarerer elementer og definerer typer • Enkle deklarasjoner lager enkle typer. • Komplekse deklarasjoner lager komplekse typer.

  9. XMLSchema – Enkle deklarasjoner • Dette er en enkel deklarasjon av et enkelt element: • <xs:element name="til" type="xs:string"/> • Enkle elementer inneholder kun ”tekst” • Enkle elementer inneholder ikke andre elementer eller attributter. • En enkel deklarasjon gjelder for enkle elementer. • Deklarasjonen består av element navn og en datatype: • <xs:element name=”etternavn" type="xs:string"/> • <etternavn>Olsen</etternavn> • <xs:element name=”alder" type="xs:integer"/> • <alder>35</alder> • <xs:element name=”fodt" type="xs:date"/> • <fodt>1968</fodt>

  10. XMLSchema - komplekse deklarasjoner • Dette er en kompleks deklarasjon av et komplekst element: • <xs:element name="notat"> <xs:element name="notat"> <xs:complexType> <xs:sequence> <xs:element name="til" type="xs:string"/> <xs:element name=”fra" type="xs:string"/> <xs:element name=”tittel" type="xs:string"/> <xs:element name=”melding" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>

  11. XMLSchema - komplekse deklarasjoner • Komplekse elementer kan inneholde både tekst flere elementer og attributter. • Dette er f.eks et komplekst element: • <produkt pid="1345"/> • Eller dette: <element name=”ansatt”> <complexType > <sequence> <element name=”fornavn” type=”string”> <element name=”etternavn” type=”string”> </sequence> </complexType> </element> <ansatt> <fornavn>John</fornavn > <etternavn>Smith</etternavn> </ansatt>

  12. XMLSchema - attributter • Deklarering av attributter: • <xs:attribute name="xxx" type="yyy"/> • Angir navn på attributtet og datatypen • F.eks: <etternavnspraak=”NO">Olsen</etternavn> • <xs:attribute name=”spraak" type="xs:string"/> • Standard verdier: • <xs:attribute name=”spraak" type="xs:string” default=”NO” /> • Faste verdier: • <xs:attribute name=”spraak" type="xs:string” fixed=”NO” /> • Påkrevet: • <xs:attribute name=”spraak" type="xs:string” use=”required” />

  13. XMLSchema – simpleTypes (enkle typer) • simpleType definisjoner brukes når det skal settes begrensninger på verdier. • Noen eksempler: • Alder kan ikke være under 0 og høyere enn 100. <xs:element name=”alder"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="100"/> </xs:restriction> </xs:simpleType> </xs:element>

  14. XMLSchema – simpleTypes (enkle typer) • Eks: • Begrense tillatte verdier: <xs:element name=”bil"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element>

  15. XMLSchema – simpleTypes (enkle typer) • Eks: • Begrense tillatte verdier ved å definere en serie: <xs:element name="initialer"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z][A-Z][A-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>

  16. XMLSchema – simpleTypes (enkle typer) • Eks: • Begrensning på lengde: <xs:element name="passord"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> </xs:element> Link til liste av restriksjoner

  17. XMLSchema – complexTypes(komplekse typer) • Definisjon av complekse typer gjøres ved bruk av <complexType> elementet. • Vanligvis vil <complexType> inneholde element deklarasjoner, attributt deklarasjoner og element referanser. <xs:element name="notat"> <xs:complexType> <xs:sequence> <xs:element name="til" type="xs:string"/> <xs:element name=”fra" type="xs:string"/> <xs:element name=”tittel" type="xs:string"/> <xs:element name=”melding" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>

  18. XMLSchema – complexTypes(komplekse typer) • Komplekse typer for tomme elementer: • <produktprodid="1345" /> <xs:element name=”produkt"> <xs:complexType> <xs:complexContent> <xs:restriction base="xs:integer"> <xs:attribute name="prodid" type="xs:positiveInteger"/> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element> • complexContent modellen signaliserer at vi ønsker å begrense eller utvide innholdsmodellen av en kompleks type. Her introduseres ingen elementer.

  19. XMLSchema – complexTypes (komplekse typer) • Komplekse typer for simpelt innhold(husk begrep fra xml terminologi: simplelt innhold). • Hvis du skal bruke simpleContent må du definere enten en extention eller en restriction innenfor simpleContent elementet. <shoesize country="france">35</shoesize> <xs:element name="shoesize"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="country" type="xs:string" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>

  20. XMLSchema – complexTypes (komplekse typer) • Komplekse typer med mixed innhold <letter> Dear Mr.<name>John Smith</name> Your order <orderid>1032</orderid> will be shipped on <shipdate>2001-07-13</shipdate> </letter> <xs:element name="letter"> <xs:complexType mixed="true"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="orderid" type="xs:positiveInteger"/> <xs:element name="shipdate" type="xs:date"/> </xs:sequence> </xs:complexType> </xs:element>

  21. XMLSchema – complexTypes (komplekse typer) • For at tekst kan forekomme mellom barn elementene må mixed være satt til true. • Vi kan også gi complexType et navn og la ”letter” elementet få et attributt som ref. til den komplekse typen. Slik kan flere elementer referere til samme complexType. <xs:element name="letter" type="lettertype"/> <xs:complexType name="lettertype" mixed="true"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="orderid" type="xs:positiveInteger"/> <xs:element name="shipdate" type="xs:date"/> </xs:sequence> </xs:complexType>

  22. XMLSchema – complexTypes. Indikatorer • Vi kan kontrollere hvordan elementer brukes i dokumenter, med indikatorer. • Det er sju typer indikatorer: • Som gir orden: • ANY • Choice • Sequence • Som angir ant. Forekomster: • minOccurs • maxOccurs • Som grupperer: • Group name • Attribute name

  23. XMLSchema – complexTypes Indikatorer • All: Barn nodene kan opptre i vilkårlig rekkefølge. Hvert barn element kan kun forekomme 1 gang. • Choice: kun et av elementene innenfor en choice deklarasjon kan forekomme innenfor den ytre elementkontaineren. • Sequence: spesifiserer at elementene må være i en bestemt rekkefølge <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>

  24. XMLSchema – complexTypes Indikatorer • maxOccur: spesifiserer hvor mange ganger et element kan forekomme. • minOccur: spesifiserer minimum antall ganger et element kan forekomme. <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" maxOccurs="10" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element>

  25. XMLSchema og datatyper • XMLSchema har noen innebygde datatyper: • String: bokstav og tegn, linjeskift, mellomrom og tabulator – tegn. • Date: CCYY-MM-DD • Time: hh:mm:ss • dateTime: CCYY-MM-DDThh:mm.ss • Boolean: true/false • Binary: • base64Binary (Base64-encoded binary data) • hexBinary (hexadecimal-encoded binary data)

  26. XMLSchema og datatyper. Eks: • <xs:element name="start" type="xs:date"/> • <start>2002-09-24</start> • <xs:element name="start" type="xs:time"/> • <start>09:30:10.5</start> • <xs:element name="startdato" type="xs:dateTime"/> • <startdato>2002-05-30T09:30:10.5</startdato> • <xs:element name=”kunde" type="xs:string"/> • <customer> John Smith </customer> • <xs:attribute name="disabled" type="xs:boolean"/> • <prize disabled="true">999</prize>

  27. Oppsummering • Alle XML schema består av komponenter, hovedsakelig elementer, attributter og type definisjoner. • Når alt kommer til alt er kanskje ikke XMLSchema så vanskelig. • XMLSchema er overlegen i detalj i forhold til DTD

More Related