Compartir a través de


Herramienta de definición de esquema XML (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.

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]

Argumento

Argumento Descripción

file.extension

Especifica el archivo de entrada que se desea convertir. La extensión debe ser alguna de las siguientes: .xdr, .xml, .xsd, .dll o .exe.

Si se especifica un archivo de esquema XDR (extensión .xdr), Xsd.exe convierte el esquema XDR en un esquema XSD. El archivo de resultados tiene el mismo nombre que el del esquema XDR, pero con la extensión .xsd.

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. El archivo de resultados tiene el mismo nombre que el archivo XML, pero con la extensión .xsd.

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.

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. Se puede utilizar la opción /type para especificar los tipos para los que se generan esquemas. Los esquemas de salida se denominan schema0.xsd, schema1.xsd, etc. Xsd.exe genera varios esquemas sólo si los tipos dados especifican un espacio de nombres utilizando el atributo personalizado XMLRoot.

Opciones generales

Opción Descripción

/h[elp]

Muestra la sintaxis de comandos y opciones para la herramienta.

/o[utputdir]:directory

Especifica el directorio de los archivos de resultados. Este argumento sólo puede aparecer una vez. El valor predeterminado es el directorio actual.

/?

Muestra la sintaxis de comandos y opciones para la herramienta.

/P[arameters]:file.xml

Lee las opciones de los distintos modos de operación desde el archivo .xml especificado. La forma abreviada es '/p:'. Para obtener más información, vea la sección Comentarios que se muestra más adelante.

Opciones de archivos XSD

Se debe especificar sólo una de las opciones siguientes de archivos .xsd.

Opción Descripción

/c[lasses]

Genera clases que corresponden al esquema especificado. Para leer datos XML del objeto, se debe utilizar el método System.Xml.Serialization.XmlSerializer.Deserializer.

/d[ataset]

Genera una clase derivada de DataSet que corresponde al esquema especificado. Para leer datos XML de la clase derivada, se debe utilizar el método System.Data.DataSet.ReadXml.

También se puede especificar cualquiera de las opciones siguientes de archivos .xsd.

Opción Descripción

/e[lement]:element

Especifica el elemento del esquema para el que se genera código. De forma predeterminada se escriben todos los elementos. Este argumento se puede especificar varias veces.

/enableDataBinding

Implementa la interfaz INotifyPropertyChanged en todos los tipos generados para habilitar el enlace de datos. La forma abreviada es '/edb'.

/enableLinqDataSet

(Forma abreviada: /eld.) Especifica que el Conjunto de datos generado se puede consultar utilizando . Esta opción se utiliza cuando también se especifica la opción /dataset. Para obtener más información, vea LINQ to DataSet Overview y Querying Typed DataSets. Para obtener información general acerca de la utilización de LINQ, vea Language-Integrated Query (LINQ).

/f[ields]

Genera campos en lugar de propiedades. De manera predeterminada, se generan propiedades.

/l[anguage]:language

