2009-07-05 8 views
6

Estoy usando el siguiente comando para generar un archivo xsd relacionado desde mi archivo XML de entrada - response.xml, mi confusión es (1) por qué hay dos archivos xsd de salida (response.xsd y response_app1.xsd), creo que hay debería ser solo uno de ellos generado? (2) Si necesito generar un archivo de clase C# utilizando xsd/classes, ¿qué archivo xsd debería usar?¿Por qué XSD.EXE crea dos archivos .XSD y cómo usarlos?

Mi entorno: VSTS 2008 + C# + .Net 3.5.

D:\>xsd response.xml 
Microsoft (R) Xml Schemas/DataTypes support utility 
[Microsoft (R) .NET Framework, Version 2.0.50727.3038] 
Copyright (C) Microsoft Corporation. All rights reserved. 
Writing file 'D:\response.xsd'. 

Aquí está mi archivo XML de entrada y de una salida archivos XSD,

http://www.mediafire.com/file/kzzoxw0zwgq/inputoutput.zip

EDIT 1:

cuando ejecuto response.xsd xsd para generar clase C# relacionados, hay errores mensajes, y aquí está la salida detallada,

D:\>xsd response.xsd /classes 
Microsoft (R) Xml Schemas/DataTypes support utility 
[Microsoft (R) .NET Framework, Version 2.0.50727.3038] 
Copyright (C) Microsoft Corporation. All rights reserved. 
Schema validation warning: The 'http://www.mycorp.com/Order/2009/05/mex:Items' e 
lement is not declared. Line 10, position 16. 

Warning: Schema could not be validated. Class generation may fail or may produce 
incorrect results. 

Error: Error generating classes for schema 'response'. 
    - The element 'http://www.mycorp.com/Order/2009/05/mex:Items' is missing. 

If you would like more help, please type "xsd /?". 

gracias de antemano, George

Respuesta

1

IIRC, si utiliza ambos, uno probablemente hará referencia al otro.

+0

@leppie, 1. cuando ejecuto response.xsd xsd para generar relacionados con la clase C#, hay mensajes de error. He publicado en mi publicación original la sección EDITAR 1. ¿Alguna idea de lo que está mal? 2. "uno probablemente hará referencia al otro", ¿cómo lo prueba? – George2

2

La razón por la cual se generan dos archivos se debe a que su XML contiene dos espacios de nombres XML; cada XSD generado corresponde a un espacio de nombres. El del espacio de nombres de sobres de jabón importa el espacio de nombres mycorp (que se puede ver en el elemento xs: import).

+0

Mi confusión es, ¿por qué un archivo XSD solo podría contener un espacio de nombres? – George2

+0

Otra confusión es que hay 4 espacios de nombres, son xmlns: soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns: xsd = "http://www.w3.org/2001/XMLSchema" xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" y espacio de nombres mycorp, ¿por qué dijiste que solo hay 2 espacios de nombres? – George2

+1

Mientras esos otros espacios de nombres se declaran en su documento XML, no hay elementos que realmente los utilicen. – Jacob

5

George,

para generar clases a partir de estos archivos, deberá anotar tanto en la línea de comandos:

D:\>xsd response.xsd response_app1.xsd /classes 

Ya ha sido correctamente dicho que los dos archivos son .xsd porque había dos espacios de nombres XML en su archivo XML original. Por cierto, estoy adivinando un poco aquí porque no publicaste el archivo XML.

+0

Gracias, ¿Por qué hay dos archivos xsd generados distintos de uno? ¿Y cuáles son las diferentes funciones de los dos archivos? – George2

+0

BTW: su solución funciona. ¿Algún comentario o idea a mi pregunta anterior? :-) – George2

-2

Sí, eliminar los espacios de nombres de archivo XML y generan ella, obtendrá archivo XSD sola

Cuestiones relacionadas