简体   繁体   English

为什么XSD.EXE创建两个.XSD文件,以及如何使用它们?

[英]Why does XSD.EXE Create Two .XSD Files, and How to Use Them?

I am using the following command to generate related xsd file from my input XML file -- response.xml, my confusion is (1) why there are two xsd file output (response.xsd and response_app1.xsd), I think there should be only one of them generated? 我使用以下命令从我的输入XML文件生成相关的xsd文件 - response.xml,我的困惑是(1)为什么有两个xsd文件输出(response.xsd和response_app1.xsd),我认为应该有只生成其中一个? (2) If I need to generate C# class file by using xsd /classes, which xsd file should I use? (2)如果我需要使用xsd / classes生成C#类文件,我应该使用哪个xsd文件?

My environment: VSTS 2008 + C# + .Net 3.5. 我的环境: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'.

Here is my input XML file and ouput XSD files, 这是我的输入XML文件和输出XSD文件,

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

EDIT 1: 编辑1:

when I execute xsd response.xsd to generate related C# class, there are error messages, and here are the detailed output, 当我执行xsd response.xsd生成相关的C#类时,有错误信息,这里是详细的输出,

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 /?".

thanks in advance, George 乔治,提前谢谢

George, 乔治,

To generate classes from these files, you must list both on the command line: 要从这些文件生成类,必须在命令行上列出两个:

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

It has already been correctly said that the two .xsd files are because there were two XML namespaces in your original XML file. 已经正确地说两个.xsd文件是因为原始XML文件中有两个XML命名空间。 BTW, I'm guessing a little here because you did not post the XML file. 顺便说一句,我在这里猜一点,因为你没有发布XML文件。

The reason why two files are getting generated is because your XML contains two XML namespaces; 生成两个文件的原因是因为您的XML包含两个XML命名空间; each generated XSD corresponds to a namespace. 每个生成的XSD对应一个命名空间。 The one for the soap envelope namespace imports the mycorp namespace (which you can see from the xs:import element). soap envelope命名空间的名称空间导入mycorp命名空间(可以从xs:import元素中看到)。

IIRC,你使用两者,一个可能会引用另一个。

是的,从XML文件中删除命名空间并生成它,您将获得单个XSD文件

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM