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 Path
omgevingsvariabelen Include
en 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), order of 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