XML-schema xsd og xml-filer

Et xml-schema er en fil som beskriver xml-dokumentets struktur. I dette eksempelet skal vi sette opp et enkelt xsd-schema som beskriver en xml-struktur. Nå XML-dokumentet lages vil man få intellisens når man skriver. Samtidig vil XML-filen valideres slik at man ikke setter inn elementer som ikke støttes eller at man glemmer påkrevde elementer.

XML-schemaet beskriver en struktur som sier at man kan skal lage en xml-fil med biler (Cars). rootnode er dermed Cars og et Cars element kan ha flere Car elementer i seg. Et Car element må ha følgende elementer: typemodelyear og color. Alle de elementene er påkrevd

Lag en fil som heter Cars.xsd med følgende XML-kode:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Cars"
targetNamespace="http://tempuri.org/Cars.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/Cars.xsd"
xmlns:mstns="http://tempuri.org/Cars.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:element name="Cars">
<xs:complexType>
<xs:sequence>
<xs:element name="Car" minOccurs="0" maxOccurs="10000">
<xs:complexType>
	<xs:sequence>
		<xs:element name="type" type="xs:string" minOccurs="1" maxOccurs="1" />
		<xs:element name="model" type="xs:string" minOccurs="1" maxOccurs="1"/>
		<xs:element name="year" type="xs:string" minOccurs="1" maxOccurs="1"/>
		<xs:element name="color" type="xs:string" minOccurs="1" maxOccurs="1"/>
	</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

Lag deretter en xml-fil Cars.xml i samme mappe. Selve grunnstrukturen i xml-filen må referere til hvilket schema som skal benyttes av filen. Dette er her gjort i rootnode.

<?xml version="1.0" encoding="utf-8" ?>
<Cars 
	xmlns="http://tempuri.org/Cars.xsd" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://tempuri.org Cars.xsd"
>
</Cars>

Dersom du har en teksteditor som støtter intellisens på xml/xsd (feks Visual Studio) så vil du enkelt kunne legge inn data i xml-dokumentet.

Et komplett xml-dokument kan feks se slik ut:

<?xml version="1.0" encoding="utf-8" ?>
<Cars 
	xmlns="http://tempuri.org/Cars.xsd" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://tempuri.org Cars.xsd"
>
	<Car>
		<type>Volvo</type>
		<model>240</model>
		<year>1984</year>
		<color>Blue</color>
	</Car>
	<Car>
		<type>Porsche</type>
		<model>911</model>
		<year>2001</year>
		<color>Black</color>
	</Car>
</Cars>

Det finnes mange muligheter med xsd og man kan vlidere både hvilke data som er påkrevd/velgfrie og hvordan datatype verdien skal være (feks tekst/tall). Man kan med schemaer også legge inn predefinerte verdier (enums). Les mer om xml-schema på w3Schools.com