1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Baumstrukturen in XML validieren

  • der_lunz
  • 3. Juni 2004 um 17:04
  • Unerledigt
  • der_lunz
    1
    der_lunz
    Mitglied
    Punkte
    10
    Beiträge
    1
    • 3. Juni 2004 um 17:04
    • #1

    Ich versuche schon den ganzen Nachmittag ein XML Schema zu schreiben, dass mir folgende Datei validiert:

     <keyelement id=3 />
     <keyelement id=4 />

    <or>
    <and>
    <value>
    <keyelement><id>4</id></keyelement>
      </value>
    <not>
    <value>
    <keyelement><id>3</id></keyelement>
    </value>
    </and>
    <value>
    <keyelement><id>33333333</id></keyelement>
      </value>
    </or>

     zur zeit sieht das schema etwa so aus:

    <xs:schema>
    <xs:element name="root">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="keyelement" type="keyelement" maxOccurs="unbounded" />
    <xs:group ref="LogicNode" />
    </xs:sequence>
    </xs:complexType>
    <xs:key name="keyelementId">
    <xs:selector xpath=".//tns:keyelement" />
    <xs:field xpath="@id" />
    </xs:key>
    <xs:keyref name="keyelementref" refer="keyelementId">
    <xs:selector xpath=".//tns:Value" />
    <xs:field xpath="tns:id" />
    </xs:keyref>
    </xs:element>

    <xs:complexType name="ValueNode">
    <xs:sequence>
    <xs:element name="id" type="xs:integer" />
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="AndNode">
    <xs:sequence>
    <xs:group ref="LogicNode" />
    <xs:group ref="LogicNode" />
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="OrNode">
    <xs:sequence>
    <xs:group ref="LogicNode" />
    <xs:group ref="LogicNode" />
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="NotNode">
    <xs:sequence>
    <xs:group ref="LogicNode" />
    <xs:group ref="LogicNode" />
    </xs:sequence>
    </xs:complexType>

    <xs:group name="LogicNode">
    <xs:choice>
    <xs:element name="And" type="tns:AndNode" />
    <xs:element name="Or" type="tns:OrNode" />
    <xs:element name="Not" type="tns:NotNode" />
    <xs:element name="Value" type="ValueNode"/>
    </xs:choice>
    </xs:group>
    </xs:schema>

     Das Problem ist, dass der key und keyref Elemente auf der selben ebene sein müssen. In dem Fall auf root ebene. Das schema ist schaft es nicht Fehler im xml-file zu erkennen.

    Ich hab mich schon im Netz darüber schlau gmemacht, dass key bzw. keyrefs in Hierarchischen (rekursiven) Strukturen probleme machen, hab aber nicht entdecken können wie man eine solche Beziehung am besten modelliert.




  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung