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

XML 結構描述定義工具 (Xsd.exe) 可以從 XDR、XML 和 XSD 檔案或從執行階段組件的類別中,產生 XML 結構描述或 Common Language Runtime 類別。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 副檔名),Xsd.exe 會產生對應到 XML 結構描述之 Runtime 物件的原始程式碼。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 副檔名),Xsd.exe 會產生該組件中一個或多個型別的結構描述。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. 只有在指定的型別使用 XMLRoot 自訂屬性來指定命名空間 (Namespace) 時,Xsd.exe 才能產生多個結構描述。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. 這個引數只可以使用一次。This argument can appear only once. 預設為目前的目錄。The default is the current directory.
/?/? 顯示工具的命令語法和選項。Displays command syntax and options for the tool.
/p[arameters]:file.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 檔指定下列其中一個選項: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]:element/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 介面,以啟用資料繫結 (Data Binding)。Implements the INotifyPropertyChanged interface on all generated types to enable data binding. 簡短形式為 /edbThe short form is /edb.
/enableLinqDataSet/enableLinqDataSet (簡短形式:/eld)。指定產生的 DataSet 可使用 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 概觀查詢具類型資料集For more information, see LINQ to DataSet Overview and Querying Typed DataSets. 如需使用 LINQ 的一般資訊,請參閱Language-Integrated Query (LINQ)- C# 或是Language-Integrated Query (LINQ)-Visual BasicFor 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]:namespace/n[amespace]:namespace 指定產生的型別的執行階段命名空間。Specifies the runtime namespace for the generated types. 預設命名空間是 SchemasThe default namespace is Schemas.
/nologo/nologo 隱藏產品啟始畫面。Suppresses the banner.
/order/order 在所有物件成員上產生明確順序識別項。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 沒有指定命名空間,Xsd.exe 會以指定的類型比對組件中的所有類型。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 選項,Xsd.exe 會產生組件中所有型別的結構描述。If you omit the /type option, Xsd.exe generates schemas for all types in the assembly.

備註Remarks

下表列出 Xsd.exe 執行的作業。The following table shows the operations that Xsd.exe performs.

XDR 轉換成 XSDXDR 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 轉換成 XSDXML to XSD 從 XML 檔案中產生 XML 結構描述。Generates an XML schema from an XML file.
XSD 轉換成 DataSetXSD to DataSet 從 XSD 結構描述檔中產生 Common Language Runtime 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.
類別轉換成 XSDClasses to XSD 從型別或執行階段組件檔中的型別中產生 XML 結構描述。Generates an XML schema from a type or types in a runtime assembly file. 產生的結構描述會定義所使用的 XML 格式XmlSerializerThe generated schema defines the XML format used by the XmlSerializer.

Xsd.exe 只允許您操作遵循 XML 結構描述定義 (XSD) 語言的 XML 結構描述,而這個 XSD 語言是由全球資訊網協會 (W3C) 所提出的。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.orgFor 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. 例如,您可以在產生結構描述時 (但不是在產生程式碼檔案時),將 <assembly> 項目設為可執行檔 (.exe) 或型別程式庫 (.dll) 檔案的名稱。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 的檔案中,則在命令提示字元中鍵入下列命令,並按 ENTER 鍵,就可以使用 /parameters 參數: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> 項目指定下列其中一個選項。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. 請注意,也會顯示兩個屬性,可讓您設定所產生檔案的程式設計語言和命名空間。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. 多個 XML 結構描述檔案可以使用多個 <schema> 元素指定。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
語言language 指定要使用的程式語言。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.
namespacenamespace 指定產生之程式碼的命名空間。Specifies the namespace for the generated code. 命名空間必須符合 CLR 標準 (例如,沒有空白或反斜線字元)。The namespace must conform to CLR standards (for example, no spaces or backslash characters).
選項options 下列其中一個值:noneproperties (產生屬性而非公用欄位)、orderenableDataBinding (請參閱先前<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. 多個 XML 結構描述檔案可以使用多個 <schema> 元素指定。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 指定產生的 DataSet 可使用 LINQ to DataSet 查詢。Specifies that the generated DataSet can be queried against using LINQ to DataSet. 預設值為 false。The default value is false.
語言language 指定要使用的程式語言。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.
namespacenamespace 指定產生之程式碼的命名空間。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 程式碼會對名為 "IDItems" 的項目,在名為 "MyOutputDirectory" 的輸出目錄中產生程式碼。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
outputoutput 將放置產生的結構描述或程式碼檔的目錄名稱。The name of a directory where the generated schema or code file will be placed.
nologonologo 隱藏產品啟始畫面。Suppresses the banner. 設為 truefalseSet to true or false.
helphelp 顯示工具的命令語法和選項。Displays command syntax and options for the tool. 設為 truefalseSet 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.csThe 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.xsdThe 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