Az XML séma definíciós eszköze (XSD.EXE) a VS.NET parancssorból indítható, szintaxisa a következő:
xsd <bemenő állomány neve> [opciók]
A program alapértelmezésben a következő mappában található:
<winroot>:\\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Bin.
A bemenő állományok eltérőek lehetnek, mivel a program sokféle állománykonverzióra alkalmas. A típusok a következők:
| Típus |
Jellemző |
| XML állomány |
Az XML állomány adattartalma alapján a program elkészíti a séma állományt (xsd kiterjesztéssel). |
| XDR séma állomány |
A program elkészíti a séma XSD séma megfelelőjét. |
| XSD séma állomány |
A program generál egy osztályt tartalmazó C# forrásállományt. |
| Assembly (.exe, .dll) állomány |
A program generál egy sémát (xsd állomány) valamennyi, az assembly-ben fellelhető típusra. |
A program jellemző opcióit a következő táblázat foglalja össze:
| Opció |
Jellemzők |
| /help |
Listázhatjuk a program lehetséges opcióit, és szintaxisát. |
| /outputdir: könyvtárnév |
Megadható, hogy a kimeneti generált állomány milyen mappába kerüljön. |
| /classes |
Osztályokat generál a specifikált XSD séma állomány alapján. |
| /dataset |
A megadott DataSet séma állományból generál egy forrásállományt, melyben egy, a DataSet osztályból származó osztály van deklarálva. |
| /language: nyelv |
Választható, hogy mely .NET programnyelven generálódjon a kód. Az alapértelmezés a C# (CS), de VB, vagy JS is választható. |
| /namespace: névtér-név |
Megadható, hogy a generált kódban mi legyen a névtér neve. Alapértelmezésben „Schemas”. |
| /type: típusnév |
Ha egy assembly-t adunk át paraméterként (input állomány), akkor megadható, hogy mely osztály (típus) számára szükséges a sémát létrehozni. Ha ezt nem adjuk meg, akkor a sémadefiníció minden típusra tartalmaz bejegyzést. |
A mellékelt példában háromféleképpen indítjuk el az XSD.EXE programot. A Form XML -> XSD füle alatt a mellékelt Products.xml állományhoz generálhatunk egy Products.xsd nevű sémaállományt kényelmesen, az alkalmazásunkból. Ekkor a programot a következő parancssori szintaxissal indítjuk el:
xsd.exe <elérési út>\Products.xml /outputdir:<könyvtárnév>
Az XSD -> CS fül alatt egy DataSet sémadefiníciójából (CustomDS.xsd) generálhatunk egy .cs állományt, a következő parancssorral:
xsd.exe <elérési út>\CustomDS.xsd /dataset /outputdir: <könyvtárnév> /language:CS
A műveletek előtt meg kell adnunk programunk számára a Visual Studio.NET meghajtójának betűjét, hogy a program megtalálja az xsd.exe alkalmazást.
A műveletek előtt a példaállományokat a meghajtó gyökerében létrehozott XSDTool nevű alkönyvtárba másoljuk, majd az eredmény is oda kerül.
A műveletek végén a BETÖLTÉS gomb segítségével a ListBox-ban meg is jeleníthetjük az eredményállományokat.
SampleClass projekt
A SampleClass projektet lefordítva a generálódó DLL-t használjuk fel arra, hogy az assembly-ben deklarált típusokhoz egy sémát hozzunk létre. Ennek módja, hogy az assembly-t paraméterként átadjuk az XSD.EXE programnak. A projekt egyetlen osztályt tartalmaz, Class1 névvel, melyben egy property és egy változó található.
A parancssor, mellyel létrehozzuk a sémát a következő:
xsd <elérési út>\SampleClass.dll /outputdir:<könyvtárnév>
Ekkor a generálódó séma a következőképpen fest:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema...>
<xs:element name="Class1" nillable="true" type="Class1" />
<xs:complexType name="Class1">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="Number" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:schema>
A program minden művelethez az XML szerializáció és deszerializáció eszközét használja, mely a .NET Framework osztályaiból is elérhető futási időben. A névtér, melyben a funkció elérhető: System.XML.Serialization.XMLSerializer.