我正在使用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提供一个完整的界面会更好,这会考虑更多这些功能。)
答案 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>
告诉我它是否可以。