Ran*_*ter 81 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>-tag,并且XML文件将无法针对XSD进行验证.如果接口提供"添加"Values-tag的方法,这可能不会成为问题.
有没有一种标准的处理方法,或者我是否正确使用生成的代码?
简而言之,使用数据绑定向导中的代码,有没有办法,解决方法或其他方式产生以下XML(这是在没有子节点时使用上述模式进行验证所需的),给定HeaderType ,ValuesType和EventsType属于complexType:
<MyReport>
  <Header />
  <Values />
  <Events />
</MyReport> 
(我知道还有其他类似的问题,比如<xs:sequence>在最终的XML文件中没有强制执行正确的顺序而生成的代码,但至少对于那个问题,只需要按照正确的顺序插入子代就可以解决这个问题.我仍然如果Embarcadero提供一个完整的界面,考虑到更多的这些功能,那将会很好.)
不确定是否理解,但也许您正在寻找的是:use =“可选”
<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>
告诉我是否可以。