XML Schema und Ableitungen

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

  • XML Schema und Ableitungen

    Hallo,

    wahrscheinlich liegt eine Lösung hierzu bereits in den Tiefen des Forums, konnte aber nichts finden. Somit ...

    Hier ist die Datenstruktur die ich mittels Schema beschrieben haben müsste:

    Quellcode

    1. <?xml version='1.0' encoding='UTF-8'?>
    2. <RESULT_TABLE_TEST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Common-Baseline.xsd">
    3. <COL>
    4. <NAME>ID</NAME>
    5. <DATA>88</DATA>
    6. </COL>
    7. <COL>
    8. <NAME>DESCRIPTION</NAME>
    9. <DATA>SomeText1</DATA>
    10. </COL>
    11. <COL>
    12. <NAME>COUNT</NAME>
    13. <DATA>89</DATA>
    14. </COL>
    15. <COL>
    16. <NAME>VALUE</NAME>
    17. <DATA>SomeText2</DATA>
    18. </COL>
    19. <!--
    20. ...
    21. -->
    22. </RESULT_TABLE_TEST>
    Alles anzeigen



    Ich will das ich mit dem Namen "COL" unterschiedliche komplexe Typen abgeleitet von "TYPE_COL" in unterschiedlicher Reihenfolge verwenden kann (Hier im Beispiel unterscheidet sich DATA zwischen "string" und "integer").

    Das bisherige noch nicht funktionierende Schema (Common-Baseline.xsd):


    Quellcode

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    3. <xs:element name="RESULT_TABLE_TEST" type="TYPE_COLS"/>
    4. <xs:complexType name="TYPE_COLS">
    5. <xs:sequence>
    6. <xs:element name="COL" type="TYPE_COL_INTEGER"/>
    7. <xs:element name="COL" type="TYPE_COL_STRING"/>
    8. </xs:sequence>
    9. </xs:complexType>
    10. <xs:complexType name="TYPE_COL" abstract="true">
    11. <xs:all/>
    12. </xs:complexType>
    13. <xs:complexType name="TYPE_COL_STRING">
    14. <xs:complexContent>
    15. <xs:extension base="TYPE_COL">
    16. <xs:all>
    17. <xs:element name="DATA" type="xs:string"/>
    18. <xs:element name="NAME" type="xs:string"/>
    19. </xs:all>
    20. </xs:extension>
    21. </xs:complexContent>
    22. </xs:complexType>
    23. <xs:complexType name="TYPE_COL_INTEGER">
    24. <xs:complexContent>
    25. <xs:extension base="TYPE_COL">
    26. <xs:all>
    27. <xs:element name="DATA" type="xs:integer"/>
    28. <xs:element name="NAME" type="xs:string"/>
    29. </xs:all>
    30. </xs:extension>
    31. </xs:complexContent>
    32. </xs:complexType>
    33. </xs:schema>
    Alles anzeigen



    Nehme ich <xs:element name="COL" type="TYPE_COL_INTEGER"/> oder <xs:element name="COL" type="TYPE_COL_STRING"/> raus und reduziere das Beispiel auf entweder "integer" oder "string", dann funktionierts. Aber das ist leider nicht das was ich brauche.

    Hat jemand eine Idee und kann mir da helfen ?

    Danke, Rob.