XSD: Abhängigkeiten von übergeordneten Attributen erzeugen
Micha
- xml
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
@@Micha:
nuqneH
Mein Problem ist derzeit, dass ich versuchen möchte, Abhängigkeiten zwischen den Eltern- und Kindselementen zu erzeugen.
Qapla'
Hallo Gunnar Bittersmann,
Oh, scheint so. Vielen Dank für den Hinweis!
Mit freundlichem Gruß
Micha