1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Element in Abhänigkeit vom Wert eines Enum im XML-Schema erlauben.

Dieses Thema im Forum "XML Technologien" wurde erstellt von Schnoogle, 21. August 2015.

  1. Schnoogle

    Schnoogle Mitglied

    Hallo,

    ich entwickle aktuell eine Anwendung bei der XML mit JAXB (JAVA 7) verarbeitet wird.

    Hierbei muss ich auch ein XML-Schema erstellen.

    Bei der Definition eines eigenen einfachen Datentypen (xsd:simpleType) ist es möglich einen Basistyp einzuschränken. Abhhänig vom Basistyp bzw. abhängig vom Wert eines Attributs sind unterschiedliche Elemente (xsd:enumeration, xsd:minInclusive) erlaubt.

    Code (Text):
    1. <xsd:simpleType name="type">
    2.    <xsd:restriction base="xsd:string">
    3.       <xsd:enumeration value="AN"/>
    4.       <xsd:enumeration value="AUS"/>
    5.    </xsd:restriction>
    6. </xsd:simpleType>
    Code (Text):
    1. <xsd:simpleType name="type">
    2.    <xsd:restriction base="xsd:int">
    3.       <xsd:minInclusive value="0"/>
    4.       <xsd:maxInclusive value="255"/>
    5.    </xsd:restriction>
    6. </xsd:simpleType>
    In den Beispielen sieht man, dass wenn base="xsd:string" ist, eine Sequenz an xsd:enumeration Elementen erlaubt ist (bzw. sinnvoll ist) und wenn base="xsd:int" ist, die Elemente xsd:minInclusive und xsd:maxInclusive erlaubt sind (bzw. sinnvoll sind).

    Könnte ich so eine Semantik auch in meinem Schema beschreiben? Also konkret möchte ich, dass nach einem Element, dass als Wert einen Enum enthält und abhänigg von dem Wert eine bestimmte Sequenz an Elementen erlaubt ist? Kann ich so etwas im XML-Schema beschreiben und kann JAXB in JAVA 7 dies verarbeiten?

    Beispiel:

    Wenn <Enum/> den Wert "INT" enthält, darf auf <Enum/> das Element <IntParam/> folgen und wenn <Enum/> den Wert "DOUBLE" enthält, darf auf <Enum/> das Element <DoubleParam/> folgen.

    Es handelt sich um kein praxisnahes Beispiel, es soll nur die Problemstellung verdeutlichen.

    Code (Text):
    1. <Element>
    2.    <Enum>INT</Enum>
    3.    <IntParam>4</IntParam>
    4. <Element/>
    5. <Element>
    6.    <Enum>DOUBLE</Enum>
    7.    <DoubleParam>3.45693</DoubleParam>
    8. </Element>
     
  2. saftmeister

    saftmeister Nutze den Saft! Premium-User

  3. Schnoogle

    Schnoogle Mitglied

    Hallo,

    danke für deine Antwort.

    Diese Information habe ich inzwischen auch gefunden. Das Problem, dass ich jetzt habe, ist dass JAXB in JAVA 7 nur XML-Schema 1.0 unterstützt.

    Deshalb kann ich wohl keine XML Schema 1.1 Funktionalität verwenden.

    Gibt es evtl. eine Möglichkeit, dass JAXB zwar gemäß XML Schema 1.1 validiert aber nur gemäß XML Schema 1.0 das Binding durchführt?

    Grüße
     
Die Seite wird geladen...