XSD & XML (n:m Beziehung)

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

  • XSD & XML (n:m Beziehung)

    Ich wollte gerne eine relationale n:m Beziehung (mit 3. Tabelle "Verknpüfung") erstellen, bei dem Beispiel hier also n Studenten hören m Vorlesungen und anderesrum. Wie kann man in XML mit mehreren Fremdschlüsseln umgehen, sind dort überhaupt mehrere keyref Ausdrücke möglich ?

    Ich poste mal noch das Schema (was angeblich valid ist) und ein XML Sample
    --------------------------------------------------------------------------------------------------

    Quellcode

    1. [<?xml version="1.0" encoding="utf-8" ?>
    2. <xs:element name="Student" type="Student">
    3. <xs:key name="MatrikelKey">
    4. <xs:selector xpath="Student" />
    5. <xs:field xpath="Matrikelnr" />
    6. </xs:key>
    7. </xs:element>
    8. <xs:complexType name="Student">
    9. <xs:sequence>
    10. <xs:element name="Name" type="xs:string" />
    11. <xs:element name="Vorname" type="xs:string" />
    12. <xs:element name="Bemerkung" type="xs:string" />
    13. </xs:sequence>
    14. <xs:attribute ref="Matrikelnr" use="required" />
    15. </xs:complexType>
    16. <xs:attribute name="Matrikelnr" type="xs:int" />
    17. <xs:element name="Vorlesung" type="Vorlesung">
    18. <xs:key name="VorlesungKey">
    19. <xs:selector xpath="Vorlesung" />
    20. <xs:field xpath="@VorlesungsNr" />
    21. </xs:key>
    22. </xs:element>
    23. <xs:complexType name="Vorlesung">
    24. <xs:sequence>
    25. <xs:element name="Titel" type="xs:string" />
    26. </xs:sequence>
    27. <xs:attribute ref="VorlesungsNr" />
    28. </xs:complexType>
    29. <xs:attribute name="VorlesungsNr" type="xs:int" />
    30. <xs:element name="StudHatVorl" type="StudHatVorl">
    31. <xs:key name="StudHatVorlKey">
    32. <xs:selector xpath="Student" />
    33. <xs:field xpath="@Matrikelnr" />
    34. <xs:field xpath="@VorlesungsNr" />
    35. </xs:key>
    36. <xs:keyref name="VorlesungRef" refer="VorlesungKey">
    37. <xs:selector xpath="StudHatVorl" />
    38. <xs:field xpath="@VorlesungsNr" />
    39. </xs:keyref>
    40. <xs:keyref name="StudentRef" refer="MatrikelKey">
    41. <xs:selector xpath="StudHatVorl" />
    42. <xs:field xpath="@Matrikelnr" />
    43. </xs:keyref>
    44. </xs:element>
    45. <xs:complexType name="StudHatVorl">
    46. <xs:sequence>
    47. <xs:element ref="Student" maxOccurs="unbounded" />
    48. <xs:element ref="Vorlesung" maxOccurs="unbounded" />
    49. </xs:sequence>
    50. </xs:complexType>
    51. </xs:schema>/syntax]
    52. --------------------------------------------------------------------------------------------------
    53. [syntax="xml"]?xml version="1.0" encoding="utf-8"?>
    54. <StudHatVorl xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:///C:/Dokumente%20und%20Einstellungen/.hakin9/Desktop/=%20BA%20-%20THESIS%20=/Muster_Diagramme&amp;Code/n_m/XSD/n-m_Stud-Vorl.xsd">
    55. <Student Matrikelnr="-2224">
    56. <Name>string</Name>
    57. <Vorname>string</Vorname>
    58. <Bemerkung>string</Bemerkung>
    59. </Student>
    60. <Student Matrikelnr="4544">
    61. <Name>string</Name>
    62. <Vorname>string</Vorname>
    63. <Bemerkung>string</Bemerkung>
    64. </Student>
    65. <Student Matrikelnr="-5826">
    66. <Name>string</Name>
    67. <Vorname>string</Vorname>
    68. <Bemerkung>string</Bemerkung>
    69. </Student>
    70. <Student Matrikelnr="6756">
    71. <Name>string</Name>
    72. <Vorname>string</Vorname>
    73. <Bemerkung>string</Bemerkung>
    74. </Student>
    75. <Vorlesung VorlesungsNr="-3890">
    76. <Titel>string</Titel>
    77. </Vorlesung>
    78. <Vorlesung VorlesungsNr="-9171">
    79. <Titel>string</Titel>
    80. </Vorlesung>
    81. <Vorlesung VorlesungsNr="-9430">
    82. <Titel>string</Titel>
    83. </Vorlesung>
    84. <Vorlesung VorlesungsNr="-4948">
    85. <Titel>string</Titel>
    86. </Vorlesung>
    87. </StudHatVorl>
    Alles anzeigen

    --------------------------------------------------------------------------------
    Würde mich auch über andere Lösungen für die n:m Beziehung freuen,
    vielleicht weiß ja einer woran es liegt, bei Bedarf kann ich auch noch einige Error Messages posten

    Es müsste sozusagen als root Element das StudHatVorl sein wo dann n Studenten m Vorlesungen haben und umgekehrt

    lieben DANK schonmal

    -viv1d-
  • ok SORRY, siehe oben

    eventuell hat einer ne bessere Lösung für die n:m Beziehung
    n Studenten haben m Vorlesungen und umgekehrt mehrere Vorlesungen
    besitzen mehrere Studenten mit key's und keyref wegen der Dateninegrität!


    DANKE

    mfg -viv1d-

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Torben Brodt () aus folgendem Grund: erstes posting aktualisiert