2009-07-05 33 views
6

Tôi đang sử dụng lệnh sau để tạo tệp xsd liên quan từ tệp XML đầu vào của tôi - response.xml, sự nhầm lẫn của tôi là (1) tại sao có hai đầu ra tệp xsd (response.xsd và response_app1.xsd), tôi nghĩ có nên chỉ một trong số chúng được tạo ra? (2) Nếu tôi cần phải tạo ra tập tin lớp C# bằng cách sử dụng xsd/lớp học, mà xsd tập tin tôi nên sử dụng?Tại sao XSD.EXE tạo hai tệp .XSD và cách sử dụng chúng?

Môi trường của tôi: 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'. 

Dưới đây là tập tin của tôi đầu vào XML và ouput file XSD,

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

EDIT 1:

khi tôi thực hiện response.xsd xsd để tạo ra liên quan đến lớp C#, có lỗi tin nhắn và đây là kết quả chi tiết,

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

cảm ơn trước, George

Trả lời

1

IIRC, bạn sử dụng cả hai, người ta có lẽ sẽ tham chiếu người kia.

+0

@leppie, 1. khi tôi thực hiện response.xsd xsd để tạo ra liên quan đến lớp học C#, có thông báo lỗi. Tôi đã đăng trong bài viết gốc của tôi EDIT 1 phần. Bất kỳ ý tưởng gì là sai? 2. "người ta có lẽ sẽ tham khảo cái kia" - làm sao bạn chứng minh điều này? – George2

2

Lý do tại sao hai tệp được tạo ra là do XML của bạn chứa hai không gian tên XML; mỗi XSD được tạo ra tương ứng với một không gian tên. Một cho không gian tên phong bì xà phòng nhập khẩu không gian tên mycorp (mà bạn có thể thấy từ phần tử xs: import).

+0

Sự nhầm lẫn của tôi là, tại sao một tệp XSD chỉ có thể chứa một vùng tên? – George2

+0

Một sự nhầm lẫn khác là có 4 không gian tên, chúng là 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" và không gian tên mycorp, tại sao bạn nói chỉ có 2 không gian tên? – George2

+1

Trong khi các không gian tên khác được khai báo trong tài liệu XML của bạn, thì không có phần tử nào thực sự sử dụng chúng. – Jacob

5

George,

Để tạo ra các lớp từ những tập tin này, bạn phải liệt kê cả trên dòng lệnh:

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

Nó đã được một cách chính xác nói rằng hai tập tin XSD là vì có hai không gian tên XML trong tệp XML gốc của bạn. BTW, tôi đoán một chút ở đây vì bạn không đăng tệp XML.

+0

Cảm ơn, Tại sao có hai tệp xsd được tạo khác với một tệp? Và các chức năng khác nhau của hai tập tin là gì? – George2

+0

BTW: giải pháp của bạn hoạt động. Bất kỳ ý kiến ​​hoặc ý tưởng để quesiton trên của tôi? :-) – George2

-2

Vâng, loại bỏ các không gian tên từ tập tin XML và tạo ra nó, bạn sẽ nhận được tập tin XSD đơn

Các vấn đề liên quan