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

La herramienta Definición de esquemas XML (Xsd.exe) genera clases de esquemas XML o de Common Language Runtime a partir de archivos XDR, XML y XSD, o a partir de clases de un ensamblado de motor en tiempo de ejecución.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.

SintaxisSyntax

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]

ArgumentoArgument

ArgumentoArgument DescripciónDescription
file.extensionfile.extension Especifica el archivo de entrada que se desea convertir.Specifies the input file to convert. Debe especificar la extensión como una de las siguientes:. XDR,. XML,. xsd,. dll o. exe.You must specify the extension as one of the following: .xdr, .xml, .xsd, .dll, or .exe.

Si se especifica un archivo de esquema XDR (extensión .xdr), Xsd.exe convierte el esquema XDR en un esquema XSD.If you specify an XDR schema file (.xdr extension), Xsd.exe converts the XDR schema to an XSD schema. El archivo de salida tiene el mismo nombre que el del esquema XDR, pero con la extensión .xsd.The output file has the same name as the XDR schema, but with the .xsd extension.

Si se especifica un archivo XML (extensión .xml), Xsd.exe deduce, por los datos del archivo, que se trata de un esquema y genera un esquema 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. El archivo de salida tiene el mismo nombre que el archivo XML, pero con la extensión .xsd.The output file has the same name as the XML file, but with the .xsd extension.

Si se especifica un archivo de esquema XML (extensión .xsd), Xsd.exe genera código fuente para objetos de motor en tiempo de ejecución que corresponden al esquema XML.If you specify an XML schema file (.xsd extension), Xsd.exe generates source code for runtime objects that correspond to the XML schema.

Si se especifica un archivo de ensamblado de motor en tiempo de ejecución (extensión .exe o .dll), Xsd.exe genera esquemas para uno o más tipos de ese ensamblado.If you specify a runtime assembly file (.exe or .dll extension), Xsd.exe generates schemas for one or more types in that assembly. Se puede utilizar la opción /type para especificar los tipos para los que se generan esquemas.You can use the /type option to specify the types for which to generate schemas. Los esquemas de salida se denominan schema0.xsd, schema1.xsd, etc.The output schemas are named schema0.xsd, schema1.xsd, and so on. Xsd.exe genera varios esquemas solo si los tipos dados especifican un espacio de nombres mediante el atributo personalizado XMLRoot.Xsd.exe produces multiple schemas only if the given types specify a namespace using the XMLRoot custom attribute.

Opciones generalesGeneral Options

OpciónOption DescripciónDescription
/h[Yuda]/h[elp] Muestra las opciones y la sintaxis de los comandos para la herramienta.Displays command syntax and options for the tool.
/o[utputdir]: directorio/o[utputdir]:directory Especifica el directorio de los archivos de salida.Specifies the directory for output files. Este argumento sólo puede aparecer una vez.This argument can appear only once. El valor predeterminado es el directorio actual.The default is the current directory.
/?/? Muestra las opciones y la sintaxis de los comandos para la herramienta.Displays command syntax and options for the tool.
/p[arameters]: file. XML/p[arameters]:file.xml Lee las opciones de los distintos modos de operación desde el archivo .xml especificado.Read options for various operation modes from the specified .xml file. La forma abreviada es /p:.The short form is /p:. Para obtener más información, vea la sección comentarios .For more information, see the Remarks section.

Opciones de archivos XSDXSD File Options

Se debe especificar sólo una de las opciones siguientes de archivos .xsd.You must specify only one of the following options for .xsd files.

OpciónOption DescripciónDescription
/c[lasses]/c[lasses] Genera clases que corresponden al esquema especificado.Generates classes that correspond to the specified schema. Para leer datos XML del objeto, use el método XmlSerializer.Deserialize.To read XML data into the object, use the XmlSerializer.Deserialize method.
/d[conjunto]/d[ataset] Genera una clase derivada de DataSet que corresponde al esquema especificado.Generates a class derived from DataSet that corresponds to the specified schema. Para leer datos XML de la clase derivada, use el método DataSet.ReadXml.To read XML data into the derived class, use the DataSet.ReadXml method.

También se puede especificar cualquiera de las opciones siguientes de archivos .xsd.You can also specify any of the following options for .xsd files.

OpciónOption DescripciónDescription
/e[implementar]: elemento/e[lement]:element Especifica el elemento del esquema para el que se genera código.Specifies the element in the schema to generate code for. De forma predeterminada se escriben todos los elementos.By default all elements are typed. Este argumento se puede especificar varias veces.You can specify this argument more than once.
/enableDataBinding/enableDataBinding Implementa la interfaz INotifyPropertyChanged en todos los tipos generados para habilitar el enlace de datos.Implements the INotifyPropertyChanged interface on all generated types to enable data binding. La forma abreviada es /edb.The short form is /edb.
/enableLinqDataSet/enableLinqDataSet (Forma abreviada: /eld). Especifica que el Conjunto de datos generado se puede consultar utilizando LINQ a Conjunto de datos.(Short form: /eld.) Specifies that the generated DataSet can be queried against using LINQ to DataSet. Esta opción se utiliza cuando también se especifica la opción /dataset.This option is used when the /dataset option is also specified. Para más información, vea LINQ to DataSet Overview (Información general sobre LINQ to DataSet) y Querying Typed DataSets (Consultar objetos DataSet con tipo).For more information, see LINQ to DataSet Overview and Querying Typed DataSets. Para obtener información general sobre el uso de LINQ, consulte Language-Integrated Query ( C# LINQ) o Language-Integrated Query (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] Genera campos en lugar de propiedades.Generates fields instead of properties. De manera predeterminada, se generan propiedades.By default, properties are generated.
/l[enguaje]: idioma/l[anguage]:language Especifica el lenguaje de programación que se utiliza.Specifies the programming language to use. Se puede elegir entre CS (C#, que es el valor predeterminado), VB (Visual Basic), JS (JScript) o VJS (Visual J#).Choose from CS (C#, which is the default), VB (Visual Basic), JS (JScript), or VJS (Visual J#). También se puede especificar un nombre completo para una clase que implemente System.CodeDom.Compiler.CodeDomProvider.You can also specify a fully qualified name for a class implementing System.CodeDom.Compiler.CodeDomProvider
/n[acio]: espacio de nombres/n[amespace]:namespace Especifica el espacio de nombres del motor en tiempo de ejecución para los tipos generados.Specifies the runtime namespace for the generated types. El espacio de nombres predeterminado es Schemas.The default namespace is Schemas.
/nologo/nologo Suprime la pancarta.Suppresses the banner.
/order/order Genera identificadores de orden explícitos en todos los miembros de partícula.Generates explicit order identifiers on all particle members.
/o[ut]: directoryName/o[ut]:directoryName Especifica el directorio de salida en el que se colocan los archivos.Specifies the output directory to place the files in. El valor predeterminado es el directorio actual.The default is the current directory.
/u[ri]: URI/u[ri]:uri Especifica el identificador URI de los elementos del esquema para el que se genera código.Specifies the URI for the elements in the schema to generate code for. Este identificador URI, si existe, se aplica a todos los elementos especificados con la opción /element.This URI, if present, applies to all elements specified with the /element option.

Opciones de archivos DLL y EXEDLL and EXE File Options

OpciónOption DescripciónDescription
/t[ipo]: TypeName/t[ype]:typename Especifica el nombre del tipo para el que se crea un esquema.Specifies the name of the type to create a schema for. Se pueden especificar varios argumentos de tipo.You can specify multiple type arguments. Si typename no especifica un espacio de nombres, Xsd.exe busca todos los tipos del ensamblado con el tipo especificado.If typename does not specify a namespace, Xsd.exe matches all types in the assembly with the specified type. Si typename especifica un espacio de nombres, solo se busca ese tipo.If typename specifies a namespace, only that type is matched. Si typename termina con carácter de asterisco (*), la herramienta busca todos los tipos que empiezan con la cadena anterior a *.If typename ends with an asterisk character (*), the tool matches all types that start with the string preceding the *. Si se omite la opción /type, Xsd.exe genera esquemas para todos los tipos del ensamblado.If you omit the /type option, Xsd.exe generates schemas for all types in the assembly.

ComentariosRemarks

En la siguiente tabla se muestran las operaciones que realiza Xsd.exe.The following table shows the operations that Xsd.exe performs.

XDR a XSDXDR to XSD Genera un esquema XML a partir de un archivo de esquema reducido de datos XML.Generates an XML schema from an XML-Data-Reduced schema file. XDR es un formato de esquemas anterior basado en XML.XDR is an early XML-based schema format.
XML a XSDXML to XSD Genera un esquema XML a partir de un archivo XML.Generates an XML schema from an XML file.
XSD a DataSetXSD to DataSet Genera clases DataSet de Common Language Runtime a partir de un archivo de esquema XSD.Generates common language runtime DataSet classes from an XSD schema file. Las clases generadas proporcionan un modelo de objetos completo para datos XML regulares.The generated classes provide a rich object model for regular XML data.
XSD a clasesXSD to Classes Genera clases de motor en tiempo de ejecución a partir de un archivo de esquema XSD.Generates runtime classes from an XSD schema file. Las clases generadas se pueden usar conjuntamente con System.Xml.Serialization.XmlSerializer para leer y escribir código XML que sigue al esquema.The generated classes can be used in conjunction with System.Xml.Serialization.XmlSerializer to read and write XML code that follows the schema.
Clases a XSDClasses to XSD Genera un esquema XML a partir de un tipo o tipos de un archivo de ensamblado de motor en tiempo de ejecución.Generates an XML schema from a type or types in a runtime assembly file. El esquema generado define el formato XML utilizado por el XmlSerializer.The generated schema defines the XML format used by the XmlSerializer.

Xsd.exe solo permite manipular esquemas XML que siguen al lenguaje de definición de esquemas XML (XSD) propuesto por el consorcio World Wide Web (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). Para obtener más información sobre la propuesta de definición de esquemas XML o el estándar XML, vea https://w3.org.For more information on the XML Schema Definition proposal or the XML standard, see https://w3.org.

Establecer opciones con un archivo XMLSetting Options with an XML File

El uso del modificador /parameters permite especificar un único archivo XML que establece distintas opciones.By using the /parameters switch, you can specify a single XML file that sets various options. Las opciones que pueden establecerse dependen de la forma en que se esté utilizando la herramienta XSD.exe.The options you can set depend on how you are using the XSD.exe tool. Entre estas opciones se incluyen la generación de esquemas, archivos de código o archivos de código que incluyen características DataSet.Choices include generating schemas, generating code files, or generating code files that include DataSet features. Por ejemplo, el elemento <assembly> puede establecerse en el nombre de un archivo ejecutable (.exe) o de biblioteca de tipos (.dll) al generar un esquema, pero no al generar un archivo de código.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. En el siguiente XML se muestra la forma de utilizar el elemento <generateSchemas> con un archivo ejecutable especificado: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>

Si el XML anterior está incluido en un archivo denominado GenerateSchemas.xml, use el modificador /parameters al escribir lo siguiente en una línea de comandos y presionar ENTRAR: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

Por otro lado, si se estuviese generando un esquema para un tipo único situado en el ensamblado, se podría utilizar el siguiente código 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>

Pero para poder utilizar el código anterior, habría que especificar también el nombre del ensamblado en el símbolo del sistema.But to use preceding code, you must also supply the name of the assembly at the command prompt. Escriba lo siguiente en el símbolo del sistema (se presupone que el nombre del archivo XML es GenerateSchemaFromType.xml):Type the following at a command prompt (presuming the XML file is named GenerateSchemaFromType.xml):

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

Solo se debe especificar una de las siguientes opciones para el elemento <generateSchemas>.You must specify only one of the following options for the <generateSchemas> element.

ElementoElement DescripciónDescription
<assembly><assembly> Especifica el ensamblado a partir del cual generar el esquema.Specifies an assembly to generate the schema from.
<type><type> Especifica un tipo situado en un ensamblado para el que generar un esquema.Specifies a type found in an assembly to generate a schema for.
<xml><xml> Especifica un archivo XML para el que generar un esquema.Specifies an XML file to generate a schema for.
<xdr><xdr> Especifica un archivo XDR para el que generar un esquema.Specifies an XDR file to generate a schema for.

Para generar un archivo de código, utilice el elemento <generateClasses>.To generate a code file, use the <generateClasses> element. En el siguiente ejemplo se genera un archivo de código.The following example generates a code file. Observe que se muestran también dos atributos que permiten establecer el lenguaje de programación y el espacio de nombres del archivo generado.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 -->

Entre las opciones que se pueden establecer para el elemento <generateClasses> se incluyen las siguientes.Options you can set for the <generateClasses> element include the following.

ElementoElement DescripciónDescription
<element><element> Especifica un elemento del archivo .xsd para el que generar código.Specifies an element in the .xsd file to generate code for.
<schemaImporterExtensions><schemaImporterExtensions> Especifica un tipo derivado de la clase SchemaImporterExtension.Specifies a type derived from the SchemaImporterExtension class.
<schema><schema> Especifica un archivo de esquema XML para el que generar un código.Specifies a XML Schema file to generate code for. Se pueden especificar varios archivos de esquema XML con varios elementos <schema>.Multiple XML Schema files can be specified using multiple <schema> elements.

En la siguiente tabla se muestran los atributos que también pueden utilizarse con el elemento <generateClasses>.The following table shows the attributes that can also be used with the <generateClasses> element.

AtributoAttribute DescripciónDescription
lenguajelanguage Especifica el lenguaje de programación que se utiliza.Specifies the programming language to use. Se puede elegir entre CS (C#, que es el valor predeterminado), VB (Visual Basic), JS (JScript) o VJS (Visual J#).Choose from CS (C#, the default), VB (Visual Basic), JS (JScript), or VJS (Visual J#). También se puede especificar un nombre completo para una clase que implemente CodeDomProvider.You can also specify a fully qualified name for a class that implements CodeDomProvider.
namespacenamespace Especifica el espacio de nombres del código generado.Specifies the namespace for the generated code. El espacio de nombres debe ajustarse a los estándares CLR (por ejemplo, no debe incluir espacios ni caracteres de barra diagonal inversa).The namespace must conform to CLR standards (for example, no spaces or backslash characters).
opcionesoptions Uno de los siguientes valores: none, properties (genera propiedades en lugar de campos públicos), order o enableDataBinding (vea los modificadores /order y /enableDataBinding en la sección Opciones de archivos XSD anterior).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.

También se puede controlar la forma en que se genera el código DataSet mediante el uso del elemento <generateDataSet>.You can also control how DataSet code is generated by using the <generateDataSet> element. El siguiente XML especifica que el código generado utiliza DataSet estructuras (como la clase DataTable) para crear Visual Basic código para un elemento especificado.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. Las estructuras de DataSet generadas admitirán consultas 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>

Entre las opciones que se pueden establecer para el elemento <generateDataSet> se incluyen las siguientes.Options you can set for the <generateDataSet> element include the following.

ElementoElement DescripciónDescription
<schema><schema> Especifica un archivo de esquema XML para el que generar un código.Specifies an XML Schema file to generate code for. Se pueden especificar varios archivos de esquema XML con varios elementos <schema>.Multiple XML Schema files can be specified using multiple <schema> elements.

En la siguiente tabla se muestran los atributos que también pueden utilizarse con el elemento <generateDataSet>.The following table shows the attributes that can be used with the <generateDataSet> element.

AtributoAttribute DescripciónDescription
enableLinqDataSetenableLinqDataSet Especifica que el Conjunto de datos generado se puede consultar utilizando LINQ a Conjunto de datos.Specifies that the generated DataSet can be queried against using LINQ to DataSet. El valor predeterminado es false.The default value is false.
lenguajelanguage Especifica el lenguaje de programación que se utiliza.Specifies the programming language to use. Se puede elegir entre CS (C#, que es el valor predeterminado), VB (Visual Basic), JS (JScript) o VJS (Visual J#).Choose from CS (C#, the default), VB (Visual Basic), JS (JScript), or VJS (Visual J#). También se puede especificar un nombre completo para una clase que implemente CodeDomProvider.You can also specify a fully qualified name for a class that implements CodeDomProvider.
namespacenamespace Especifica el espacio de nombres del código generado.Specifies the namespace for the generated code. El espacio de nombres debe ajustarse a los estándares CLR (por ejemplo, no debe incluir espacios ni caracteres de barra diagonal inversa).The namespace must conform to CLR standards (for example, no spaces or backslash characters).

Hay atributos que pueden establecerse en el elemento <xsd> de nivel superior.There are attributes that you can set on the top level <xsd> element. Estas opciones pueden utilizarse con cualquiera de los elementos secundarios (<generateClasses>,<generateSchemas> o ).These options can be used with any of the child elements (<generateSchemas>, <generateClasses> or <generateDataSet>). El siguiente código XML genera código para un elemento denominado "IDItems" del directorio de resultados denominado "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>

En la siguiente tabla se muestran los atributos que también pueden utilizarse con el elemento <xsd>.The following table shows the attributes that can also be used with the <xsd> element.

AtributoAttribute DescripciónDescription
salidaoutput Nombre del directorio donde se colocará el esquema o archivo de código generado.The name of a directory where the generated schema or code file will be placed.
nologonologo Suprime la pancarta.Suppresses the banner. Se establece en true o false.Set to true or false.
ayudahelp Muestra las opciones y la sintaxis de los comandos para la herramienta.Displays command syntax and options for the tool. Se establece en true o false.Set to true or false.

EjemplosExamples

El comando siguiente genera un esquema XML a partir de myFile.xdr y lo guarda en el directorio actual.The following command generates an XML schema from myFile.xdr and saves it to the current directory.

xsd myFile.xdr

El comando siguiente genera un esquema XML a partir de myFile.xml y lo guarda en el directorio especificado.The following command generates an XML schema from myFile.xml and saves it to the specified directory.

xsd myFile.xml /outputdir:myOutputDir

El siguiente comando genera un conjunto de datos correspondiente al esquema especificado en el lenguaje C# y guarda estos datos como XSDSchemaFile.cs en el directorio actual.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

El comando siguiente genera esquemas XML para todos los tipos del ensamblado myAssembly.dll, y los guarda como schema0.xsd en el directorio actual.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

Vea tambiénSee also