Delen via


XML Schema Definition Tool (Xsd.exe)

Het hulpprogramma XML-schemadefinitie (Xsd.exe) genereert XML-schema- of algemene taalruntimeklassen van XDR-, XML- en XSD-bestanden of van klassen in een runtime-assembly.

Het hulpprogramma xml-schemadefinitie (Xsd.exe) vindt u meestal in het volgende pad:
C:\Program Files (x86)\Microsoft SDK's\Windows\{version}\bin\NETFX {version} Tools\

Syntaxis

Voer het hulpprogramma uit vanaf de opdrachtregel.

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]

Tip

Voor een goede werking van .NET Framework-hulpprogramma's moet u de Pathomgevingsvariabelen Includeen Lib omgevingsvariabelen correct instellen. Stel deze omgevingsvariabelen in door SDKVars.bat uit te voeren. Deze bevindt zich in de <map SDK>\<version>\Bin. SDKVars.bat moet worden uitgevoerd in elke opdrachtshell.

Argument

Argument Beschrijving
file.extension Hiermee geeft u het invoerbestand dat moet worden geconverteerd. U moet de extensie opgeven als een van de volgende opties: .xdr, .xml, .xsd, .dll of .exe.

Als u een XDR-schemabestand (.xdr-extensie) opgeeft, Xsd.exe het XDR-schema converteert naar een XSD-schema. Het uitvoerbestand heeft dezelfde naam als het XDR-schema, maar met de extensie .xsd.

Als u een XML-bestand (.xml extensie) opgeeft, leidt Xsd.exe een schema af van de gegevens in het bestand en produceert een XSD-schema. Het uitvoerbestand heeft dezelfde naam als het XML-bestand, maar met de extensie .xsd.

Als u een XML-schemabestand (.xsd-extensie) opgeeft, genereert Xsd.exe broncode voor runtime-objecten die overeenkomen met het XML-schema.

Als u een runtime-assemblybestand (.exe of .dll extensie) opgeeft, genereert Xsd.exe schema's voor een of meer typen in die assembly. U kunt de /type optie gebruiken om de typen op te geven waarvoor schema's moeten worden gegenereerd. De uitvoerschema's hebben de naam schema0.xsd, schema1.xsd, enzovoort. Xsd.exe produceert alleen meerdere schema's als de opgegeven typen een naamruimte opgeven met behulp van het XMLRoot aangepaste kenmerk.

Algemene opties

Optie Omschrijving
/h[elp] Geeft de opdrachtsyntaxis en opties voor het hulpprogramma weer.
/o[utputdir]:directory Hiermee geeft u de map voor uitvoerbestanden. Dit argument kan slechts één keer worden weergegeven. De standaardwaarde is de huidige map.
/? Geeft de opdrachtsyntaxis en opties voor het hulpprogramma weer.
/p[arameters]:file.xml Leesopties voor verschillende bewerkingsmodi uit het opgegeven .xml-bestand. De korte vorm is /p:. Zie de sectie Opmerkingen voor meer informatie.

XSD-bestandsopties

U moet slechts een van de volgende opties opgeven voor XSD-bestanden.

Optie Omschrijving
/c[lasses] Hiermee worden klassen gegenereerd die overeenkomen met het opgegeven schema. Als u XML-gegevens in het object wilt lezen, gebruikt u de XmlSerializer.Deserialize methode.
/d[ataset] Hiermee wordt een klasse gegenereerd die DataSet overeenkomt met het opgegeven schema. Als u XML-gegevens wilt lezen in de afgeleide klasse, gebruikt u de DataSet.ReadXml methode.

U kunt ook een van de volgende opties opgeven voor XSD-bestanden.

