Hallo,
ich habe es selber hinbekommen:
> ich brauche ein Schema für folgende Strukturen:
>
> <condition>
> <or>
> <equal name="MyAttribute1" value="45"/>
> <and>
> <unequal name="MyAttribute2" value="5"/>
> <equal name="MyAttribute3" value="6"/>
> </and>
> </or>
> </condition>
So geht es:
<xsd:complexType name="ComparisonType">
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="value" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:element name="equal" type="ComparisonType"/>
<xsd:element name="unequal" type="ComparisonType"/>
<xsd:element name="not">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref="SingleGroup"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="or">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref="AndOrGroup"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="and">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref="AndOrGroup"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:group name="SingleGroup">
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:element ref="equal"/>
<xsd:element ref="unequal"/>
<xsd:element ref="or"/>
<xsd:element ref="and"/>
<xsd:element ref="not"/>
</xsd:choice>
</xsd:sequence>
</xsd:group>
<xsd:group name="AndOrGroup">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="equal"/>
<xsd:element ref="unequal"/>
<xsd:element ref="or"/>
<xsd:element ref="and"/>
<xsd:element ref="not"/>
</xsd:choice>
</xsd:sequence>
</xsd:group>
<xsd:complexType name="Condition">
<xsd:sequence>
<xsd:group ref="SingleGroup"/>
</xsd:sequence>
</xsd:complexType>
Ciao
Peter Schütt