Подтвердить что ты не робот

Необходимые теги, отсутствующие при использовании Delphi XML Data Binding Wizard

Я использую мастер привязки данных XML в Delphi XE2. Для этой схемы требуются теги этого типа:

<xs:element name="MyReport" type="MyReportType" />
<xs:complexType name="MyReportType">
  <xs:all>
    <xs:element name="Header" type="HeaderType" />
    <xs:element name="Values" type="ValuesType" />
    <xs:element name="Events" type="EventsType" />
  </xs:all>
</xs:complexType>

Проблема заключается в том, что если я не добавляю никаких элементов, например. группа значений, не будет <Values> -tag, и XML файл не будет проверять проверку XSD. Вероятно, это не было бы проблемой, если бы интерфейс предоставлял метод "добавления" тега Values.

Есть ли стандартный способ обработки этого, или я использую сгенерированный код правильно?

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

<MyReport>
  <Header />
  <Values />
  <Events />
</MyReport> 

(Я знаю, что есть другие подобные проблемы, такие как код, сгенерированный <xs:sequence>, не применяющий правильный порядок в конечном XML файле, но, по крайней мере, для этого, есть обход, просто вставляя детей в правильный порядок. Я все еще думаю, было бы неплохо, если бы Embarcadero предоставил бы полный интерфейс, который учитывал бы все эти функции.)

4b9b3361

Ответ 1

Не уверен, что понял, но, возможно, вы ищете: use = "optional"

<xs:element name="MyReport" type="MyReportType" />
<xs:complexType name="MyReportType">
  <xs:all>
    <xs:element name="Header" type="HeaderType" use="optional" />
    <xs:element name="Values" type="ValuesType" use="optional" />
    <xs:element name="Events" type="EventsType" use="optional" />
  </xs:all>
</xs:complexType>

Скажи мне, хорошо ли это.