XML Schema Definition Tool (Xsd.exe)XML Schema Definition Tool (Xsd.exe)

XML スキーマ定義ツール (Xsd.exe) は、XDR、XML、および XSD ファイル、またはランタイム アセンブリ内のクラスから XML スキーマ クラスまたは共通言語ランタイム クラスを生成します。The XML Schema Definition (Xsd.exe) tool generates XML schema or common language runtime classes from XDR, XML, and XSD files, or from classes in a runtime assembly.

構文Syntax

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]

引数Argument

引数Argument 説明Description
file.extensionfile.extension 変換元の入力ファイルを指定します。Specifies the input file to convert. 拡張子は、次のいずれかとして指定する必要があります。 xdr、.xml、.xsd、.dll、または .exe。You must specify the extension as one of the following: .xdr, .xml, .xsd, .dll, or .exe.

XDR スキーマ ファイル (拡張子 .xdr) を指定すると、Xsd.exe は XDR スキーマを XSD スキーマに変換します。If you specify an XDR schema file (.xdr extension), Xsd.exe converts the XDR schema to an XSD schema. 出力ファイルの名前は XDR スキーマと同じですが、拡張子は .xsd となります。The output file has the same name as the XDR schema, but with the .xsd extension.

XML ファイル (拡張子 .xml) を指定すると、Xsd.exe はそのファイル内のデータからスキーマを推測して XSD スキーマを生成します。If you specify an XML file (.xml extension), Xsd.exe infers a schema from the data in the file and produces an XSD schema. 出力ファイルの名前は XML ファイルと同じですが、拡張子は .xsd となります。The output file has the same name as the XML file, but with the .xsd extension.

XML スキーマ ファイル (拡張子 .xsd) を指定すると、XML スキーマと対応するランタイム オブジェクト用のソース コードが生成されます。If you specify an XML schema file (.xsd extension), Xsd.exe generates source code for runtime objects that correspond to the XML schema.

ランタイム アセンブリ ファイル (拡張子 .exe または .dll) を指定すると、そのアセンブリに含まれる 1 つ以上の型用のスキーマが生成されます。If you specify a runtime assembly file (.exe or .dll extension), Xsd.exe generates schemas for one or more types in that assembly. /type オプションを使用して、スキーマを生成する対象の型を指定できます。You can use the /type option to specify the types for which to generate schemas. 出力スキーマには、schema0.xsd、schema1.xsd などの名前が付けられます。The output schemas are named schema0.xsd, schema1.xsd, and so on. Xsd.exe が複数のスキーマを生成するのは、指定した型によって、カスタム属性 XMLRoot を使用する名前空間が特定される場合のみです。Xsd.exe produces multiple schemas only if the given types specify a namespace using the XMLRoot custom attribute.

一般オプションGeneral Options

オプションOption 説明Description
/h [elp ]/h[elp] このツールのコマンド構文とオプションを表示します。Displays command syntax and options for the tool.
/o [utputdir ]: directory/o[utputdir]:directory 出力ファイル用のディレクトリを指定します。Specifies the directory for output files. この引数は 1 回だけ指定できます。This argument can appear only once. 既定値は、現在のディレクトリです。The default is the current directory.
/?/? このツールのコマンド構文とオプションを表示します。Displays command syntax and options for the tool.
/p [arameters ]: .xml/p[arameters]:file.xml 指定された .xml ファイルから各種のオペレーション モードのためのオプションを読み込みます。Read options for various operation modes from the specified .xml file. 短縮形は /p: です。The short form is /p:. 詳細については、「解説」を参照してください。For more information, see the Remarks section.

XSD ファイルのオプションXSD File Options

.xsd ファイルについては、次のオプションのうち 1 つだけを指定する必要があります。You must specify only one of the following options for .xsd files.

