Nach diesem ähnlichen question gestern habe ich eine andere Frage bezüglich der Vererbung in XML-Schema und XJC-Bindungen.XJC Java Klassengeneration für <xs:choice> Element, das nicht unbegrenzt ist
Gegeben das folgende Auswahlelement, so dass Book und Journal einen gemeinsamen übergeordneten Typ haben (Publication
).
<xsd:choice >
<xsd:element name="Book" type="Book" />
<xsd:element name="Journal" type="Journal" />
</xsd:choice>
Die Java-Klasse Eigenschaften, die erzeugt werden, sind wie:
private Book book;
private Journal journal;
Da <xsd:choice>
bedeutet, dass es sein könnte entweder ein Book
oder ein Journal
I
private Publication bookOrJournal;
bevorzugen würde, wenn ich hatte eine Liste von Publikationen durch Setzen maxOccurs="unbounded"
in der Wahl-Element, würde es so funktionieren und ich würde
private List<Publication> bookOrJournal;
Wie erreicht man dies mit einer Nicht-Sammeleigenschaft?
Natürlich können diese XJC-Anweisungen auch extern in der XSD in ihrer eigenen Datei gespeichert werden, was eine klarere Trennung der Probleme darstellt. –
Entschuldigung, das hat nicht wie erwartet funktioniert. Wenn Sie kommentieren, wie Sie es taten, bekomme ich einen XJC-Fehler, dass XJC diese Anpassung nicht berücksichtigen konnte, weil sie inkonsistent oder nicht dem richtigen Element zugewiesen ist (kann den Fehler nicht angeben, weil mein XJC deutsch zu sprechen scheint ;-)). Wenn ich die Anmerkung z. Das Book-Element als nur die Book-Eigenschaft wird in 'publication' umbenannt, aber es gibt noch zwei Eigenschaften,' publication' und 'journal'. – rainer198
@ rainer198 Ich habe die vollständige XSD-Definition hinzugefügt, die ich verwendet habe. Sehen Sie, ob Sie damit Ihr Problem überhaupt beheben können. –