Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

XMLSchema. Hvorfor ikke bare bruke DTD? Fordi XMLSchema er enklere Spesifiserer element data typer Forenkler design Bedre støtte for navnerom Tillater.

Liknende presentasjoner


Presentasjon om: "XMLSchema. Hvorfor ikke bare bruke DTD? Fordi XMLSchema er enklere Spesifiserer element data typer Forenkler design Bedre støtte for navnerom Tillater."— Utskrift av presentasjonen:

1 XMLSchema

2 Hvorfor ikke bare bruke DTD? Fordi XMLSchema er enklere Spesifiserer element data typer Forenkler design Bedre støtte for navnerom Tillater gjenbruk av elementer via arv. De er utvidbare. DTD syntaks forholder seg til SGML syntaks XMLSchema er skrevet i XML Uviklernes egne forklaringer…

3 XMLSchema Hva er så et XMLSchema: definerer elementer som kan forekomme i et dokument definerer attributter som kan forekomme i et dokument definerer hvilke elementer som er barn definerer rekkefølgen på elementene som er barn definerer antall barn definerer hvorvidt et element er tomt eller kan inneholde tekst. definerer data typer for elementer og attributter definerer standard og faste verdier for elementer and attributter.

4 XMLSchema Med støtte for datatyper: Er det enklere å beskrive tillatt dokument innhold. Er det enklere å validere riktigheten av data Er det enklere å jobbe med data fra en database. Blir det enklere å definere restriksjoner på data. Blir det enklere å definere data formater. Blir det enklere å konvertere data mellom forskjellige datatyper.

5 XMLSchema XMLSchema er en W3C anbefaling og foreligger nå som en stabil spesifikasjon. XMLSchema var først et Microsoft forslag.

6 XMLSchema Innledende eksempler: Tove 4. Janni 5. Huskelapp 6. Ikke glem avtalen til helgen 7. Vi har sett DTD’en til dette xml dok. Her kommer XMLSchema til samme dokument:

7 XMLSchema

8 XMLSchema I eksempelet ovenfor kan en se at notat inneholder komplekse typer, fordi den inneholder flere elementer. De andre elementene inneholder simple typer fordi de ikke inneholder andre elementer, men kun tekst eller tall Referanse til et XMLSchema: Tove Janni Huskelapp Ikke glem avtalen til helgen

9 XMLSchema navnerom Et schema kan bli sett på som en samling (vokabular) av type definisjoner og element deklarasjoner hvis navn tilhører et bestemt navnerom også kalt ”Target Namespace”. ”Target namespace” vil hjelpe til å skille mellom ulike vokabularer, som for eksempel deklarasjonen av et element innen schema vokabularet eller et matte vokabular (mathML).

10 XMLSchema navnerom For å validere et instans dokument (xml) må vi identifisere hvilke element og attributt deklarasjoner og type definisjoner som skal sjekkes mot hvilke elementer og attributter i instans dokumentet. Target Namespace spiller en viktig rolle også i denne identifiserings prosessen.

11 XMLSchema elementet er rot elementet i et XMLSchema. En schema deklarasjon ser ofte slik ut: Følgende linje: xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema Indikerer at elementer og datatyper (schema, element, complexType, sequence, string, boolean, etc.) kommer fra navnerom, og at elementene og datatypene som kommer fra navnerommet skal ha :xs som prefiks og valideres mot dette navnerommet. (denne url har til hensikt å beskrive navnerommet.) Det blir et schema for et schema…

12 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.

13 XMLSchema Referanse til et XMLSchema: Når XMLSchema instans navnerommet er tilgjengelig kan man bruke schemaLocation for å spesifisere schema fila. Schemalocation tar to paramentre; standard navnerom + schema fil.

14 XMLSchema Det er to hovedtyper av elementer Elementer med simpelt innhold Derav simple typer Elementer med komplekst innhold Derav komplekse typer Det er en grunnleggende forskjell mellom komplekse typer, som tillater element innhold og attributter og simple typer som ikke kan ha element innhold og ha attributter.

15 Enkle Typer Enkle typer kan være innebygde Datatyper som finnes i XMLSchema eller utledede typer fra de innebygde datatypene. Elementer og attributter kan ha enkle typer.

16 Innebygde Datatyper Primitive Datatyper string boolean decimal float double duration dateTime time date gYearMonth gYear gMonthDay "Hello World" {true, false, 1, 0} E3, 12, 12560, 0, -0, INF, -INF, NAN P1Y2M3DT10H30M12.3S format: CCYY-MM-DDThh:mm:ss format: hh:mm:ss.sss format: CCYY-MM-DD format: CCYY-MM format: CCYY format: --MM-DD INF = infinity NAN = not-a-number

17 Innebygde Datatyper forts. Primitive Datatyper gDay gMonth hexBinary base64Binary anyURI QName format: ---DD format: --MM-- Hexadecimal streng base64 streng Navnerom kvalifisert navn

18 XMLSchema – Element deklarasjon (Enkle typer) Dette er en deklarasjon av et element med enkelt innhold. Enkle elementer inneholder kun ”tekst” Enkle elementer inneholder ikke andre elementer eller attributter. Deklarasjonen består av element navn og en datatype: Olsen

19 XMLSchema – deklarasjon av attributter (enkle typer) Deklarering av attributter: Angir navn på attributtet og datatypen F.eks: Olsen Standard verdier: Faste verdier: Påkrevet: Valgfritt:

20 XMLSchema – deklarasjon av attributter (enkle typer) Attributter kan altså også inneholde enkle typer som for eksempel string, decimal osv.. Men kan også inneholde typer som er utledet.

21 Alice Smith 123 Maple Street Mill Valley CA Robert Smith 8 Oak Avenue Old Town PA Hurry, my lawn is going wild! Lawnmower Confirm this is electric Baby Monitor Dette eksempelet viser En Purchase Order, po.xml

22 Her er XMLSchema for xml instans dokumentet po.xml

23 Nye enkle typer Nye enkle typer blir definert ved å utlede dem fra eksisterende innebygde typer. Vi kan for eksempel lage en ny type ved å begrense en allerede eksisterende enkel type: Lager en ny type MinInteger som har en rekkevidde på 1000 – Den nye typen baseres på den innebygde enkle typen integer som jo har en mye større rekkevidde men som vi nå skal utlede en ny type av for å begrense rekkevidden.

24 Nye enkle typer Definerer den nye typen med simpleType

25 Nye enkle typer forts. Et annet eksempel fra po.xsd Utleder en ny type fra den innebygde enkle typen string. Begrenser verdien med et regulært uttrykk innenfor en som alltid inneholder regulære uttrykk. Uttrykket ser slik ut: "\d{3}-[A-Z]{2}" Og leses tre tall (digits) etterfulgt av bindestrek etterfulgt av 2 store bokstaver.

26 Nye enkle typer forts. Definerer den nye typen SKU

27 XMLSchema – simpleTypes (enkle typer) definisjoner brukes altså for å lage nye typer når det skal settes begrensninger på verdier. Noen flere eksempler : Alder kan ikke være under 0 og høyere enn 100. base attributtet er obligatorisk og spesifiserer den innebygde datatypen xs:minInclusive – mindre eller lik xs:maxInclusive – større eller lik

28 XMLSchema – simpleTypes (enkle typer) Eks: Begrense tillatte verdier:

29 XMLSchema – simpleTypes (enkle typer) Eks: Begrense tillatte verdier ved å definere en serie:

30 XMLSchema – simpleTypes (enkle typer) Eks: Begrensning på lengde:

31 XMLSchema – simpleTypes (enkle typer) En annen variant… Her kan biltype brukes på andre elementer fordi den ikke er en del av bil elementet.

32 Restriksjoner ConstraintDescription enumerationDefines a list of acceptable values fractionDigitsSpecifies the maximum number of decimal places allowed. Must be equal to or greater than zero lengthSpecifies the exact number of characters or list items allowed. Must be equal to or greater than zero maxExclusiveSpecifies the upper bounds for numeric values (the value must be less than this value) maxInclusiveSpecifies the upper bounds for numeric values (the value must be less than or equal to this value) maxLengthSpecifies the maximum number of characters or list items allowed. Must be equal to or greater than zero minExclusiveSpecifies the lower bounds for numeric values (the value must be greater than this value) minInclusiveSpecifies the lower bounds for numeric values (the value must be greater than or equal to this value) minLengthSpecifies the minimum number of characters or list items allowed. Must be equal to or greater than zero patternDefines the exact sequence of characters that are acceptable totalDigitsSpecifies the exact number of digits allowed. Must be greater than zero whiteSpaceSpecifies how white space (line feeds, tabs, spaces, and carriage returns) are handled

33 eller ? Når bruker du complexType elementet og når bruker du simpleType elementet? complexType når du ønsker å definere barn elementer og /eller attributter til et element. simpleType når du ønsker å lage en ny type som er en begrensning av en innebygget type (string, date, gYear, etc)

