Как указать имена для свойств при использовании XSD.exe?

Я пишу схему XSD, в которой есть элемент, описывающий файловую структуру:

<xs:schema
  ...
>
  <xs:element name="FileStructure">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Folder" minOccurs="1" maxOccurs="1" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Folder">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Folder" minOccurs="0" maxOccurs="unbounded" />
        <xs:element ref="File" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  <xs:element name="AccessionFile">
    <xs:complexType mixed="true">
      ...
    </xs:complexType>
  </xs:element>
</xs:schema>

Когда я запускаю это через XSD.exe, я получаю классы для FileStructure, Folder и File. FileStructure имеет свойство Folder, которое содержит массив папок; Папка имеет свойство Folder1, которое содержит массив папок.

Я не хочу, чтобы свойство в папке называлось Folder1. Как указать имена для свойств и типов при использовании XSD.exe?


person Simon    schedule 23.11.2009    source источник


Ответы (1)


Вы не можете - XSD сделает это за вас. Вы не можете повлиять на то, как в конечном итоге будет выглядеть код C#.

Что вы можете попробовать сделать, так это использовать типы в XSD вместо определения всего встроенного. Например. определите <xs:complexType name="FolderType">, а затем используйте это в своем основном определении:

  <xs:complexType name="FolderType">
    <xs:sequence>
      <xs:element name="Folder" type="FolderType" minOccurs="0" maxOccurs="unbounded" />
      <xs:element ref="File" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required" />
  </xs:complexType>

  <xs:sequence>
     <xs:element name="Folder" type="FolderType" minOccurs="1" maxOccurs="1" />
  </xs:sequence>

Возможно, это дает вам немного больше гибкости для именования, поскольку оно отделяет тип и его определение от фактического имени, используемого в качестве имени элемента.

Кроме того, в целом я считаю, что моя XML-схема легче для чтения и понимания и чище, когда я определяю вещи как явные типы (сложные или простые типы), а затем просто использую эти определенные типы вместо большого количества запутанных встроенных определений элементы и их встроенные типы.

person marc_s    schedule 23.11.2009