Hvordan implementere en XML Schema

I denne artikkelen skal vi se nærmere på hvordan man kan lage en XML Schema. For å forstå XML (Extensible Markup Language) skjemaer vi vil gå gjennom det grunnleggende XML i denne innledningen. Du forventes å ha en grunnleggende forståelse av XML for denne how-to Anmeldelser XML -. Extensible Markup Language er et tekstbasert cross-platform språk som er gjør det mulig å lagre data (som adresser i en adressebok) i en strukturert måte. XML-dokumentet er forventet å ha riktig syntaks. Derfor, når du gjør XML-dokumenter de bør være velformet
. En velformet dokument har følgende:

Stengt tags (< hallo > < /hallo > eller < hi />)

Et element attributt må stå i anførselstegn (< godteri pris = " 0,50 " >)

XML er case sensitive. Med andre ord begynnelsen og slutten tag bør bruke samme sak

Et veldig enkelt eksempel på et XML-dokument er gitt nedenfor for en godtebutikk meny
. ≪? Xml version = " 1,0 " encoding = " utf-8 "? > < candystore > < godteri > < Product selskap = " XYZ " > Lollipops < /navn > < id > 634847 < /id > < pris > 0,50 < /pris > < /godteri > < godteri > < Product selskap = " ABC " > Mints < /navn > < id > 634812 < /id > < pris > 0,75 < /pris > < /godteri > < /candystore >
Den første setningen er den behandlingsinstruksjon. Det forteller parseren vi jobber med en bestemt versjon av XML. Resten av dokumentet er sammensatt av våre koder og elementer. I eksempelet ovenfor element " navn " har en egenskap av " selskap ". En flott måte å huske en egenskap er å tenke på det som en egenskap at noe måtte ha. En godteri har et navn. Navnet er knyttet til et bestemt selskap.
I vår how-to vi skal ta eksempelet over og opprette en XML Schema for det som vil definere regler for hvordan vår element innhold eller data med andre ord, må være gitt. (For eksempel, hvilket format er forventet for vår id Kan det ha alfabetiske tegn?) Anmeldelser XML Schema - En XML Schema erklærer metadata som tildeler en bestemt type, enten det være enkelt eller komplisert, til elementene og deres attributter i et XML-dokument.
Trinn 1
La oss ta en titt igjen på vårt eksempel for godteri butikken
. <? xml version = " 1,0 " encoding = " utf-8 "? > < candystore > < godteri > < Product selskap = " XYZ " > Lollipops < /navn > < id > 634847 < /id > < pris > 0,50 < /pris > < /godteri > < godteri > < Product selskap = " ABC " > Mints < /Product > < id > 634812 < /id > < pris > 0,75 < /pris > < /godteri > < /candystore >
Vår candystore
element har to godteri
underelementer. Hver godteri
element har underelementene i navn
, id
, og prissammenligning. Den har også en egenskap kalt selskap
. Når du bygger regler syntaks må vi definere begrensninger for formatet på våre data. Disse begrensningene kan være basert på hvordan dataene skal brukes. Hvis du for eksempel må vår godteri ID passe på et produkt fakturaen innen 6 tegn så vil det bidra til å bestemme våre begrensninger. Spør deg selv noen spørsmål om din data:
1. Har dataene må være bare tall eller alfabetiske bokstaver? 2. Har dataene må være en viss lengde? Eller et minimum eller maksimum lengde mer spesifikt? 3. Har dataene må ha en bestemt egenskap eller underelement spesifisert? Eller er de valgfritt?
Nå som vi har noen ideer om hvilke spørsmål vi kan stille oss selv, kan vi gå videre. La oss bygge et sett med regler, før vi begynner å lage vår XML Schema-kode.
1. Navnet på godteri er behov.2. Firmanavnet kan ikke være mer enn 30 tegn. Det er optional.3. Id må være alle sifre og må være nøyaktig 6 sifre. Det er required.4. Prisen er nødvendig.
Trinn 2
Med vår liste over regler kan vi nå lage vår skjema. Først av alt må vi gi en erklæring av vår navne heter xsd
. Vi kunne bruke noen navn vi ønsker som candyxsd
, men xsd er kort og lett å forstå. Begrepet xsd vil bli brukt som prefiks i hele vårt skjema for å angi vår navnerom.
<? xml version = " 1,0 " ? encoding = " UTF-8 " > < xsd: skjema xmlns: xsd = " http: //www.w3.org/2001/XMLSchema" >
Innenfor skjema du trenger å definere hvert element som en bestemt type. Det er 2 typer du kan bruke:
Simple: < xsd: element name = " nameofelement
" type = " nameofbuilt-insimpletype
" >
eller
< xsd: simpleType name = " nameofSimpleType
" > avledet typen begrensninger ...
< /xsd: simpleType >
Complex: < xsd: complex name = " nameofComplexType
" > < xsd: sekvens > elementer ...
< /xsd: sekvens > < /xsd: complex >
forskjellen mellom de to er ganske enkel. En enkel type kan ikke ha attributter eller elementinnhold.
I trinn 3 vil vi gå over bygget i enkle typer.
Trinn 3
Nå som du er kjent med elementtypene, la oss se på et par av de innebygde typer.

