2013-02-13 26 views
7

công cụ xsd.exe tạo ra các lớp cho tệp xsd đã cho. Nó tuân theo một mẫu để đặt tên kiểu. Ví dụ:Chúng ta có thể kiểm soát tên kiểu trong công cụ xsd.exe được tạo ra lớp

<Students> 
    <Student Name="A" RollNo="1" Address="Some Address"> 
    <Department Id="20" Name="CSE"/> 
    </Student> 
</Students> 

xsd.exe /c Students.xsd 

Tệp Students.cs được tạo. Nếu chúng ta thấy loại cho các yếu tố

Element  Type Name 
Students Students 
Student  StudentsStudent 
Department StudentsStudentDepartment 

Nó tạo kiểu bằng cách đặt trước tên phần tử gốc nếu phần tử là con. Chúng tôi có thể kiểm soát tên này không? Tôi cần tên kiểu giống như tên phần tử. Sinh viên => Sinh viên, Bộ => Bộ

Cảm ơn trước

Trả lời

16

Nói chung, người ta không thể tùy chỉnh tên của các lớp được tạo ra khi sử dụng xsd.exe - không giống như cơ chế sẵn ở nơi khác, cho ví dụ người dùng JAXB thông qua tệp ràng buộc JAXB tùy chỉnh.

Tuy nhiên, đối với xsd.exe, tên lớp được tạo phụ thuộc vào kiểu tác giả. Những gì bạn mô tả, được tạo ra khi các tác giả phong cách là tuân thủ QTI đến "Nga búp bê" tức là như sau:

<?xml version="1.0" encoding="utf-8"?> 
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)--> 
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="Students"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element name="Student"> 
      <xsd:complexType> 
      <xsd:sequence> 
       <xsd:element name="Department"> 
       <xsd:complexType> 
        <xsd:attribute name="Id" type="xsd:unsignedByte" use="required" /> 
        <xsd:attribute name="Name" type="xsd:string" use="required" /> 
       </xsd:complexType> 
       </xsd:element> 
      </xsd:sequence> 
      <xsd:attribute name="Name" type="xsd:string" use="required" /> 
      <xsd:attribute name="RollNo" type="xsd:unsignedByte" use="required" /> 
      <xsd:attribute name="Address" type="xsd:string" use="required" /> 
      </xsd:complexType> 
     </xsd:element> 
     </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 

Nếu bạn thay đổi phong cách của mình cho một cái gì đó khác nhau (điều này được gọi là Blind Venetian):

<?xml version="1.0" encoding="utf-8"?> 
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)--> 
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="Students" type="Students"/> 
    <xsd:complexType name="Students"> 
     <xsd:sequence> 
      <xsd:element name="Student" type="Student"/> 
     </xsd:sequence> 
    </xsd:complexType> 
    <xsd:complexType name="Student"> 
     <xsd:sequence> 
      <xsd:element name="Department" type="Department"/> 
     </xsd:sequence> 
     <xsd:attribute name="Name" type="xsd:string" use="required"/> 
     <xsd:attribute name="RollNo" type="xsd:unsignedByte" use="required"/> 
     <xsd:attribute name="Address" type="xsd:string" use="required"/> 
    </xsd:complexType> 
    <xsd:complexType name="Department"> 
     <xsd:attribute name="Id" type="xsd:unsignedByte" use="required"/> 
     <xsd:attribute name="Name" type="xsd:string" use="required"/> 
    </xsd:complexType> 
</xsd:schema> 

Bạn sẽ nhận được các lớp này được tạo ra:

enter image description here