XSD mit Bedingung

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

  • XSD mit Bedingung

    Hallo zusammen,

    ich habe da ein Problem, möglicherweise könnt ihr mir einen Tip geben.

    Ich erstelle eine XSD, in der ich ein Element "mein_tag" habe. Dieses Element kann 4 Attribute enthalten, die wiederum vom Typ boolean sind.
    Nun möchte ich der XSD beibringen, dass sie lediglich ein Attribut als true durchgehen lässt.


    Hier ein Ausschnitt der XSD:

    <xsd:element name="mein_tag">
    <xsd:annotation>
    <xsd:documentation>Hier steht ne Beschreibung fuer den Tag.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
    <xsd:attribute name="ATTRIBUT_1" type="xsd:boolean"/>
    <xsd:attribute name="ATTRIBUT_2" type="xsd:boolean"/>
    <xsd:attribute name="ATTRIBUT_3" type="xsd:boolean"/>
    <xsd:attribute name="ATTRIBUT_4" type="xsd:boolean"/>
    </xsd:complexType>
    </xsd:element>


    So sollte das dann idealerweise im XML aussehen:

    <mein_tag ATTRIBUT_1="1" ATTRIBUT_2="0" ATTRIBUT_3="0" ATTRIBUT_4="0"/>



    Sowas will ich mit der XSD unterbinden (zwei Attribute jeweils auf true):

    <mein_tag ATTRIBUT_1="1" ATTRIBUT_2="0" ATTRIBUT_3="1" ATTRIBUT_4="0"/>


    Wäre nett, wenn mir jemand einen Tip geben könnte, wie ich das realisieren kann.

    Viele Grüße

    Tim
  • Hi d0nut,

    erstmal vielen Dank für deine Antwort. Leider bringt mich die nicht sonderlich weiter, denn ich möchte diese Einschränkung ja im XSD. Anhand der XSD wird dann die XML validiert.

    Die XML-Struktur kann ich ändern, nur muss dies ja in der XSD kenntlich gemacht werden.
    Die XML-Datei an sich ist ja auch kein Problem, ich möchte halt nur, dass ich in der XSD einschränken kann, dass für den tag <mein_tag> lediglich eines der vier Attribute jeweils auf true steht.


    Was meinst du mit einer globalen Variable?


    Viele Grüße

    Tim
  • Hi, da kann ich dir leider auch nicht weiterhelfen.
    Ich bin kein XSD-Profi, aber ich glaube nicht, dass Attributübergreifende Validierungen mit XSD möglich sind.

    Eben weil es in XSD keine globalen Variablen gibt.
    Die einzige Möglichkeit, die mir einfallen würde, wäre das Umwandeln mittels XSLT in ein anderes XML Format, das man besser validieren kann.