dato

string Anmeldelser
desimal

tid

heltall, lange, int, positiveInteger, double, float
Du kan se hele listen over innebygde enkle typer.
Med en innebygd type kan vi lage en enkel type som pris eller id som ikke har en egenskap eller et underelement
< xsd:. element name = " pris " type = " xsd: desimal " /> < xsd: element name = " id " type = " positiveInteger " />
Trinn 4
bilde gitt illustrerer strukturen i vår XML Schema. Vi trenger å bygge dine komplekse typer og legge inn begrensninger på størrelse for vår pris og id. For å sikre at våre id og selskapet attributt har et spesielt format vi skal lage 2 enkle typer. Vi vil tildele id type idType
. Attributtet selskapet vil bli tildelt den type companyType
.
< xsd: simpleType name = " idType " > < xsd: begrensning basen = " xsd: positiveInteger " > < XSD: totalDigits value = " 6 " /> < /xsd: begrensning > < /xsd: simpleType >
< xsd: simpleType name = " companyType " > < xsd: begrensning basen = " xsd: string " > < xsd: maxLength value = " 30 " /> < /xsd: begrensning > < /xsd: simpleType >
begrensning tag innenfor den enkle typen element tillater oss å erklære informasjon om vår enkle typen sin fasett. En fasett
begrenser en enkel type. Vi kan si ting som hvordan de totale tallene for en numerisk verdi til minimumslengden for vår strengverdi. Sørg for å referere til den innebygde enkle typer fasetter for listen. Basen attributtet angir hva slags restriksjoner kan brukes. Med andre ord, ville det ikke være gyldig å bruke maxLength med alle tallverdier som desimal eller dobbelt. Den totalDigits fasett er for det.
Trinn 5
Nå må du bygge dine komplekse typer som vil inneholde alle de andre. Hvis du husker fra tidligere, kan dine komplekse typer har under elementer og attributter. Vår candystore
element har godteri
sub-element. godteri
element har tre delelementer (Product, pris, og id). Produktanmeldelser elementet har en attributt, derfor det må bygges for å imøtekomme den og dens verdi.
Vår godtebutikk element inneholder alt:
< xsd: element name = " candystore " type = " candystoreType " /> < xsd: complex name = " candystoreType " > < xsd: sekvens > < xsd: element name = " godteri " type = " candyType " minOccurs = " 0 " maxOccurs = " grenseløs " /> < /xsd: sekvens > < /xsd: complex >
Først av alt erklærer vi en candystore element som er en complex. Hvis du vil huske vår godteri element kan gjentas så mange ganger som ønskelig. Det er der våre attributter minOccurs og maxOccurs kommet i. De spesifisere maksimum og minimum hendelser. Si for eksempel at du bare ville det bare en gang eller ikke i det hele tatt. Så minOccurs kan fortsatt være 0 og maxOccurs ville være 1.Our godteri sub-element er erklært som en type som heter candyType
. Denne er ganske stor.
< xsd: complex name = " candyType " > < xsd: sekvens > Produkt element vil gå her ... forklart nedenfor ...
< xsd: element name = " id " type = " idType " minOccurs = " en " maxOccurs = " en " /> < xsd: element name = " pris " type = " xsd: desimal " minOccurs = " en " maxOccurs = " en " /> < /xsd: sekvens > < /xsd: complex >
du husker simpleType informasjon for vår id Do? Her viser det til sin type som ble kalt idType.
Her er Product element som ble kuttet ut ovenfra slik at det kunne bli forklart.
< xsd: element name = " Product " minOccurs = " en " maxOccurs = " en " > < xsd: complex > < xsd: simpleContent > < xsd: extension basen = " xsd: string " > < xsd: attributtet name = " selskap " type = " companyType " /> < /xsd: forlengelse > < /xsd: simpleContent > < /xsd: complex > < /xsd: element >
Innenfor element kodene av Product erklærer vi en complex. Vi må være i stand til å sette i en strengverdi for Product element så vi trenger å erklære en simpleContent type. Dette vil tillate oss å ha restriksjoner eller utvidelser på vår tekstbaserte complex. Hvis vi ikke tar disse trinnene så vi ville ikke være i stand til å sette tekst til navnet på godteri mellom Product koder. I vårt tilfelle ønsker vi å være i stand til å sette i en strengverdi. Også har vi en utvidelse for vår attributt kalt selskap som trenger å bli erklært. Basen attributt for forlengelse element ovenfor spesifiserer vår innebygd datatype (dvs. streng, lang, etc.), en simpleType, eller complex. ! Når vi setter det hele sammen vi er ferdig
Sørg for at din XSD-filen har dette på toppen:?
≪ xml version = " 1,0 " encoding = " UTF-8 "? > < xsd: skjema xmlns: xsd = " http: //www.w3.org/2001/XMLSchema" >
Og xsd: schema tage bør lukkes med < /xsd: schema > helt på slutten etter alt.
Ta fullført XSD-fil og gi den navnet candystore.xsd. Det er gyldig og velformet.
Trinn 6
Vår siste trinnet er å bruke vår XML Schema til vårt opprinnelige XML fil
candystore.xml
. <? xml version = " 1,0 " ? encoding = " UTF-8 " > < candystore xmlns: xsi = " http: //www.w3.org/2001/XMLSchema-instance" xsi: noNamespaceSchemaLocation = " candystore.xsd " > < godteri > < Product selskap = " XYZ " > Lollipops < /Product > < id > 634847 < /id > < pris > 0,50 < /pris > < /godteri > < godteri > < Product selskap = " ABC " > Mints < /Product > < id > 634812 < /id > < pris > 0,75 < /pris > < /godteri > < /candystore >
candystore.xsd
<? xml version = " 1,0 " ? encoding = " UTF-8 " > < xsd: skjema xmlns: xsd = " http: //www.w3.org/2001/XMLSchema" > < xsd: element name = " candystore " type = " candystoreType " /> < xsd: complex name = " candystoreType " > < xsd: sekvens > < xsd: element name = " godteri " type = " candyType " minOccurs = " 0 " maxOccurs = " grenseløs " /> < /xsd: sekvens > < /xsd: complex > < xsd: complex name = " candyType " > < xsd: sekvens > < xsd: element name = " Product " minOccurs = " en " maxOccurs = " en " > < xsd: complex > < xsd: simpleContent > < xsd: extension basen = " xsd: string " > < xsd: attributtet name = " selskap " type = " companyType " /> < /xsd: forlengelse > < /xsd: simpleContent > < /xsd: complex > < /xsd: element > < xsd: element name = " id " type = " idType " minOccurs = " en " maxOccurs = " en " /> < xsd: element name = " pris " type = " xsd: desimal " minOccurs = " en " maxOccurs = " en " /> < /xsd: sekvens > < /xsd: complex > < xsd: simpleType name = " idType " > < xsd: begrensning basen = " xsd: positiveInteger " > < XSD: totalDigits value = " 6 " /> < /xsd: begrensning > < /xsd: simpleType > < xsd: simpleType name = " companyType " > < xsd: begrensning basen = " xsd: string " > < xsd: maxLength value = " 30 " /> < /xsd: begrensning > < /xsd: simpleType > < /xsd: schema >
Merk: Sørg for at hele XML-skjemaet er innenfor < xsd: schema > < /xsd: schema > tags.