Nástroj pro definici schématu XML (Xsd.exe)

Nástroj definice schématu XML (Xsd.exe) generuje schématu XML nebo třídy modulu CLR (Common Language Runtime) ze souborů XDR, XML a XSD nebo z tříd v sestavení modulu runtime.

Nástroj definice schématu XML (Xsd.exe) se obvykle nachází v následující cestě:
C:\Program Files (x86)\Microsoft SDKs\Windows\{version}\bin\NETFX {version} Tools\

Syntaxe

Spusťte nástroj z příkazového řádku.

xsd file.xdr [-outputdir:directory][/parameters:file.xml]
xsd file.xml [-outputdir:directory] [/parameters:file.xml]
xsd file.xsd {/classes | /dataset} [/element:element]
             [/enableLinqDataSet] [/language:language]
                          [/namespace:namespace] [-outputdir:directory] [URI:uri]
                          [/parameters:file.xml]
xsd {file.dll | file.exe} [-outputdir:directory] [/type:typename [...]][/parameters:file.xml]

Návod

Aby nástroje rozhraní .NET Framework správně fungovaly, je nutné správně nastavit proměnné prostředí Path, Include a Lib. Nastavte tyto proměnné prostředí spuštěním SDKVars.bat, který se nachází v <adresáři SDK>\<version>\Bin. SDKVars.bat se musí spouštět v každém příkazovém prostředí.

Důvod

Důvod Popis
file.extension Určuje vstupní soubor, který se má převést. Příponu je nutné zadat jako jednu z následujících možností: .xdr, .xml, .xsd, .dllnebo .exe.

Pokud zadáte soubor schématu XDR (přípona XDR), Xsd.exe převede schéma XDR na schéma XSD. Výstupní soubor má stejný název jako schéma XDR, ale s příponou .xsd.

Pokud zadáte soubor XML (.xml příponu), Xsd.exe odvodí schéma z dat v souboru a vytvoří schéma XSD. Výstupní soubor má stejný název jako soubor XML, ale s příponou .xsd.

Pokud zadáte soubor schématu XML (přípona .xsd), Xsd.exe vygeneruje zdrojový kód pro objekty modulu runtime, které odpovídají schématu XML.

Pokud zadáte soubor sestavení runtime (.exe nebo rozšíření .dll), Xsd.exe vygeneruje schémata pro jeden nebo více typů v daném sestavení. Pomocí této /type možnosti můžete určit typy, pro které se mají generovat schémata. Výstupní schémata mají název schema0.xsd, schema1.xsd atd. Xsd.exe vytvoří více schémat pouze v případě, že dané typy určují obor názvů pomocí vlastního atributu XMLRoot .

Obecné možnosti

Možnost Popis
/h[elp] Zobrazí syntaxi příkazu a možnosti nástroje.
/o[utputdir]:adresář Určuje adresář pro výstupní soubory. Tento argument se může zobrazit pouze jednou. Výchozí hodnota je aktuální adresář.
/? Zobrazí syntaxi příkazu a možnosti nástroje.
/p[arameters]:file.xml Možnosti čtení pro různé režimy operací ze zadaného .xml souboru Krátká forma je /p:. Další informace najdete v části Poznámky.

Možnosti souborů XSD

Pro soubory .xsd je nutné zadat pouze jednu z následujících možností.

Možnost Popis
/c[lasses] Generuje třídy, které odpovídají zadanému schématu. Ke čtení dat XML do objektu použijte metodu XmlSerializer.Deserialize .
/d[ataset] Generuje třídu, která je odvozena ze zadaného schématu DataSet. Chcete-li číst data XML do odvozené třídy, použijte metodu DataSet.ReadXml .

Můžete také zadat některou z následujících možností pro soubory .xsd.

