次の方法で共有


XML スキーマ定義ツール (Xsd.exe)

XML スキーマ定義 (Xsd.exe) ツールは、XDR、XML、XSD ファイル、またはランタイム アセンブリ内のクラスから XML スキーマまたは共通言語ランタイム クラスを生成します。

XML スキーマ定義ツール (Xsd.exe) は、通常、次のパスにあります。
C:\Program Files (x86)\Microsoft SDKs\Windows\{version}\bin\NETFX {version} Tools\

構文

コマンド ラインからツールを実行します。

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]

ヒント

.NET Framework ツールが正しく機能するためには、 PathInclude、および Lib 環境変数を正しく設定する必要があります。 <SDK>\<version>\Bin ディレクトリにある SDKVars.batを実行して、これらの環境変数を設定します。 SDKVars.bat は、すべてのコマンド シェルで実行する必要があります。

引数

引数 説明
file.extension 変換する入力ファイルを指定します。 拡張子は、.xdr、.xml、.xsd、.dll、または .exeのいずれかとして指定する必要があります。

XDR スキーマ ファイル (.xdr 拡張子) を指定した場合、Xsd.exe は XDR スキーマを XSD スキーマに変換します。 出力ファイルの名前は XDR スキーマと同じですが、拡張子は .xsd です。

XML ファイル (拡張子.xml) を指定した場合、Xsd.exe はファイル内のデータからスキーマを推論し、XSD スキーマを生成します。 出力ファイルの名前は XML ファイルと同じですが、拡張子は .xsd です。

XML スキーマ ファイル (.xsd 拡張子) を指定した場合、Xsd.exe は XML スキーマに対応するランタイム オブジェクトのソース コードを生成します。

ランタイム アセンブリ ファイル (.exe または .dll 拡張子) を指定した場合、Xsd.exe はそのアセンブリ内の 1 つ以上の型のスキーマを生成します。 /type オプションを使用して、スキーマを生成する型を指定できます。 出力スキーマの名前は schema0.xsd、schema1.xsd などです。 Xsd.exe は、指定された型が XMLRoot カスタム属性を使用して名前空間を指定した場合にのみ、複数のスキーマを生成します。

全般オプション

選択肢 説明
/h[elp] このツールのコマンド構文とオプションを表示します。
/o[utputdir]:ディレクトリ 出力ファイルのディレクトリを指定します。 この引数は 1 回だけ指定できます。 既定値は、現在のディレクトリです。
/? このツールのコマンド構文とオプションを表示します。
/p[arameters]:file.xml 指定した .xml ファイルからさまざまな操作モードのオプションを読み取ります。 短い形式は /p:です。 詳細については、「解説」を参照してください。

XSD ファイル のオプション

.xsd ファイルには、次のいずれかのオプションのみを指定する必要があります。

選択肢 説明
/c[lasses] 指定したスキーマに対応するクラスを生成します。 XML データをオブジェクトに読み込むには、 XmlSerializer.Deserialize メソッドを使用します。
/d[ataset] 指定したスキーマに対応する DataSet から派生したクラスを生成します。 XML データを派生クラスに読み込むには、 DataSet.ReadXml メソッドを使用します。

.xsd ファイルには、次のいずれかのオプションを指定することもできます。