Optie Omschrijving
/e[lement]:element Hiermee geeft u het element in het schema voor het genereren van code voor. Standaard worden alle elementen getypt. U kunt dit argument meerdere keren opgeven.
/enableDataBinding Implementeert de INotifyPropertyChanged interface op alle gegenereerde typen om gegevensbinding in te schakelen. De korte vorm is /edb.
/enableLinqDataSet (Korte vorm: /eld.) Hiermee geeft u op dat de gegenereerde DataSet kan worden opgevraagd met behulp van LINQ naar DataSet. Deze optie wordt gebruikt wanneer de optie /dataset ook wordt opgegeven. Zie LINQ naar DataSet Overview and Querying Typed DataSets voor meer informatie. Zie Language-Integrated Query (LINQ ) - C# of Language-Integrated Query (LINQ) - Visual Basic voor algemene informatie over het gebruik van LINQ.
/f[ields] Hiermee worden alleen velden gegenereerd. Standaard worden eigenschappen met back-upvelden gegenereerd.
/l[anguage]:language Hiermee geeft u de programmeertaal die moet worden gebruikt. Kies uit CS (C#, dit is de standaardinstelling), VB (Visual Basic), JS (JScript) of VJS (Visual J#). U kunt ook een volledig gekwalificeerde naam opgeven voor een klasse die wordt geïmplementeerd System.CodeDom.Compiler.CodeDomProvider
/n[amespace]:naamruimte Hiermee geeft u de runtime-naamruimte voor de gegenereerde typen. De standaardnaamruimte is Schemas.
/nologo Onderdrukt de banner.
/Volgorde Genereert expliciete volgorde-id's voor alle deeltjesleden.
/o[ut]:directoryName Hiermee geeft u de uitvoermap om de bestanden in te plaatsen. De standaardwaarde is de huidige map.
/u[ri]:uri Hiermee geeft u de URI voor de elementen in het schema voor het genereren van code voor. Deze URI, indien aanwezig, is van toepassing op alle elementen die zijn opgegeven met de /element optie.

OPTIES voor DLL- en EXE-bestanden

Optie Omschrijving
/t[ype]:typenaam Hiermee geeft u de naam van het type voor het maken van een schema. U kunt meerdere typeargumenten opgeven. Als typenaam geen naamruimte opgeeft, Xsd.exe overeenkomt met alle typen in de assembly met het opgegeven type. Als typenaam een naamruimte aangeeft, wordt alleen dat type vergeleken. Als de typenaam eindigt op een sterretje (*), komt het hulpprogramma overeen met alle typen die beginnen met de tekenreeks voorafgaand aan de *. Als u de /type optie weglaat, Xsd.exe schema's genereert voor alle typen in de assembly.

Opmerkingen

In de volgende tabel ziet u de bewerkingen die Xsd.exe uitvoert.

Operation Omschrijving
XDR naar XSD Hiermee wordt een XML-schema gegenereerd op basis van een schemabestand met XML-gegevens dat is gereduceerd. XDR is een vroege op XML gebaseerde schema-indeling.
XML naar XSD Hiermee wordt een XML-schema gegenereerd op basis van een XML-bestand.
XSD naar DataSet Genereert algemene taalruntimeklassen DataSet op basis van een XSD-schemabestand. De gegenereerde klassen bieden een uitgebreid objectmodel voor reguliere XML-gegevens.
XSD naar klassen Hiermee worden runtimeklassen gegenereerd op basis van een XSD-schemabestand. De gegenereerde klassen kunnen worden gebruikt in combinatie met System.Xml.Serialization.XmlSerializer het lezen en schrijven van XML-code die volgt op het schema.
Klassen naar XSD Hiermee genereert u een XML-schema van een type of typen in een runtime-assemblybestand. Het gegenereerde schema definieert de XML-indeling die wordt gebruikt door de XmlSerializer.

Xsd.exe kunt u alleen XML-schema's bewerken die de XSD-taal (XML Schema Definition) volgen die wordt voorgesteld door het World Wide Web Consortium (W3C). Zie voor meer informatie over het xml-schemadefinitievoorstel of de XML-standaard https://w3.org.

Opties instellen met een XML-bestand

Met de /parameters schakeloptie kunt u één XML-bestand opgeven waarmee verschillende opties worden ingesteld. De opties die u kunt instellen, zijn afhankelijk van hoe u het hulpprogramma XSD.exe gebruikt. Opties zijn onder andere het genereren van schema's, het genereren van codebestanden of het genereren van codebestanden die functies bevatten DataSet . U kunt het <assembly> element bijvoorbeeld instellen op de naam van een uitvoerbaar bestand (.exe) of typebibliotheekbestand (.dll) bij het genereren van een schema, maar niet bij het genereren van een codebestand. In de volgende XML ziet u hoe u het <generateSchemas> element gebruikt met een opgegeven uitvoerbaar bestand:

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

Als de voorgaande XML is opgenomen in een bestand met de naam GenerateSchemas.xml, gebruikt u de /parameters schakeloptie door het volgende te typen bij een opdrachtprompt en op Enter te drukken:

 xsd /p:GenerateSchemas.xml

Als u daarentegen een schema genereert voor één type dat in de assembly wordt gevonden, kunt u de volgende XML gebruiken:

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

Maar als u de voorgaande code wilt gebruiken, moet u ook de naam van de assembly opgeven bij de opdrachtprompt. Voer het volgende in bij een opdrachtprompt (waarbij de naam van het XML-bestand wordt GenerateSchemaFromType.xml):

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

U moet slechts een van de volgende opties voor het <generateSchemas> element opgeven.

Element Beschrijving
<Vergadering> Hiermee geeft u een assembly op waaruit het schema moet worden gegenereerd.
<type> Hiermee geeft u een type op dat in een assembly is gevonden om een schema voor te genereren.
<xml> Hiermee geeft u een XML-bestand voor het genereren van een schema voor.
<Xdr> Hiermee geeft u een XDR-bestand voor het genereren van een schema voor.

Gebruik het <generateClasses> element om een codebestand te genereren. In het volgende voorbeeld wordt een codebestand gegenereerd. Er worden ook twee kenmerken weergegeven waarmee u de programmeertaal en naamruimte van het gegenereerde bestand kunt instellen.

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

De opties die u voor het <generateClasses> element kunt instellen, omvatten het volgende.

Element Beschrijving
<Element> Hiermee geeft u een element in het XSD-bestand op waarvoor code moet worden gegenereerd.
<schemaImporterExtensions> Hiermee geeft u een type dat is afgeleid van de SchemaImporterExtension klasse.
<schema> Hiermee geeft u een XML-schemabestand voor het genereren van code voor. Meerdere XML-schemabestanden kunnen worden opgegeven met behulp van meerdere <schema-elementen> .

In de volgende tabel ziet u de kenmerken die ook kunnen worden gebruikt met het <generateClasses> element.

Kenmerk Beschrijving
language Hiermee geeft u de programmeertaal die moet worden gebruikt. Kies uit CS (C#, de standaardinstelling), VB (Visual Basic), JS (JScript) of VJS (Visual J#). U kunt ook een volledig gekwalificeerde naam opgeven voor een klasse die wordt geïmplementeerd CodeDomProvider.
naamruimte Hiermee geeft u de naamruimte voor de gegenereerde code. De naamruimte moet voldoen aan CLR-standaarden (bijvoorbeeld geen spaties of backslash-tekens).
Opties Een van de volgende waarden: none, properties (genereert eigenschappen in plaats van openbare velden), orderof enableDataBinding (zie de /order en /enableDataBinding schakelopties in de voorgaande sectie XSD-bestandsopties).

U kunt ook bepalen hoe DataSet code wordt gegenereerd met behulp van het <generateDataSet> element. De volgende XML geeft aan dat de gegenereerde code structuren (zoals de DataTable klasse) gebruikt DataSet om Visual Basic-code voor een opgegeven element te maken. De gegenereerde DataSet-structuren ondersteunen LINQ-query's.

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

De opties die u voor het <generateDataSet> element kunt instellen, omvatten het volgende.

Element Beschrijving
<schema> Hiermee geeft u een XML-schemabestand voor het genereren van code voor. Meerdere XML-schemabestanden kunnen worden opgegeven met behulp van meerdere <schema-elementen> .

In de volgende tabel ziet u de kenmerken die kunnen worden gebruikt met het <generateDataSet> element.

Kenmerk Beschrijving
enableLinqDataSet Hiermee geeft u op dat de gegenereerde DataSet kan worden opgevraagd met behulp van LINQ naar DataSet. De standaardwaarde is false.
language Hiermee geeft u de programmeertaal die moet worden gebruikt. Kies uit CS (C#, de standaardinstelling), VB (Visual Basic), JS (JScript) of VJS (Visual J#). U kunt ook een volledig gekwalificeerde naam opgeven voor een klasse die wordt geïmplementeerd CodeDomProvider.
naamruimte Hiermee geeft u de naamruimte voor de gegenereerde code. De naamruimte moet voldoen aan CLR-standaarden (bijvoorbeeld geen spaties of backslash-tekens).

Er zijn kenmerken die u kunt instellen op het element op het hoogste niveau <xsd> . Deze opties kunnen worden gebruikt met een van de onderliggende elementen (<generateSchemas><generateClasses>of<generateDataSet>). Met de volgende XML-code wordt code gegenereerd voor een element met de naam 'IDItems' in de uitvoermap met de naam 'MyOutputDirectory'.

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

In de volgende tabel ziet u de kenmerken die ook kunnen worden gebruikt met het <xsd> element.

Kenmerk Beschrijving
output De naam van een map waarin het gegenereerde schema of codebestand wordt geplaatst.
nologo Onderdrukt de banner. Ingesteld op true of false.
help Geeft de opdrachtsyntaxis en opties voor het hulpprogramma weer. Ingesteld op true of false.

Voorbeelden

Met de volgende opdracht wordt een XML-schema gegenereerd en myFile.xdr opgeslagen in de huidige map.

xsd myFile.xdr

Met de volgende opdracht wordt een XML-schema gegenereerd waaruit myFile.xml het wordt opgeslagen in de opgegeven map.

xsd myFile.xml /outputdir:myOutputDir

Met de volgende opdracht wordt een gegevensset gegenereerd die overeenkomt met het opgegeven schema in de C#-taal en deze opslaat als XSDSchemaFile.cs in de huidige map.

xsd /dataset /language:CS XSDSchemaFile.xsd

Met de volgende opdracht worden XML-schema's gegenereerd voor alle typen in de assembly myAssembly.dll en worden deze opgeslagen als schema0.xsd in de huidige map.

xsd myAssembly.dll

Zie ook