オプションOption 説明Description
/c [lasses ]/c[lasses] 指定したスキーマと対応するクラスを生成します。Generates classes that correspond to the specified schema. オブジェクトに XML データを読み込むには、XmlSerializer.Deserialize メソッドを使用します。To read XML data into the object, use the XmlSerializer.Deserialize method.
/d [ataset ]/d[ataset] 指定したスキーマに対応する DataSet から派生したクラスを生成します。Generates a class derived from DataSet that corresponds to the specified schema. 派生したクラスに XML データを読み込むには、DataSet.ReadXml メソッドを使用します。To read XML data into the derived class, use the DataSet.ReadXml method.

.xsd ファイルについては、次のオプションのうち任意のオプションを指定できます。You can also specify any of the following options for .xsd files.

オプションOption 説明Description
/e [lement ]: 要素/e[lement]:element コードを生成する対象とする、スキーマ内の要素を指定します。Specifies the element in the schema to generate code for. 既定では、すべての要素が指定されます。By default all elements are typed. この引数は、複数回指定できます。You can specify this argument more than once.
/enableDataBinding/enableDataBinding データ バインディングを有効にするために、生成されたすべての型に INotifyPropertyChanged インターフェイスを実装します。Implements the INotifyPropertyChanged interface on all generated types to enable data binding. 短縮形は /edb です。The short form is /edb.
/enableLinqDataSet/enableLinqDataSet (短い形式: /eld)。LINQ to DataSet を使用して、生成されたデータセットに対してクエリを実行できることを指定します。(Short form: /eld.) Specifies that the generated DataSet can be queried against using LINQ to DataSet. このオプションは /dataset オプションも指定した場合に使用されます。This option is used when the /dataset option is also specified. 詳細については、「LINQ to DataSet Overview」(LINQ to DataSet Overview) と「Querying Typed DataSets」(型指定された DataSet のクエリ) を参照してください。For more information, see LINQ to DataSet Overview and Querying Typed DataSets. Linq の使用に関する一般的な情報については、「統合言語C#クエリ (linq) 」または「統合言語クエリ (linq)-Visual Basic」を参照してください。For general information about using LINQ, see Language-Integrated Query (LINQ) - C# or Language-Integrated Query (LINQ) - Visual Basic.
/f [ields ]/f[ields] プロパティの代わりにフィールドを生成します。Generates fields instead of properties. 既定では、プロパティが生成されます。By default, properties are generated.
/l [anguage ]: language/l[anguage]:language 使用するプログラミング言語を指定します。Specifies the programming language to use. CS (C#、既定値)、VB (Visual Basic)、JS (JScript)、または VJS (Visual J#) から選択します。Choose from CS (C#, which is the default), VB (Visual Basic), JS (JScript), or VJS (Visual J#). System.CodeDom.Compiler.CodeDomProvider を実装するクラスの完全修飾名を指定することもできます。You can also specify a fully qualified name for a class implementing System.CodeDom.Compiler.CodeDomProvider
/n [amespace ]: 名前空間/n[amespace]:namespace 生成する型のランタイム名前空間を指定します。Specifies the runtime namespace for the generated types. 既定の名前空間は Schemas です。The default namespace is Schemas.
/nologo/nologo バナーを表示しません。Suppresses the banner.
/order/order すべてのパーティクル メンバーに明示的な順序 ID を生成します。Generates explicit order identifiers on all particle members.
/o [ut ]: directoryName/o[ut]:directoryName ファイルを格納する出力ディレクトリを指定します。Specifies the output directory to place the files in. 既定値は、現在のディレクトリです。The default is the current directory.
/u [ri ]: uri/u[ri]:uri コードを生成する対象とする、スキーマ内の要素の URI を指定します。Specifies the URI for the elements in the schema to generate code for. 指定した場合、この URI は /element オプションで指定したすべての要素に適用されます。This URI, if present, applies to all elements specified with the /element option.

DLL ファイルと EXE ファイルのオプションDLL and EXE File Options

オプションOption 説明Description
/t [ype ]: typename/t[ype]:typename スキーマの作成対象とする型の名前を指定します。Specifies the name of the type to create a schema for. 複数の型の引数を指定できます。You can specify multiple type arguments. typename によって名前空間が特定されない場合、指定された型を持つアセンブリに含まれるすべての型が対象となります。If typename does not specify a namespace, Xsd.exe matches all types in the assembly with the specified type. typename によって名前空間が特定される場合は、その型だけが対象になります。If typename specifies a namespace, only that type is matched. typename の末尾がアスタリスク (*) の場合は、* の前にある文字列で始まる型のすべてが対象となります。If typename ends with an asterisk character (*), the tool matches all types that start with the string preceding the *. /type オプションを省略すると、アセンブリに含まれるすべての型についてスキーマが生成されます。If you omit the /type option, Xsd.exe generates schemas for all types in the assembly.

RemarksRemarks

Xsd.exe が実行する操作を次の表に示します。The following table shows the operations that Xsd.exe performs.

XDR から XSD へXDR to XSD XML-Data-Reduced スキーマ ファイルから XML スキーマを生成します。Generates an XML schema from an XML-Data-Reduced schema file. XDR は初期の XML ベースのスキーマ形式です。XDR is an early XML-based schema format.
XML から XSD へXML to XSD XML ファイルから XML スキーマを生成します。Generates an XML schema from an XML file.
XSD から DataSet へXSD to DataSet XSD スキーマ ファイルから共通言語ランタイムの DataSet クラスを生成します。Generates common language runtime DataSet classes from an XSD schema file. 生成されるクラスには、標準の XML データ用のリッチ オブジェクト モデルが用意されています。The generated classes provide a rich object model for regular XML data.
XSD からクラスへXSD to Classes XSD スキーマ ファイルからランタイム クラスを生成します。Generates runtime classes from an XSD schema file. 生成されたクラスを System.Xml.Serialization.XmlSerializer と組み合わせて使用すると、このスキーマに従う XML コードの読み書きを実行できます。The generated classes can be used in conjunction with System.Xml.Serialization.XmlSerializer to read and write XML code that follows the schema.
クラスから XSD へClasses to XSD ランタイム アセンブリ ファイルに含まれる 1 つ以上の型から XML スキーマを生成します。Generates an XML schema from a type or types in a runtime assembly file. 生成されたスキーマは、XmlSerializer によって使用される XML 形式を定義します。The generated schema defines the XML format used by the XmlSerializer.

Xsd.exe によって操作できるのは、W3C (World Wide Web Consortium) が提唱する XSD (XML スキーマ定義) に準拠した XML スキーマだけです。Xsd.exe only allows you to manipulate XML schemas that follow the XML Schema Definition (XSD) language proposed by the World Wide Web Consortium (W3C). XML スキーマ定義の提案または XML 標準の詳細については、「https://w3.org」を参照してください。For more information on the XML Schema Definition proposal or the XML standard, see https://w3.org.

XML ファイルによるオプションの設定Setting Options with an XML File

/parameters スイッチを使用すると、各種のオプションを設定する単一の XML ファイルを指定できます。By using the /parameters switch, you can specify a single XML file that sets various options. 設定できるオプションは、XSD.exe ツールの使用方法によって異なります。The options you can set depend on how you are using the XSD.exe tool. 選択肢には、スキーマの生成、コード ファイルの生成、または DataSet 機能を含むコード ファイルの生成があります。Choices include generating schemas, generating code files, or generating code files that include DataSet features. たとえば、コード ファイルではなくスキーマを生成する場合、実行可能ファイル (.exe) またはタイプ ライブラリ (.dll) ファイルの名前に <assembly> 要素を設定できます。For example, you can set the <assembly> element to the name of an executable (.exe) or type library (.dll) file when generating a schema, but not when generating a code file. 次の XML に、指定された実行可能ファイルで <generateSchemas> 要素を使用する方法を示します。The following XML shows how to use the <generateSchemas> element with a specified executable:

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

この XML が GenerateSchemas.xml というファイルに含まれる場合、コマンド プロンプトで、/parameters スイッチを使用して次のように入力し、Enter キーを押します。If the preceding XML is contained in a file named GenerateSchemas.xml, then use the /parameters switch by typing the following at a command prompt and pressing ENTER:

 xsd /p:GenerateSchemas.xml

アセンブリにある単一の型のスキーマを生成する場合は、次のような XML を使用します。On the other hand, if you are generating a schema for a single type found in the assembly, you can use the following XML:

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

しかし、上のコードを使用するには、コマンド プロンプトでアセンブリの名前も指定する必要があります。But to use preceding code, you must also supply the name of the assembly at the command prompt. コマンド プロンプトで次のように入力します (XML ファイルの名前を GenerateSchemaFromType.xml と仮定します)。Type the following at a command prompt (presuming the XML file is named GenerateSchemaFromType.xml):

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

<generateSchemas> 要素に対しては、次のオプションのうち 1 つだけを指定する必要があります。You must specify only one of the following options for the <generateSchemas> element.

要素Element 説明Description
<assembly><assembly> スキーマを生成するアセンブリを指定します。Specifies an assembly to generate the schema from.
<type><type> スキーマを生成するアセンブリに含まれる型を指定します。Specifies a type found in an assembly to generate a schema for.
<xml><xml> スキーマを生成する XML ファイルを指定します。Specifies an XML file to generate a schema for.
<xdr><xdr> スキーマを生成する XDR ファイルを指定します。Specifies an XDR file to generate a schema for.

コード ファイルを生成するには、<generateClasses> 要素を使用します。To generate a code file, use the <generateClasses> element. コード ファイルを生成する例を次に示します。The following example generates a code file. この例では、生成されるファイルのプログラミング言語と名前空間を設定するための 2 つの属性も示されています。Note that two attributes are also shown that allow you to set the programming language and namespace of the generated file.

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

<generateClasses> 要素に設定できるオプションは次のとおりです。Options you can set for the <generateClasses> element include the following.

要素Element 説明Description
<element><element> コードを生成する対象となる .xsd ファイルの要素を指定します。Specifies an element in the .xsd file to generate code for.
<schemaImporterExtensions><schemaImporterExtensions> SchemaImporterExtension クラスから派生する型を指定します。Specifies a type derived from the SchemaImporterExtension class.
<schema><schema> コードを生成する XML スキーマ ファイルを指定します。Specifies a XML Schema file to generate code for. 複数の <schema> 要素を使用して、複数の XML スキーマ ファイルを指定できます。Multiple XML Schema files can be specified using multiple <schema> elements.

次の表に、<generateClasses> 要素と共に使用するその他の属性を示します。The following table shows the attributes that can also be used with the <generateClasses> element.

属性Attribute 説明Description
languagelanguage 使用するプログラミング言語を指定します。Specifies the programming language to use. CS (C#、既定値)、VB (Visual Basic)、JS (JScript)、または VJS (Visual J#) から選択します。Choose from CS (C#, the default), VB (Visual Basic), JS (JScript), or VJS (Visual J#). CodeDomProvider を実装するクラスの完全修飾名を指定することもできます。You can also specify a fully qualified name for a class that implements CodeDomProvider.
名前空間namespace 生成するコードの名前空間を指定します。Specifies the namespace for the generated code. 名前空間は、スペースやバックスラッシュ文字を使用しないなどの CLR 標準に準拠する必要があります。The namespace must conform to CLR standards (for example, no spaces or backslash characters).
optionsoptions noneproperties (パブリック フィールドの代わりにプロパティを生成)、order、または enableDataBinding (前の「XSD ファイルのオプション」セクションの /order/enableDataBinding スイッチを参照) のいずれかの値です。One of the following values: none, properties (generates properties instead of public fields), order, or enableDataBinding (see the /order and /enableDataBinding switches in the preceding XSD File Options section.

DataSet 要素を使用すると、<generateDataSet> コードを生成する方法を制御できます。You can also control how DataSet code is generated by using the <generateDataSet> element. 次の XML は、生成されたコードが DataSet 構造 (DataTable クラスなど) を使用して、指定された要素の Visual Basic コードを作成することを指定します。The following XML specifies that the generated code uses DataSet structures (such as the DataTable class) to create Visual Basic code for a specified element. 生成された DataSet 構造体では LINQ クエリがサポートされます。The generated DataSet structures will support LINQ queries.

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

<generateDataSet> 要素に設定できるオプションは次のとおりです。Options you can set for the <generateDataSet> element include the following.

要素Element 説明Description
<schema><schema> コードを生成する XML スキーマ ファイルを指定します。Specifies an XML Schema file to generate code for. 複数の <schema> 要素を使用して、複数の XML スキーマ ファイルを指定できます。Multiple XML Schema files can be specified using multiple <schema> elements.

<generateDataSet> 要素と共に使用できる属性を次の表に示します。The following table shows the attributes that can be used with the <generateDataSet> element.

属性Attribute 説明Description
enableLinqDataSetenableLinqDataSet LINQ to DataSet を使用して、生成された DataSet を照会できるように指定します。Specifies that the generated DataSet can be queried against using LINQ to DataSet. 既定値は false です。The default value is false.
languagelanguage 使用するプログラミング言語を指定します。Specifies the programming language to use. CS (C#、既定値)、VB (Visual Basic)、JS (JScript)、または VJS (Visual J#) から選択します。Choose from CS (C#, the default), VB (Visual Basic), JS (JScript), or VJS (Visual J#). CodeDomProvider を実装するクラスの完全修飾名を指定することもできます。You can also specify a fully qualified name for a class that implements CodeDomProvider.
名前空間namespace 生成するコードの名前空間を指定します。Specifies the namespace for the generated code. 名前空間は、スペースやバックスラッシュ文字を使用しないなどの CLR 標準に準拠する必要があります。The namespace must conform to CLR standards (for example, no spaces or backslash characters).

トップ レベルの <xsd> 要素に設定できる属性があります。There are attributes that you can set on the top level <xsd> element. これらのオプションは、<generateSchemas><generateClasses>、または <generateDataSet> の各子要素と共に使用できます。These options can be used with any of the child elements (<generateSchemas>, <generateClasses> or <generateDataSet>). 次の XML コードは、"MyOutputDirectory" という出力ディレクトリの "IDItems" という要素のコードを生成します。The following XML code generates code for an element named "IDItems" in the output directory named "MyOutputDirectory".

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

次の表に、<xsd> 要素と共に使用するその他の属性を示します。The following table shows the attributes that can also be used with the <xsd> element.

属性Attribute 説明Description
出力output 生成されたスキーマまたはコード ファイルが格納されるディレクトリの名前です。The name of a directory where the generated schema or code file will be placed.
nologonologo バナーを表示しません。Suppresses the banner. true または false に設定します。Set to true or false.
helphelp このツールのコマンド構文とオプションを表示します。Displays command syntax and options for the tool. true または false に設定します。Set to true or false.

使用例Examples

myFile.xdr から XML スキーマを生成し、現在のディレクトリに保存するコマンドを次に示します。The following command generates an XML schema from myFile.xdr and saves it to the current directory.

xsd myFile.xdr

myFile.xml から XML スキーマを生成し、指定したディレクトリに保存するコマンドを次に示します。The following command generates an XML schema from myFile.xml and saves it to the specified directory.

xsd myFile.xml /outputdir:myOutputDir

指定したスキーマと対応するデータセットを C# 言語で生成し、現在のディレクトリ内に XSDSchemaFile.cs として保存するコマンドを次に示します。The following command generates a data set that corresponds to the specified schema in the C# language and saves it as XSDSchemaFile.cs in the current directory.

xsd /dataset /language:CS XSDSchemaFile.xsd

myAssembly.dll アセンブリ内のすべての型について XML スキーマを生成し、それらを schema0.xsd として現在のディレクトリ内に保存するコマンドを次に示します。The following command generates XML schemas for all types in the assembly myAssembly.dll and saves them as schema0.xsd in the current directory.

xsd myAssembly.dll

関連項目See also