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

时间:2012-10-01 13:48:52

标签: xml delphi xsd delphi-xe2

我正在使用Delphi XE2中的XML数据绑定向导。 架构需要此类型的标签:

<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> - 标记,并且XML文件将无法针对XSD进行验证。如果接口提供了一种“添加”Values-tag的方法,那么这可能不会成为问题。

是否有标准的处理方法,或者我是否正确使用生成的代码?

简单地,是否有任何方式,解决方法或其他方式,使用数据绑定向导中的代码,生成以下XML(这是什么需要在没有子节点时使用上述模式进行验证),给定HeaderType,ValuesType和EventsType是complexType:

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

(我知道还有其他类似的问题,比如<xs:sequence>生成的代码没有在最终的XML文件中强制执行正确的顺序,但至少对于那个问题,只需要插入孩子们的顺序正确。我仍然认为如果Embarcadero提供一个完整的界面会更好,这会考虑更多这些功能。)

1 个答案:

答案 0 :(得分:1)

不确定理解,但也许您正在寻找的是:使用=&#34;可选&#34;

<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>

告诉我它是否可以。