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

Инструмент определения схемы XML (Xsd.exe) создает схему XML или классы CLR из файлов XDR, XML и XSD либо из классов в сборке среды выполнения.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.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. 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 @ no__t-1elp @ no__t-2/h[elp] Отображает синтаксис команд и параметров программы.Displays command syntax and options for the tool.
/o @ no__t-1utputdir @ no__t-2: Каталог/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 @ no__t-1arameters @ no__t-2: 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.

Параметры файла XSDXSD File Options

Для файлов XSD следует указать только один из следующих параметров.You must specify only one of the following options for .xsd files.

ПараметрOption ОписаниеDescription
/c @ no__t-1lasses @ no__t-2/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 @ no__t-1ataset @ no__t-2/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 @ no__t-1lement @ no__t-2: 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 для всех созданных типов для обеспечения привязки данных.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 и Запрос к типизированным объектам 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 @ no__t-1ields @ no__t-2/f[ields] Создает поля вместо свойств.Generates fields instead of properties. По умолчанию создаются свойства.By default, properties are generated.
/l @ no__t-1anguage @ no__t-2: язык/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.CodeDomProviderYou can also specify a fully qualified name for a class implementing System.CodeDom.Compiler.CodeDomProvider
/n @ no__t-1amespace @ no__t-2: Namespace/n[amespace]:namespace Определяет пространство имен среды выполнения для создаваемых типов.Specifies the runtime namespace for the generated types. Пространство имен по умолчанию — Schemas.The default namespace is Schemas.
/nologo/nologo Отключает баннер.Suppresses the banner.
/order/order Создает явные идентификаторы порядка для всех примитивных членов.Generates explicit order identifiers on all particle members.
/o @ no__t-1ut @ no__t-2: директоринаме/o[ut]:directoryName Задает выходной каталог, в котором следует разместить файлы.Specifies the output directory to place the files in. Значением по умолчанию является текущий каталог.The default is the current directory.
/u @ no__t-1ri @ no__t-2: URI/u[ri]:uri Определяет универсальный код ресурса (URI) для элементов схемы, для которого создается код.Specifies the URI for the elements in the schema to generate code for. Этот универсальный код ресурса, если имеется, применяется ко всем элементам, заданным параметром /element.This URI, if present, applies to all elements specified with the /element option.

Параметры файлов DLL и EXEDLL and EXE File Options

ПараметрOption ОписаниеDescription
/t @ no__t-1ype @ no__t-2: TypeName/t[ype]:typename Задает имя типа, для которого следует создать схему.Specifies the name of the type to create a schema for. Можно указать несколько аргументов типа.You can specify multiple type arguments. Если имя_типа не указывает пространство имен, Xsd.exe сопоставляет все типы в сборке с указанным типом.If typename does not specify a namespace, Xsd.exe matches all types in the assembly with the specified type. Если имя_типа задает пространство имен, сопоставляется только этот тип.If typename specifies a namespace, only that type is matched. Если имя_типа заканчивается знаком звездочки (*), средство сопоставляет все типы, которые начинаются со строки, предшествующей знаку звездочки (*).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 из файла схемы XDR.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 Создает классы CLR DataSet из файла схемы XSD.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, используемый XmlSerializer.The generated schema defines the XML format used by the XmlSerializer.

Xsd.exe позволяет управлять только схемами XML, которые соответствуют языку определения схемы XML (XSD), предложенному консорциумом World Wide Web Consortium (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.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. Например, можно задать элемент <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, используйте параметр /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. С помощью нескольких элементов <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.
namespacenamespace Задает пространство имен созданного кода.Specifies the namespace for the generated code. Пространство имен должно соответствовать стандартам CLR (например, отсутствие пробелов или обратной косой черты).The namespace must conform to CLR standards (for example, no spaces or backslash characters).
optionsoptions Одно из следующих значений: none, properties (создает свойства вместо открытых полей), order или enableDataBinding (см. параметры /order и /enableDataBinding в предыдущем разделе параметров файла XSD).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.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.
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. Задайте true или false.Set to true or false.
helphelp Отображает синтаксис команд и параметров программы.Displays command syntax and options for the tool. Задайте true или false.Set to true or false.

ПримерыExamples

Следующая команда создает схему XML из myFile.xdr и сохраняет ее в текущий каталог.The following command generates an XML schema from myFile.xdr and saves it to the current directory.

xsd myFile.xdr

Следующая команда создает схему XML из myFile.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

Следующая команда создает схемы XML для всех типов в сборке myAssembly.dll и сохраняет их как 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