Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Komplexe Rekursion

14 views
Skip to first unread message

Peter Schütt

unread,
Mar 20, 2012, 5:28:38 AM3/20/12
to
Hallo,
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>

Es handelt sich hier um eine Struktur, um logische Ausdrücke zu
speichern.

Hierbei ist auch die Reihenfolge wichtig.

Ich hänge jetzt an der beliebigen Rekursion, z.B.
<or>
<and>
<or>
<or>
....

Wie kann ich so etwas in ein Schema gießen?

Danke für alle Hinweise und Tips.

Ciao
Peter Schütt

Peter Schütt

unread,
Mar 20, 2012, 6:26:49 AM3/20/12
to
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
0 new messages