我正在使用 XML Data Binding Wizard
在 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
-组,不会有<Values>
-tag,XML 文件将无法通过 XSD
验证.如果接口(interface)提供了“添加”Values
的方法,这可能不会成为问题。 -标签。
是否有处理此问题的标准方法,或者我是否错误地使用了生成的代码?
简单地说,是否有任何方法,变通或其他方法,使用来自 Data Binding Wizard
的代码, 产生以下 XML
(这是在没有子节点时使用上述模式进行验证所需要的),给定 HeaderType
, ValuesType
和 EventsType
是复杂类型:
<MyReport>
<Header />
<Values />
<Events />
</MyReport>
(我知道还有其他类似的问题,例如 <xs:sequence>
生成的代码没有在最终的 XML
文件中强制执行正确的顺序,但至少对于那个问题,只需插入子顺序正确。我仍然认为如果 Embarcadero
提供一个完整的界面会很好,它会考虑更多这些功能。)
最佳答案
不确定是否理解,但也许您正在寻找的是: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>
告诉我是否可以。
关于xml - 使用 Delphi XML 数据绑定(bind)向导时不存在必需的标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12674592/