34 XMLSchema – komplekse typer Det er fire typer komplekse elementer Tomme elementer Elementer som bare inneholder andre elementer Elementer som bare inneholder tekst Elementer som både inneholder andre elementer og tekst

35 XMLSchema - komplekse typer Komplekse elementer kan inneholde både tekst flere elementer og attributter. Dette er f.eks et komplekst element som er tomt! Eller dette: som består av andre elementer John Smith

36 XMLSchema – komplekse typer Dette er en deklarasjon av et komplekst element Vi vet at elementet er komplekst fordi det har element innhold. Den komplekse typen er definert som anonym Dvs. at den ikke inneholder et ”type” attributt

37 XMLSchema – complexTypes (komplekse typer) Definisjon av complekse typer gjøres ved bruk av elementet. Vanligvis vil inneholde element deklarasjoner, attributt deklarasjoner og element referanser.

38 Nye komplekse typer For å definere nye komplekse typer bruker vi ”type” attributtet og gir den komplekse typen et navn som vi senere kan referere til når vi ønsker å bruke den nye typen.

39 Nye komplekse typer forts. Definerer den nye komplekse typen ”USAddress” og inneholder deklarasjoner som involverer kun enkle typer. (string og decimal)

40 Nye komplekse typer forts. Definisjonen av typen "PurchaseOrderType" inneholder element deklarasjoner som involverer komplekse typer, som for eksempel ”USAddress”. -- Enkel type -- Kompleks type -- Referanse til et globalt element -- Kompleks type

41 Nye komplekse typer forts. "PurchaseOrderType" inneholder element deklarasjonene: Og attributt deklarasjonen Alle elementene må forekomme i denne rekkefølgen som er spesifisert. Vi kan bl.a. lese ut av denne definisjonen at elementet ”shipto” består av (name, street, city, state og zip) subelementer som er deklarert i ”USAddress”.

42 Element innhold Komplekse typer for elementer med tomt innhold: complexContent modellen signaliserer at vi ønsker å begrense eller utvide innholdsmodellen av en kompleks type. Indikerer at innholdsmodellen til et element av kompleks type bare inneholder fra 0 til mange elementer. Her introduseres ingen elementer. anyType brukes nettopp for å si at typen kan være en kompleks eller enkel type.

43 Element innhold forts. Komplekse typer for elementer med enkelt innhold (husk begrep fra xml terminologi: simplelt innhold). Her blir spørsmålet: hvordan definere en kompleks type som er basert på en enkel type. 35 Deklarerer elementet shoesize som en start… Hvordan legger vi til et attributt her…? Enkle typer kan jo ikke inneholde attributter. integer er en enkel type… Vi må derfor definere en kompleks type for å kunne deklarere attributtet. Innholdet til elementet shoesize er jo en enkel type (integer) Spørsmålet er igjen; hvordan definere en kompleks type som er basert på den enkle typen integer. Svaret blir å utlede en ny kompleks type fra den enkle typen integer.

44 Element innhold forts. Vi bruker complexType for å definere en ny anonym type For å indikere at innholdsmodellen til den nye typen kun inneholder tegn og ikke har element innhold bruker vi simpleContent. Så utledes den nye typen ved å utvide den enkle typen integer Utvidelsen består av å legge til et attributt ved å bruke vanlig attributt deklarasjon

45 XMLSchema – complexTypes (komplekse typer) Komplekse typer med mixed innhold Dear Mr. John Smith Your order 1032 will be shipped on

46 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.

47 Et annet eksempel med complexContent Element som inneholder en kompleks type som er en utvidelse av en annen kompleks type Element deklarasjonen

48 complexContent versus simpleContent Med complexContent utvider du eller begrenser en kompleks type -- Med simpleContent utvider du eller begrenser en enkel type -- … X må være en complexType … Y må være en simpleType versus

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

50 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

51 XMLSchema – complexTypes Indikatorer All

52 XMLSchema – complexTypes Indikatorer Choice

53 XMLSchema – complexTypes Indikatorer maxOccur: spesifiserer hvor mange ganger et element kan forekomme. minOccur: spesifiserer minimum antall ganger et element kan forekomme.

54 XMLSchema og datatyper. Eks: :30: T09:30:10.5 John Smith 999

55 Oppsummering Alle XML schema består av komponenter, hovedsakelig elementer, attributter og type definisjoner. XMLSchema er overlegen i detalj i forhold til DTD


Laste ned ppt "XMLSchema. Hvorfor ikke bare bruke DTD? Fordi XMLSchema er enklere Spesifiserer element data typer Forenkler design Bedre støtte for navnerom Tillater."

Liknende presentasjoner


Annonser fra Google