[XSD] Bedingte Elemente?

Danielku15

Erfahrenes Mitglied
Hallo.
Ich bin ziemlich neu im Gebiet Xml-Schemas und hab mich schon mal ein bisschen eingelesen. Ich möchte nämlich für mein Programm ein XML-Interface anbieten um DatenTypen hinzuzufügen. Jetzt habe ich mehrere Basisklassen. (MySqlDatatype, MySqlLengthType, MySqlDecimalType, MySqlExtendedLengthType, MySqlExtendedDecimalType). Und diese Basisklassen haben unterschiedliche Attribute. Jetzt wollte ich in meiner XML-Definition vorgeben dass sie diese Basisklassen als Attribut im Root-Node setzen können. Also:
<MySqlDatatype [baseClass="..."]>
Gut kein Problem. Ein optionales Attribut mit nem Simpletype welches enumeration Facets enthält. Jetzt will ich aber, sobald unterschiedliche baseClasses gesetzt sind, dass als ChildNodes weitere Elemente hinzugefügt werden können. Also wird MySqlLengthType als Basis gwählt, soll unter dem Root-Node (MySqlDatatype) zusätzlich der Tag Lenght hinzugefügt werden können. Also ne Art "Bedingte-Elemente" <Wenn BaseType gleich MySqlLengthType Dann ist LengthType als ChildNode möglich>

Geht das? Ich hab schon gesucht aber ich glaube mir fehleen einfach die richtigen Schlüsselworte um fündig zu werden. Ich hoffe ihr könnt mir helfen.

Gruß Daniel
 
Hallo,

ich wüsste nicht, dass das funktioniert was du da vor hast. was du allerdings machen könntest, dass du er es nicht im Attribut mit gibt, welche klasse er möchte, sondern du er es direkt als Element definieren kann.
 
Dann müsste ich aber mehrere Schemas Definieren, jeweils für eine Basisklasse eines. Ich möchte nicht dass der User auch noch suchen muss welchen Datentyp will ich und welches Schema benötige ich dafür. Da wäre es einfach praktischer gewesen das über ein Attribut zu setzen und dann die unterschiedlichen Tags zu erlauben.

Aber wenn das nicht geht, werde ich es so machen, dass diese Tags erlaubt sind. Diese werden beim Parsen einfach ignoriert, wenn die gewählte Basisklasse diese nicht benötigt.
 
Okay, wäre natürlich auch möglich und auch gar nicht so blöde :D. Denn zuletzt verwirr ich den User mit den Tags die nicht benötigt werden. Danke.
 
Zurück