Možnost Popis
/e[lement]:element Určuje prvek ve schématu, pro který se má vygenerovat kód. Ve výchozím nastavení jsou zadány všechny prvky. Tento argument můžete zadat více než jednou.
/enableDataBinding Implementuje INotifyPropertyChanged rozhraní na všech generovaných typech, aby bylo možné datové vazby povolit. Krátká forma je /edb.
/enableLinqDataSet (Krátký formulář: /eld.) Určuje, že vygenerovanou datovou sadu lze dotazovat pomocí LINQ to DataSet. Tato možnost se používá, pokud je zadána také možnost /dataset. Další informace naleznete v tématu LINQ to DataSet Overview and Querying Typed DataSets. Obecné informace o použití LINQ najdete v tématu Language-Integrated Dotaz (LINQ) – C# nebo Language-Integrated Query (LINQ) – Visual Basic.
/f[ields] Generuje pouze pole. Ve výchozím nastavení se generují vlastnosti se záložními poli .
/l[anguage]:jazyk Určuje programovací jazyk, který se má použít. Vyberte si z CS (C#, což je výchozí VB ), (Visual Basic), JS (JScript) nebo VJS (Visual J#). Můžete také zadat plně kvalifikovaný název pro třídu, která implementuje System.CodeDom.Compiler.CodeDomProvider
/n[amespace]:namespace Určuje obor názvů runtime pro vygenerované typy. Výchozí obor názvů je Schemas.
/nologo Potlačí banner.
/objednávka Generuje explicitní identifikátory pořadí u všech členů částic.
/o[ut]:directoryName Určuje výstupní adresář pro umístění souborů. Výchozí hodnota je aktuální adresář.
/u[ri]:uri Určuje identifikátor URI prvků ve schématu, pro které se má vygenerovat kód. Tento identifikátor URI, pokud je k dispozici, se vztahuje na všechny prvky zadané s /element možností.

Možnosti souborů DLL a EXE

Možnost Popis
/t[ype]:typename Určuje název typu, pro který se má vytvořit schéma. Můžete zadat více argumentů typu. Pokud název typu neurčí obor názvů, Xsd.exe odpovídá všem typům v sestavení se zadaným typem. Pokud název typu určuje obor názvů, bude se shodovat pouze s tímto typem. Pokud název typu končí znakem hvězdičky (*), nástroj odpovídá všem typům, které začínají řetězcem předcházejícím znaku *. Pokud tuto možnost vynecháte /type , Xsd.exe vygeneruje schémata pro všechny typy v sestavení.

Poznámky

Následující tabulka uvádí operace, které Xsd.exe provádí.

Operace Popis
XDR do XSD Generuje schéma XML ze souboru schématu XML -Data-Reduced. XDR je dřívější formát schématu založený na jazyce XML.
XML na XSD Generuje schéma XML ze souboru XML.
XSD do datové sady Generuje třídy modulu CLR (Common Language Runtime DataSet ) ze souboru schématu XSD. Vygenerované třídy poskytují formátovaný objektový model pro běžná data XML.
XSD do tříd Generuje třídy modulu runtime ze souboru schématu XSD. Generované třídy lze použít ve spojení se čtením a zápisem System.Xml.Serialization.XmlSerializer kódu XML, který následuje za schématem.
Třídy do XSD Generuje schéma XML z typu nebo typů v souboru sestavení modulu runtime. Vygenerované schéma definuje formát XML, který XmlSerializerpoužívá .

Xsd.exe umožňuje manipulovat pouze se schématy XML, které se řídí jazykem XSD (XML Schema Definition) navrženým konsorciem W3C (World Wide Web Consortium). Další informace o návrhu definice schématu XML nebo standardu XML naleznete v tématu https://w3.org.

Nastavení možností se souborem XML

Pomocí /parameters přepínače můžete zadat jeden soubor XML, který nastavuje různé možnosti. Možnosti, které můžete nastavit, závisí na tom, jak používáte nástroj XSD.exe. Mezi volby patří generování schémat, generování souborů kódu nebo generování souborů kódu, které obsahují DataSet funkce. Při generování schématu můžete například nastavit <assembly> element na název spustitelného souboru (.exe) nebo knihovnu typů (.dll) při generování schématu, ale ne při generování souboru kódu. Následující xml ukazuje, jak použít <generateSchemas> element se zadaným spustitelným souborem:

<!-- This is in a file named GenerateSchemas.xml. -->
<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
<generateSchemas>
   <assembly>ConsoleApplication1.exe</assembly>
</generateSchemas>
</xsd>

Pokud předchozí xml je obsažen v souboru s názvem GenerateSchemas.xml, použijte /parameters přepínač zadáním následujícího příkazu na příkazovém řádku a stisknutím klávesy Enter:

 xsd /p:GenerateSchemas.xml

Na druhou stranu, pokud generujete schéma pro jeden typ nalezený v sestavení, můžete použít následující XML:

<!-- This is in a file named GenerateSchemaFromType.xml. -->
<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
<generateSchemas>
   <type>IDItems</type>
</generateSchemas>
</xsd>

Pokud ale chcete použít předchozí kód, musíte také zadat název sestavení na příkazovém řádku. Do příkazového řádku zadejte následující příkaz (předpokládá se, že se soubor XML jmenuje GenerateSchemaFromType.xml):

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

Pro prvek je nutné zadat pouze jednu z následujících možností <generateSchemas> .

prvek Popis
<montáž> Určuje sestavení, ze které se má schéma vygenerovat.
<typ> Určuje typ nalezený v sestavení pro vygenerování schématu.
<Xml> Určuje soubor XML pro vygenerování schématu.
<xdr> Určuje soubor XDR pro vygenerování schématu.

K vygenerování souboru kódu použijte <generateClasses> element. Následující příklad vygeneruje soubor kódu. Všimněte si, že se zobrazí také dva atributy, které umožňují nastavit programovací jazyk a obor názvů vygenerovaného souboru.

<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
<generateClasses language='VB' namespace='Microsoft.Serialization.Examples'/>
</xsd>
<!-- You must supply an .xsd file when typing in the command line.-->
<!-- For example: xsd /p:genClasses mySchema.xsd -->

Možnosti, které můžete nastavit pro <generateClasses> prvek, zahrnují následující.

prvek Popis
<Prvek> Určuje prvek v souboru .xsd, pro který se má vygenerovat kód.
<schemaImporterExtensions> Určuje typ odvozený z SchemaImporterExtension třídy.
<schéma> Určuje soubor schématu XML, pro který se má vygenerovat kód. Více souborů schématu XML lze zadat pomocí více <schema> prvků.

Následující tabulka ukazuje atributy, které lze použít také s elementem <generateClasses> .

Vlastnost Popis
jazyk Určuje programovací jazyk, který se má použít. Vyberte z CS (C#, výchozí), VB (Visual Basic), JS (JScript) nebo VJS (Visual J#). Můžete také zadat plně kvalifikovaný název třídy, která implementuje CodeDomProvider.
názvový prostor Určuje obor názvů pro vygenerovaný kód. Obor názvů musí odpovídat standardům CLR (například bez mezer nebo znaků zpětného lomítka).
možnosti Jedna z následujících hodnot: none, properties (generuje vlastnosti místo veřejných polí), ordernebo enableDataBinding (viz /order a /enableDataBinding přepínače v předchozí části Možnosti souboru XSD.

Pomocí prvku DataSet můžete také řídit, jak se generuje kód <generateDataSet>. Následující kód XML určuje, že vygenerovaný kód používá DataSet struktury (například DataTable třídy) k vytvoření kódu jazyka Visual Basic pro zadaný prvek. Vygenerované struktury datové sady budou podporovat dotazy LINQ.

<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
    <generateDataSet language='VB' namespace='Microsoft.Serialization.Examples' enableLinqDataSet='true'>
    </generateDataSet>
</xsd>

Možnosti, které můžete nastavit pro <generateDataSet> prvek, zahrnují následující.

prvek Popis
<schéma> Určuje soubor schématu XML, pro který se má vygenerovat kód. Více souborů schématu XML lze zadat pomocí více <schema> prvků.

Následující tabulka ukazuje atributy, které lze použít s elementem <generateDataSet> .

Vlastnost Popis
enableLinqDataSet Určuje, že vygenerovanou datovou sadu lze dotazovat pomocí LINQ to DataSet. Výchozí hodnota je false.
jazyk Určuje programovací jazyk, který se má použít. Vyberte z CS (C#, výchozí), VB (Visual Basic), JS (JScript) nebo VJS (Visual J#). Můžete také zadat plně kvalifikovaný název třídy, která implementuje CodeDomProvider.
názvový prostor Určuje obor názvů pro vygenerovaný kód. Obor názvů musí odpovídat standardům CLR (například bez mezer nebo znaků zpětného lomítka).

Existují atributy, které můžete nastavit v elementu nejvyšší úrovně <xsd> . Tyto možnosti lze použít s libovolnými podřízenými prvky (<generateSchemas><generateClasses>nebo <generateDataSet>). Následující kód XML vygeneruje kód pro element s názvem "IDItems" ve výstupním adresáři s názvem "MyOutputDirectory".

<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/' output='MyOutputDirectory'>
<generateClasses>
    <element>IDItems</element>
</generateClasses>
</xsd>

Následující tabulka ukazuje atributy, které lze použít také s elementem <xsd> .

Vlastnost Popis
výstup Název adresáře, do kterého se umístí vygenerované schéma nebo soubor kódu.
nologo Potlačí banner. Nastavte na true nebo false.
pomoc Zobrazí syntaxi příkazu a možnosti nástroje. Nastavte na true nebo false.

Příklady

Následující příkaz vygeneruje schéma XML z myFile.xdr aktuálního adresáře a uloží ho do aktuálního adresáře.

xsd myFile.xdr

Následující příkaz vygeneruje schéma XML z myFile.xml a uloží ho do zadaného adresáře.

xsd myFile.xml /outputdir:myOutputDir

Následující příkaz vygeneruje datovou sadu, která odpovídá zadanému schématu v jazyce C# a uloží ji jako XSDSchemaFile.cs v aktuálním adresáři.

xsd /dataset /language:CS XSDSchemaFile.xsd

Následující příkaz vygeneruje schémata XML pro všechny typy v sestavení myAssembly.dll a uloží je jako schema0.xsd v aktuálním adresáři.

xsd myAssembly.dll

Viz také