Micha: XSD: Abhängigkeiten von übergeordneten Attributen erzeugen

Hallo,

ich versuche mich gerade ein wenig an XML bzw. an der zugehörigen Schemadatei. Mein Problem ist derzeit, dass ich versuchen möchte, Abhängigkeiten zwischen den Eltern- und Kindselementen zu erzeugen. Nehmen wir folgendes Beispiel:

<punkte dimension="2">  
  <punkt nr="A" x="100" y="200" />  
  <punkt nr="B" x="150" y="300" />  
  <punkt nr="C" x="75" y="150" />  
</punkte>  
  
<punkte dimension="3">  
  <punkt nr="D" x="100" y="200" z="10" />  
  <punkt nr="E" x="150" y="300" z="20" />  
</punkte> 

In punkte wird als Attribut die Dimension vorgegeben, die 1, 2 oder 3 sein kann. In Abhängigkeit der Dimension sind nun bestimmte Attribute in punkt Pflicht (1D -> z; 2D -> x,y; 3D -> x,y,z

Ich kann in diesem Fall das Problem auf zwei Wegen sicher umgehen: Zum einen könnte ich verschiedene Elemente (punkt1d, punkt2d, punkt3d) nutzen; zum anderen könnte ich default-Werte für alle Attribute vorgeben:

<xsd:complexType name="punktTyp">  
  <xsd:attribute name="nr" type="xsd:string" use="required" />  
  <xsd:attribute name="x" type="xsd:double" use="optional" default="0.0" />  
  <xsd:attribute name="y" type="xsd:double" use="optional" default="0.0" />  
  <xsd:attribute name="z" type="xsd:double" use="optional" default="0.0" />  
</xsd:complexType>  
  
<xsd:complexType name="punkteTyp">  
  <xsd:sequence>  
    <xsd:element name="punkt" type="oa:punktTyp" minOccurs="1" maxOccurs="unbounded"/>  
  </xsd:sequence>  
  <xsd:attribute name="dimension" use="required">  
    <xsd:simpleType>  
      <xsd:restriction base="xsd:int">  
        <xsd:pattern value="1|2|3" />  
      </xsd:restriction>  
    </xsd:simpleType>  
  </xsd:attribute>  
</xsd:complexType>

Gibt es auch eine direkte Möglichkeit, in der XSD vorzugeben: Wenn dimension=2, dann muss das Element punkt x und y besitzen oder falls es nur mit unterschiedlichen Elementen geht nur das Element punkt2d folgen darf?

Ich hoffe, mein Anliegen war verständlich... ;-)

Mit freundlichem Gruß
Micha

  1. @@Micha:

    nuqneH

    Mein Problem ist derzeit, dass ich versuchen möchte, Abhängigkeiten zwischen den Eltern- und Kindselementen zu erzeugen.

    Déjà-vu.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Hallo Gunnar Bittersmann,

      Déjà-vu.

      Oh, scheint so. Vielen Dank für den Hinweis!

      Mit freundlichem Gruß
      Micha