J'utilise le XML Data Binding Wizard
en Delphi XE2
. Le schéma a exigé des balises de ce type :
<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>
Le problème est que si je n'ajoute pas d'éléments, par exemple à l'élément Values
-groupe, il n'y aura pas de <Values>
-et le fichier XML ne sera pas validé par rapport à la balise XSD
. Cela ne poserait probablement pas de problème si l'interface fournissait une méthode pour "ajouter" l'option Values
-tag.
Existe-t-il une manière standard de gérer cela, ou est-ce que j'utilise le code généré de manière incorrecte ?
En clair Est-ce qu'il y a tout d'une manière ou d'une autre, en utilisant le code de l'interface utilisateur. Data Binding Wizard
pour obtenir le résultat suivant XML
(ce qui est nécessaire pour valider en utilisant le schéma ci-dessus quand il n'y a pas de nœuds enfants), étant donné que HeaderType
, ValuesType
y EventsType
sont de type complexe :
<MyReport>
<Header />
<Values />
<Events />
</MyReport>
(Je sais qu'il y a d'autres problèmes similaires, comme le code généré par <xs:sequence>
ne pas respecter l'ordre correct dans la finale XML
-mais au moins pour celui-là, il y a une solution de contournement en insérant simplement les enfants dans le bon ordre. Je pense toujours que ce serait bien si Embarcadero
fournirait une interface complète, qui tient compte d'un plus grand nombre de ces caractéristiques).