使用 Delphi XML 数据绑定向导时不存在必需的标记

我正在使用 Delphi XE2中的 XML Data Binding Wizard。 模式具有这种类型的必需标记:

<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-group 添加任何元素,就不会有 <Values>-tag,XML 文件将无法通过 XSD验证。如果接口提供了“添加”Values标记的方法,那么这可能不是问题。

是否有一个标准的方法来处理这个问题,或者我是否正确地使用了生成的代码?

简单地说,如果 HeaderTypeValuesTypeEventsType是复杂类型的,那么使用 Data Binding Wizard的代码生成以下 XML(这是在没有子节点的情况下使用上述模式进行验证所需要的) ,是否有 任何的方法、解决方法或其他方法:

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

(我知道还有其他类似的问题,比如 <xs:sequence>生成的代码在最终的 XML-file 中没有执行正确的顺序,但是至少对于这个问题,有一个解决方案,只需将子代插入到正确的顺序中。我仍然认为如果 Embarcadero能够提供一个完整的接口就好了,它能够考虑到更多的这些特性。)

2037 次浏览

Not sure to understand but maybe what you are looking for is : 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>

Tell me if it's okay.