我正在使用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
-tag的方法,这可能不是问题。
有没有标准的方法来处理这个问题,或者我是不是错误地使用了生成的代码?
简单地说,,有没有什么方法可以使用Data Binding Wizard
中的代码来生成以下XML
(这是在没有子节点的情况下使用上面的模式进行验证所需的),假设HeaderType
、ValuesType
和EventsType
都是complexType:
<MyReport>
<Header />
<Values />
<Events />
</MyReport>
(我知道还有其他类似的问题,比如<xs:sequence>
生成的代码没有在最终的XML
-file中强制执行正确的顺序,但至少对于这个问题,可以通过简单地以正确的顺序插入子对象来解决这个问题。我仍然认为,如果Embarcadero
能提供一个完整的接口,考虑到更多的这些特性,那就太好了。)
发布于 2017-02-17 17:18:55
我不确定是否理解,但也许您正在寻找的是: 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>
如果可以告诉我。
https://stackoverflow.com/questions/12674592
复制相似问题