Especifica el lenguaje de programación que se utiliza. Se puede elegir entre CS (C#, que es el valor predeterminado), VB (Visual Basic), JS (JScript) o VJS (Visual J#). También se puede especificar un nombre completo para una clase que implemente System.CodeDom.Compiler.CodeDomProvider.

/n[amespace]:namespace

Especifica el espacio de nombres del motor en tiempo de ejecución para los tipos generados. El espacio de nombres predeterminado es Schemas.

/nologo

Suprime la pancarta.

/order

Genera identificadores de orden explícitos en todos los miembros de partícula.

/o[ut]:directoryName

Especifica el directorio de resultados para colocar los archivos. El valor predeterminado es el directorio actual.

/u[ri]:uri

Especifica el identificador URI de los elementos del esquema para el que se genera código. Este identificador URI, si existe, se aplica a todos los elementos especificados con la opción /element.

Opciones de archivos DLL y EXE

Opción Descripción

/t[ype]:typename

Especifica el nombre del tipo para el que se crea un esquema. Se pueden especificar varios argumentos de tipo. Si el argumento typename no especifica un espacio de nombres, Xsd.exe busca todos los tipos del ensamblado con el tipo especificado. Si el argumento typename especifica un espacio de nombres, sólo se busca ese tipo. Si el argumento typename termina con un asterisco (*), la herramienta busca todos los tipos que empiezan con la cadena que precede a este carácter. Si se omite la opción /type, Xsd.exe genera esquemas para todos los tipos del ensamblado.

Comentarios

En la siguiente tabla se muestran las operaciones que realiza Xsd.exe.

  • XDR a XSD
    Genera un esquema XML a partir de un archivo de esquema reducido de datos XML. XDR es un formato de esquemas anterior basado en XML.
  • XML a XSD
    Genera un esquema XML a partir de un archivo XML.
  • XSD a DataSet
    Genera clases DataSet de Common Language Runtime a partir de un archivo de esquema XSD. Las clases generadas proporcionan un modelo de objetos completo para datos XML regulares.
  • XSD a clases
    Genera clases de motor en tiempo de ejecución a partir de un archivo de esquema XSD. Las clases generadas se pueden usar conjuntamente con System.Xml.Serialization.XmlSerializer para leer y escribir código XML que sigue al esquema.
  • Clases a XSD
    Genera un esquema XML a partir de un tipo o tipos de un archivo de ensamblado de motor en tiempo de ejecución. El esquema generado define el formato XML utilizado por System.Xml.Serialization.XmlSerializer.

Xsd.exe sólo permite manipular esquemas XML que siguen al lenguaje de definición de esquemas XML (XSD) propuesto por el consorcio World Wide Web (W3C). Para obtener más información sobre la propuesta XSD (lenguaje de definición de esquemas XML) o la norma XML, vea http://w3.org.

Establecer opciones con un archivo XML

El uso del modificador /parameters permite especificar un único archivo XML que establece distintas opciones. Las opciones que pueden establecerse dependen de la forma en que se esté utilizando la herramienta XSD.exe. Entre estas opciones se incluyen la generación de esquemas, archivos de código o archivos de código que incluyen características DataSet. 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. En el siguiente XML se muestra la forma de utilizar el elemento <generateSchemas> con un archivo ejecutable especificado:

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

Si el código XML anterior estuviese incluido en un archivo denominado GenerateSchemas.xml, habría que utilizar el modificador /parameters escribiendo lo siguiente en la línea de comandos y presionando la tecla INTRO:

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:

<!-- This is in a file named GenerateSchemaFromType.xml. -->
<xsd xmlns='https://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. Escriba lo siguiente en el símbolo del sistema (se presupone que el nombre del archivo XML es GenerateSchemaFromType.xml):

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

Sólo se debe especificar una de las siguientes opciones para el elemento <generateSchemas>.

Elemento Descripción

<assembly>

Especifica el ensamblado a partir del cual generar el esquema.

<type>

Especifica un tipo situado en un ensamblado para el que generar un esquema.

<xml>

Especifica un archivo XML para el que generar un esquema.

<xdr>

Especifica un archivo XDR para el que generar un esquema.

Para generar un archivo de código, utilice el elemento <generateClasses>. En el siguiente ejemplo se genera un archivo de código. Observe que se muestran también dos atributos que permiten establecer el lenguaje de programación y el espacio de nombres del archivo generado.

<xsd xmlns='https://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.

Elemento Descripción

<element>

Especifica un elemento del archivo .xsd para el que generar código.

<schemaImporterExtensions>

Especifica un tipo derivado de la clase SchemaImporterExtension.

<schema>

Especifica un archivo de esquema XML para el que generar un código. Se pueden especificar varios archivos de esquema XML usando varios elementos de <schema>.

En la siguiente tabla se muestran los atributos que también pueden utilizarse con el elemento <generateClasses>.

Atributo Descripción

language

Especifica el lenguaje de programación que se utiliza. Se puede elegir entre CS (C#, que es el valor predeterminado), VB (Visual Basic), JS (JScript) o VJS (Visual J#). También se puede especificar un nombre completo para una clase que implemente CodeDomProvider.

namespace

Especifica el espacio de nombres del código generado. El espacio de nombres debe ajustarse a los estándares CLR (por ejemplo, no debe incluir espacios ni caracteres de barra diagonal inversa).

options

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

También se puede controlar la forma en que se genera el código DataSet mediante el uso del elemento <generateDataSets>. En el siguiente código XML se especifica que el código generado utilice estructuras DataSet (como la clase DataTable) para crear código de Visual Basic para un elemento especificado. Las estructuras de DataSet generadas admitirán consultas LINQ.

<xsd xmlns='https://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.

Elemento Descripción

<schema>

Especifica un archivo de esquema XML para el que generar un código. Se pueden especificar varios archivos de esquema XML usando varios elementos de <schema>.

En la siguiente tabla se muestran los atributos que también pueden utilizarse con el elemento <generateDataSet>.

Atributo Descripción

enableLinqDataSet

Especifica que el Conjunto de datos generado se puede consultar utilizando . El valor predeterminado es false.

language

Especifica el lenguaje de programación que se utiliza. Se puede elegir entre CS (C#, que es el valor predeterminado), VB (Visual Basic), JS (JScript) o VJS (Visual J#). También se puede especificar un nombre completo para una clase que implemente CodeDomProvider.

namespace

Especifica el espacio de nombres del código generado. El espacio de nombres debe ajustarse a los estándares CLR (por ejemplo, no debe incluir espacios ni caracteres de barra diagonal inversa).

Hay atributos que pueden establecerse en el elemento <xsd> de nivel superior. Estas opciones pueden utilizarse con cualquiera de los elementos secundarios (<generateSchemas>, <generateClasses> o <generateDataSet>). El siguiente código XML genera código para un elemento denominado "IDItems" del directorio de resultados denominado "MyOutputDirectory".

<xsd xmlns='https://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>.

Atributo Descripción

output

Nombre del directorio donde se colocará el esquema o archivo de código generado.

nologo

Suprime la pancarta. Se establece en true o false.

help

Muestra la sintaxis de comandos y opciones para la herramienta. Se establece en true o false.

Ejemplos

El comando siguiente genera un esquema XML a partir de myFile.xdr y lo guarda en el directorio actual.

xsd myFile.xdr 

El comando siguiente genera un esquema XML a partir de myFile.xml y lo guarda en el directorio especificado.

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.

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.

xsd myAssembly.dll  

Consulte también

Referencia

System.Xml.Serialization.XmlSerializer.Deserializer
DataSet
System.Xml.Serialization.XmlSerializer

Otros recursos

.NET Framework Tools
SDK Command Prompt
LINQ to DataSet Overview
Querying Typed DataSets
Language-Integrated Query (LINQ)

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.