99

我正在使用XML Data Binding Wizardin Delphi XE2。架构具有这种类型的必需标签:

<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(当没有子节点时使用上述模式进行验证所需要的),给定的HeaderTypeValuesType并且EventsType是 complexType :

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

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

4

1 回答 1

1

不确定是否理解,但也许您正在寻找的是: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>

告诉我是否还好。

于 2017-02-17T09:18:55.320 回答