Schema zur Beschreibung einer relationalen Tabellenstruktur

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Schema zur Beschreibung einer relationalen Tabellenstruktur

    Hallo,

    ich bin leider noch ein Schema Neuling und möchte eine xsd-Datei erstellen, die mir den folgenden XML-Code validiert:

    Quellcode

    1. <xmldocdata xsi:noNamespaceSchemaLocation="test.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    2. <tables>
    3. <table table_name="t1">
    4. <fields>
    5. <field field_name="t1f1" field_kind="integer" field_Size="0"/>
    6. <field field_name="t1f2" field_kind="string" field_Size="1024"/>
    7. </fields>
    8. <rows>
    9. <row t1f1="42" t1f2="abc"/>
    10. </rows>
    11. </table>
    12. <table table_name="t2">
    13. <fields>
    14. <field field_name="t2f1" field_kind="float" field_Size="0"/>
    15. <field field_name="t2f2" field_kind="string" field_Size="1024"/>
    16. <field field_name="t2f3" field_kind="integer" field_Size="0"/>
    17. </fields>
    18. <rows>
    19. <row t2f1="47,11" t2f2="def" t2f3="123"/>
    20. </rows>
    21. </table>
    22. <!-- ... -->
    23. </tables>
    24. </xmldocdata>
    Alles anzeigen


    Dabei handelt es sich nebenbei um eine Ausgabe der Object-Relational-Mappers (OR-Mapper) tiOPF (falls den jemand kennt), der neben dem Mapping von Datenbanken auch einen XML-Layer anbietet. OR-Mapper speichern ja von Natur aus komplexe Objektstrukturen in reationalen Datenbanken, und daher spuckt tiOPF auch XML aus, welches vom Aufbau her einer relationalen Datenbank mit Tabellen und Feldern ähnelt.

    Nun zu meinem Problem:
    Es gelingt mir zwar den Aufbau der Tabellen, Felder und Zeilen allgemein in Schema zu beschreiben, mein Ziel ist es jedoch, nur Tabellen mit konkret definierten Namen und Feldern zu beschreiben. Genauer gesagt möchte ich, dass das Schema im Element <tables> nur zwei <table>-Elemente zulässt: eines mit dem Namen "t1" sowie den Feldern "t1f1" und "t1f2" und eines mit dem Namen "t2" sowie den Feldern "t2f1", "t2f2" und "t2f3".

    Ich sehe zurzeit keine Möglichkeit dies mit Schema zu realisieren. Vielleicht kann mir hier ja jemand einen Tipp geben.

    Gruß
    oXmoX
  • Und wenn du im ComplexType von <xs:element name="tables"> ein <xs:choice> machst? Dann kannst du doch dort theoretisch 2 mal ein Element namens <xs:element name="tables"> definieren.
    Das eine Element hat ein Attribut "table_name" mit einem SimpleType, der nur "t1" zulässt und die dazugehörige ComplexType-Definition und
    das andere Element hat ein Attribut "table_name" mit einem SimpleType, der nur "t2" zulässt und die dazugehörige ComplexType-Definition.

    Die 2 verschiedenen ComplexType-Definitionen sollten dann festlegen, welche feld-Elemente vorkommen dürfen.

    Sollte gehen oder?