選択肢 説明
/e[lement]:element コードを生成するスキーマ内の要素を指定します。 既定では、すべての要素が指定されます。 この引数は複数回指定できます。
/enableDataBinding データ バインディングを有効にするために、生成されたすべての型に INotifyPropertyChanged インターフェイスを実装します。 短い形式は /edbです。
/enableLinqDataSet (短い形式: /eld。LINQ to DataSet を使用して、生成された DataSet に対してクエリを実行できることを指定します。 このオプションは、/dataset オプションも指定されている場合に使用されます。 詳細については、「 LINQ to DataSet の概要 」および 「型指定されたデータセットのクエリ」を参照してください。 LINQ の使用に関する一般的な情報については、「 Language-Integrated クエリ (LINQ) - C# または Language-Integrated クエリ (LINQ) - Visual Basic」を参照してください。
/f[ields] フィールドのみを生成します。 既定では、 バッキング フィールドを持つプロパティ が生成されます。
/l[anguage]:language 使用するプログラミング言語を指定します。 CS (既定の C#)、VB (Visual Basic)、JS (JScript)、または VJS (Visual J#) から選択します。 実装するクラスの完全修飾名を指定することもできます。 System.CodeDom.Compiler.CodeDomProvider
/n[amespace]:namespace 生成された型のランタイム名前空間を指定します。 既定の名前空間は Schemasです。
/nologo バナーを非表示にします。
/命令 すべてのパーティクル メンバーに対して明示的な順序識別子を生成します。
/o[ut]:directoryName ファイルを配置する出力ディレクトリを指定します。 既定値は、現在のディレクトリです。
/u[ri]:uri コードを生成するスキーマ内の要素の URI を指定します。 この URI (存在する場合) は、 /element オプションで指定されたすべての要素に適用されます。

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

選択肢 説明
/t[ype]:typename スキーマを作成する型の名前を指定します。 複数の型引数を指定できます。 typename で名前空間が指定されていない場合、Xsd.exe は、指定した型を持つアセンブリ内のすべての型と一致します。 typename で名前空間が指定されている場合、その型のみが一致します。 typename がアスタリスク文字 (*) で終わる場合、ツールは *の前の文字列で始まるすべての型と一致します。 /type オプションを省略すると、Xsd.exe はアセンブリ内のすべての型のスキーマを生成します。

注釈

次の表に、Xsd.exe が実行する操作を示します。

オペレーション 説明
XDR から XSD XMLData-Reduced スキーマ ファイルから XML スキーマを生成します。 XDR は、初期の XML ベースのスキーマ形式です。
XML から XSD XML ファイルから XML スキーマを生成します。
XSD から DataSet へ XSD スキーマ ファイルから共通言語ランタイム DataSet クラスを生成します。 生成されたクラスは、通常の XML データ用のリッチ オブジェクト モデルを提供します。
XSD をクラスに変換 XSD スキーマ ファイルからランタイム クラスを生成します。 生成されたクラスを System.Xml.Serialization.XmlSerializer と組み合わせて使用して、スキーマに続く XML コードの読み取りと書き込みを行うことができます。
クラスから XSD へ ランタイム アセンブリ ファイル内の型または型から XML スキーマを生成します。 生成されたスキーマは、 XmlSerializerで使用される XML 形式を定義します。

Xsd.exe では、World Wide Web Consortium (W3C) によって提案された XML スキーマ定義 (XSD) 言語に従う XML スキーマのみを操作できます。 XML スキーマ定義提案または XML 標準の詳細については、 https://w3.orgを参照してください。

XML ファイルを使用したオプションの設定

/parametersスイッチを使用すると、さまざまなオプションを設定する単一の XML ファイルを指定できます。 設定できるオプションは、XSD.exe ツールの使用方法によって異なります。 スキーマの生成、コード ファイルの生成、 DataSet 機能を含むコード ファイルの生成などがあります。 たとえば、スキーマを生成するときに、 <assembly> 要素を実行可能ファイル (.exe) またはタイプ ライブラリ (.dll) ファイルの名前に設定できますが、コード ファイルの生成時には設定できません。 次の XML は、指定した実行可能ファイルで <generateSchemas> 要素を使用する方法を示しています。

<!-- 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を押して、 スイッチを使用します。

 xsd /p:GenerateSchemas.xml

一方、アセンブリ内の 1 つの型のスキーマを生成する場合は、次の XML を使用できます。

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

ただし、上記のコードを使用するには、コマンド プロンプトでアセンブリの名前も指定する必要があります。 コマンド プロンプトで次のように入力します (XML ファイルの名前が GenerateSchemaFromType.xmlであると仮定します)。

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

<generateSchemas>要素には、次のいずれかのオプションのみを指定する必要があります。

要素 説明
<アセンブリ> スキーマを生成するアセンブリを指定します。
<タイプ> スキーマを生成するアセンブリ内の型を指定します。
<xml> スキーマを生成する XML ファイルを指定します。
<xdr> スキーマを生成する XDR ファイルを指定します。

コード ファイルを生成するには、 <generateClasses> 要素を使用します。 次の例では、コード ファイルを生成します。 生成されたファイルのプログラミング言語と名前空間を設定できる 2 つの属性も表示されることに注意してください。

<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>要素に対して設定できるオプションは次のとおりです。

要素 説明
<要素> コードを生成する .xsd ファイル内の要素を指定します。
<スキーマインポーター拡張機能> SchemaImporterExtension クラスから派生した型を指定します。
<スキーマ> コードを生成する XML スキーマ ファイルを指定します。 複数の XML スキーマ ファイルは、複数の <schema> 要素を使用して指定できます。

次の表に、 <generateClasses> 要素で使用できる属性を示します。

特性 説明
言語 使用するプログラミング言語を指定します。 CS (C#、既定値)、VB (Visual Basic)、JS (JScript)、または VJS (Visual J#) から選択します。 CodeDomProviderを実装するクラスの完全修飾名を指定することもできます。
名前空間 生成されたコードの名前空間を指定します。 名前空間は CLR 標準に準拠している必要があります (スペースや円記号は使用できません)。
オプション 次のいずれかの値: noneproperties (パブリック フィールドではなくプロパティを生成)、 order、または enableDataBinding (前の XSD ファイル オプションのセクションの /order および /enableDataBinding スイッチを参照してください)。

DataSetコードの生成方法は、<generateDataSet>要素を使用して制御することもできます。 次の XML は、生成されたコードが DataSet 構造体 ( DataTable クラスなど) を使用して、指定した要素の Visual Basic コードを作成することを指定します。 生成された DataSet 構造体は、LINQ クエリをサポートします。

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

<generateDataSet>要素に対して設定できるオプションは次のとおりです。

要素 説明
<スキーマ> コードを生成する XML スキーマ ファイルを指定します。 複数の XML スキーマ ファイルは、複数の <schema> 要素を使用して指定できます。

次の表に、 <generateDataSet> 要素で使用できる属性を示します。

特性 説明
enableLinqDataSet LINQ to DataSet を使用して、生成された DataSet に対してクエリを実行できることを指定します。 既定値は false です。
言語 使用するプログラミング言語を指定します。 CS (C#、既定値)、VB (Visual Basic)、JS (JScript)、または VJS (Visual J#) から選択します。 CodeDomProviderを実装するクラスの完全修飾名を指定することもできます。
名前空間 生成されたコードの名前空間を指定します。 名前空間は CLR 標準に準拠している必要があります (スペースや円記号は使用できません)。

最上位レベルの <xsd> 要素に設定できる属性があります。 これらのオプションは、任意の子要素 (<generateSchemas><generateClasses> 、または <generateDataSet>) で使用できます。 次の XML コードは、"MyOutputDirectory" という名前の出力ディレクトリに "IDItems" という名前の要素のコードを生成します。

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

次の表に、 <xsd> 要素で使用できる属性を示します。

特性 説明
アウトプット 生成されたスキーマまたはコード ファイルが配置されるディレクトリの名前。
nologo バナーを非表示にします。 true または false に設定します。
助けて このツールのコマンド構文とオプションを表示します。 true または false に設定します。

例示

次のコマンドは、 myFile.xdr から XML スキーマを生成し、現在のディレクトリに保存します。

xsd myFile.xdr

次のコマンドは、 myFile.xml から XML スキーマを生成し、指定したディレクトリに保存します。

xsd myFile.xml /outputdir:myOutputDir

次のコマンドは、C# 言語で指定されたスキーマに対応するデータ セットを生成し、現在のディレクトリに XSDSchemaFile.cs として保存します。

xsd /dataset /language:CS XSDSchemaFile.xsd

次のコマンドは、アセンブリ myAssembly.dll 内のすべての型の XML スキーマを生成し、現在のディレクトリに schema0.xsd として保存します。

xsd myAssembly.dll

こちらも参照ください