Hi again Werner,
as I said in my previous message, I get the following warnings:
Warning: A class name generation conflict has occured between element '/Name'
and element '/ArrayElement/Name'.
Warning: A class name generation conflict has occured between element
'/DeclareVariable/InitialValue' and element '/DeclareArray/InitialValue'.
I am attaching the schema at the end of this message - but if what confuses
Castor is bad XML, I could ask my colleagues to change the schema. Otherwise, I
could try to resolve this issue by providing a Binding file, I guess.
Thank you so much for the help!
<?xml version="1.0" encoding="UTF-8"?>
<!--
Schema for PLEXIL language supported by UE. This is distinct from the
"blessed" schema found in plexil/schema/plexil.xsd, which is the latest
official PLEXIL specification.
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en">
<xsd:element name="PlexilPlan">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Node"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="TypeValues">
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="Integer"/>
<xsd:enumeration value="Real"/>
<xsd:enumeration value="Boolean"/>
<xsd:enumeration value="String"/>
<xsd:enumeration value="Array"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="NCNameOrEmpty">
<xsd:union memberTypes="xsd:NCName">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value=""/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
<xsd:element name="Node">
<xsd:complexType>
<xsd:all>
<xsd:element name="Comment" type="xsd:string" minOccurs="0"/>
<xsd:element ref="NodeId"/>
<xsd:element ref="StartCondition" minOccurs="0"/>
<xsd:element ref="RepeatCondition" minOccurs="0"/>
<xsd:element ref="PreCondition" minOccurs="0"/>
<xsd:element ref="PostCondition" minOccurs="0"/>
<xsd:element ref="InvariantCondition" minOccurs="0"/>
<xsd:element ref="EndCondition" minOccurs="0"/>
<xsd:element ref="SkipCondition" minOccurs="0"/>
<xsd:element name="Priority" type="xsd:nonNegativeInteger"
minOccurs="0"/>
<xsd:element name="Permissions" type="xsd:string" minOccurs="0"/>
<xsd:element ref="Interface" minOccurs="0"/>
<xsd:element ref="VariableDeclarations" minOccurs="0"/>
<xsd:element ref="NodeBody" minOccurs="0"/>
</xsd:all>
<xsd:attribute name="NodeType" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="NodeList"/>
<xsd:enumeration value="Command"/>
<xsd:enumeration value="Assignment"/>
<xsd:enumeration value="FunctionCall"/>
<xsd:enumeration value="Update"/>
<xsd:enumeration value="Request"/>
<xsd:enumeration value="Empty"/>
<xsd:enumeration value="LibraryNodeCall"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="NodeId" type="xsd:NCName"/>
<xsd:attribute name="dir">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="parent"/>
<xsd:enumeration value="sibling"/>
<xsd:enumeration value="child"/>
<xsd:enumeration value="self"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:element name="NodeRef">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="NCNameOrEmpty">
<xsd:attribute ref="dir"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="NodeBody">
<xsd:complexType>
<xsd:choice>
<xsd:element ref="NodeList"/>
<xsd:element ref="Command"/>
<xsd:element ref="Assignment"/>
<xsd:element ref="FunctionCall"/>
<xsd:element ref="Update"/>
<xsd:element ref="Request"/>
<xsd:element ref="LibraryNodeCall"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="NodeList">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Node" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="StartCondition">
<xsd:complexType>
<xsd:group ref="BooleanExpression"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="RepeatCondition">
<xsd:complexType>
<xsd:group ref="BooleanExpression"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="PreCondition">
<xsd:complexType>
<xsd:group ref="BooleanExpression"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="PostCondition">
<xsd:complexType>
<xsd:group ref="BooleanExpression"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="InvariantCondition">
<xsd:complexType>
<xsd:group ref="BooleanExpression"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="EndCondition">
<xsd:complexType>
<xsd:group ref="BooleanExpression"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="SkipCondition">
<xsd:complexType>
<xsd:group ref="BooleanExpression"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Interface">
<xsd:complexType>
<xsd:all>
<xsd:element ref="In" minOccurs="0"/>
<xsd:element ref="InOut" minOccurs="0"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="In">
<xsd:complexType>
<xsd:group ref="DeclaredVariable" maxOccurs="unbounded"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="InOut">
<xsd:complexType>
<xsd:group ref="DeclaredVariable" maxOccurs="unbounded"/>
</xsd:complexType>
</xsd:element>
<xsd:group name="DeclaredVariable">
<xsd:choice>
<xsd:element ref="IntegerVariable"/>
<xsd:element ref="RealVariable"/>
<xsd:element ref="BooleanVariable"/>
<xsd:element ref="StringVariable"/>
<xsd:element name="ArrayVariable" type="xsd:NCName"/>
<xsd:element ref="ArrayElement"/>
</xsd:choice>
</xsd:group>
<xsd:group name="Value">
<xsd:choice>
<xsd:element ref="IntegerValue"/>
<xsd:element ref="RealValue"/>
<xsd:element ref="BooleanValue"/>
<xsd:element ref="StringValue"/>
</xsd:choice>
</xsd:group>
<xsd:element name="IntegerVariable" type="xsd:NCName"/>
<xsd:element name="RealVariable" type="xsd:NCName"/>
<xsd:element name="BooleanVariable" type="xsd:NCName"/>
<xsd:element name="StringVariable" type="xsd:NCName"/>
<xsd:element name="DeclareVariable">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Name" type="xsd:NCName" />
<xsd:element name="Type" type="TypeValues"/>
<xsd:element name="InitialValue" minOccurs="0">
<xsd:complexType>
<xsd:group ref="Value"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeclareArray">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Name" type="xsd:NCName" />
<xsd:element name="Type" type="TypeValues"/>
<xsd:element name="MaxSize" type="xsd:nonNegativeInteger"/>
<xsd:element name="InitialValue" minOccurs="0">
<xsd:complexType>
<xsd:choice>
<xsd:element ref="IntegerValue" maxOccurs="unbounded"/>
<xsd:element ref="RealValue" maxOccurs="unbounded"/>
<xsd:element ref="BooleanValue" maxOccurs="unbounded"/>
<xsd:element ref="StringValue" maxOccurs="unbounded"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="VariableDeclarations">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element ref="DeclareInteger"/>
<xsd:element ref="DeclareReal"/>
<xsd:element ref="DeclareBoolean"/>
<xsd:element ref="DeclareString"/>
<xsd:element ref="DeclareVariable"/>
<xsd:element ref="DeclareArray"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeclareInteger">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="IntegerVariable"/>
<xsd:element ref="IntegerValue" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeclareReal">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="RealVariable"/>
<xsd:element ref="RealValue" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeclareBoolean">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="BooleanVariable"/>
<xsd:element ref="BooleanValue" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeclareString">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="StringVariable"/>
<xsd:element ref="StringValue" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Name">
<!-- of a command or lookup -->
<xsd:complexType>
<xsd:group ref="StringExpression"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Command">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref="DeclaredVariable" minOccurs="0"/>
<xsd:choice>
<xsd:element ref="Name"/>
<xsd:element name="CommandName" type="xsd:string"/>
<!-- for backw compatibility -->
</xsd:choice>
<xsd:element ref="Arguments" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Arguments">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<!-- could put expression here ?? -->
<xsd:element ref="IntegerValue"/>
<xsd:element ref="RealValue"/>
<xsd:element ref="BooleanValue"/>
<xsd:element ref="StringValue"/>
<xsd:group ref="DeclaredVariable"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="FunctionCall">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref="DeclaredVariable" minOccurs="0"/>
<xsd:choice>
<xsd:element ref="Name"/>
<xsd:element name="FunctionName" type="xsd:string"/>
<!-- for backw compatibility -->
</xsd:choice>
<xsd:element ref="Arguments" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Update">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Pair" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Pair">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Name" type="xsd:NCName"/>
<xsd:choice>
<xsd:group ref="Value"/>
<xsd:group ref="DeclaredVariable"/>
<xsd:element ref="LookupNow"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Request">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="NodeId" minOccurs="0"/>
<!-- the context -->
<xsd:element ref="Pair" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="LibraryNodeCall">
<!-- TODO: maybe call this InlineNode -->
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="NodeId"/>
<xsd:element name="RenameNodeId" type="xsd:NCName" minOccurs="0"/>
<xsd:element ref="Alias" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Alias">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NodeParameter" type="xsd:NCName"/>
<xsd:choice>
<xsd:group ref="Value"/>
<xsd:group ref="DeclaredVariable"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="IntegerValue">
<xsd:simpleType>
<xsd:union memberTypes="xsd:integer">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="UNKNOWN"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
</xsd:element>
<xsd:element name="RealValue">
<xsd:simpleType>
<xsd:union memberTypes="xsd:double">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="UNKNOWN"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
</xsd:element>
<xsd:element name="BooleanValue">
<xsd:simpleType>
<xsd:union memberTypes="xsd:boolean">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="UNKNOWN"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
</xsd:element>
<xsd:element name="StringValue">
<xsd:simpleType>
<xsd:union memberTypes="xsd:string">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="UNKNOWN"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
</xsd:element>
<xsd:element name="BooleanRHS">
<xsd:complexType>
<xsd:group ref="BooleanExpression"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="NumericRHS">
<xsd:complexType>
<xsd:group ref="NumericExpression"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="StringRHS">
<xsd:complexType>
<xsd:group ref="StringExpression"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="LookupRHS">
<xsd:complexType>
<xsd:group ref="Lookup"/>
</xsd:complexType>
</xsd:element>
<!-- right now we allow assigning to the whole array; do we want to assign to
individual elements in the array?-->
<xsd:element name="Assignment">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref="DeclaredVariable"/>
<xsd:choice>
<xsd:element ref="BooleanRHS"/>
<xsd:element ref="NumericRHS"/>
<xsd:element ref="StringRHS"/>
<xsd:element ref="LookupRHS"/>
<!-- allows lookups to return multiple values of different types-->
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- assign multiple vars at the same time: should be only for lookups ???-->
<xsd:group name="BooleanExpression">
<xsd:choice>
<xsd:element ref="OR"/>
<xsd:element ref="XOR"/>
<xsd:element ref="AND"/>
<xsd:element ref="NOT"/>
<xsd:element ref="IsKnown"/>
<xsd:element ref="GT"/>
<xsd:element ref="GE"/>
<xsd:element ref="LT"/>
<xsd:element ref="LE"/>
<xsd:element ref="EQBoolean"/>
<xsd:element ref="EQNumeric"/>
<xsd:element ref="EQInternal"/>
<xsd:element ref="EQString"/>
<xsd:element ref="NEBoolean"/>
<xsd:element ref="NENumeric"/>
<xsd:element ref="NEInternal"/>
<xsd:element ref="NEString"/>
<xsd:element ref="BooleanVariable"/>
<xsd:element ref="BooleanValue"/>
<xsd:group ref="Lookup"/>
<xsd:element ref="ArrayElement"/>
</xsd:choice>
</xsd:group>
<xsd:element name="IsKnown">
<xsd:complexType>
<xsd:choice>
<xsd:group ref="DeclaredVariable"/>
<xsd:group ref="Lookup"/>
<xsd:element ref="NodeStateVariable"/>
<xsd:element ref="NodeOutcomeVariable"/>
<xsd:element ref="NodeTimepointValue"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="OR">
<xsd:complexType>
<xsd:group ref="BooleanExpression" minOccurs="0" maxOccurs="unbounded"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="XOR">
<xsd:complexType>
<xsd:group ref="BooleanExpression" minOccurs="0" maxOccurs="unbounded"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="AND">
<xsd:complexType>
<xsd:group ref="BooleanExpression" minOccurs="0" maxOccurs="unbounded"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="NOT">
<xsd:complexType>
<xsd:sequence>
<xsd:group ref="BooleanExpression"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GT">
<xsd:complexType>
<xsd:group ref="NumericExpression" minOccurs="2" maxOccurs="2"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="GE">
<xsd:complexType>
<xsd:group ref="NumericExpression" minOccurs="2" maxOccurs="2"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="LT">
<xsd:complexType>
<xsd:group ref="NumericExpression" minOccurs="2" maxOccurs="2"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="LE">
<xsd:complexType>
<xsd:group ref="NumericExpression" minOccurs="2" maxOccurs="2"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="EQBoolean">
<xsd:complexType>
<xsd:group ref="BooleanExpression" minOccurs="2" maxOccurs="2"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="EQNumeric">
<xsd:complexType>
<xsd:group ref="NumericExpression" minOccurs="2" maxOccurs="2"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="EQInternal">
<xsd:complexType>
<xsd:choice>
<xsd:group ref="NodeState" minOccurs="2" maxOccurs="2"/>
<xsd:group ref="NodeOutcome" minOccurs="2" maxOccurs="2"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="EQString">
<xsd:complexType>
<xsd:group ref="StringExpression" minOccurs="2" maxOccurs="2"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="NEBoolean">
<xsd:complexType>
<xsd:group ref="BooleanExpression" minOccurs="2" maxOccurs="2"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="NENumeric">
<xsd:complexType>
<xsd:group ref="NumericExpression" minOccurs="2" maxOccurs="2"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="NEInternal">
<xsd:complexType>
<xsd:choice>
<xsd:group ref="NodeState" minOccurs="2" maxOccurs="2"/>
<xsd:group ref="NodeOutcome" minOccurs="2" maxOccurs="2"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="NEString">
<xsd:complexType>
<xsd:group ref="StringExpression" minOccurs="2" maxOccurs="2"/>
</xsd:complexType>
</xsd:element>
<xsd:group name="NodeState">
<xsd:choice>
<xsd:element ref="NodeStateVariable"/>
<xsd:element ref="NodeStateValue"/>
</xsd:choice>
</xsd:group>
<xsd:element name="NodeStateVariable">
<xsd:complexType>
<xsd:choice>
<xsd:element ref="NodeRef"/>
<xsd:element ref="NodeId"/>
<!-- for backw compatibility -->
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="NodeStateValue">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="WAITING"/>
<xsd:enumeration value="EXECUTING"/>
<xsd:enumeration value="FINISHING"/>
<xsd:enumeration value="FAILING"/>
<xsd:enumeration value="ITERATION_ENDED"/>
<xsd:enumeration value="FINISHED"/>
<xsd:enumeration value="INACTIVE"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:group name="NodeOutcome">
<xsd:choice>
<xsd:element ref="NodeOutcomeVariable"/>
<xsd:element ref="NodeOutcomeValue"/>
</xsd:choice>
</xsd:group>
<xsd:element name="NodeOutcomeVariable">
<xsd:complexType>
<xsd:choice>
<xsd:element ref="NodeRef"/>
<xsd:element ref="NodeId"/>
<!-- for backw compatibility -->
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="NodeOutcomeValue">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="SUCCESS"/>
<xsd:enumeration value="FAILURE"/>
<xsd:enumeration value="SKIPPED"/>
<xsd:enumeration value="INFINITE_LOOP"/>
<xsd:enumeration value="UNKNOWN"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="NodeTimepointValue">
<xsd:complexType>
<xsd:sequence>
<xsd:choice>
<xsd:element ref="NodeRef"/>
<xsd:element ref="NodeId"/>
<!-- for backw compatibility -->
</xsd:choice>
<xsd:element ref="NodeStateValue"/>
<xsd:element ref="Timepoint"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Timepoint">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="START"/>
<xsd:enumeration value="END"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:group name="StringExpression">
<xsd:choice>
<xsd:element ref="StringVariable"/>
<xsd:element ref="StringValue"/>
<xsd:element ref="Concat"/>
<xsd:group ref="Lookup"/>
<xsd:element ref="ArrayElement"/>
</xsd:choice>
</xsd:group>
<xsd:element name="Concat">
<!-- should it be in core Plexil? -->
<xsd:complexType>
<xsd:group ref="StringExpression" minOccurs="2" maxOccurs="unbounded"/>
</xsd:complexType>
</xsd:element>
<xsd:group name="NumericExpression">
<xsd:choice>
<xsd:element ref="ADD"/>
<xsd:element ref="SUB"/>
<xsd:element ref="MUL"/>
<xsd:element ref="DIV"/>
<xsd:element ref="SQRT"/>
<xsd:element ref="ABS"/>
<xsd:element ref="IntegerVariable"/>
<xsd:element ref="RealVariable"/>
<xsd:element ref="IntegerValue"/>
<xsd:element ref="RealValue"/>
<xsd:group ref="Lookup"/>
<!-- only for lookups that return ONE value -->
<xsd:element ref="NodeTimepointValue"/>
<!-- read operations for arrays-->
<xsd:element name="ArraySize" type="xsd:NCName"/>
<xsd:element name="ArrayMaxSize" type="xsd:NCName"/>
<xsd:element ref="ArrayElement"/>
</xsd:choice>
</xsd:group>
<xsd:element name="ArrayElement">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Name" >
<xsd:complexType>
<xsd:group ref="StringExpression"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Index">
<xsd:complexType>
<xsd:group ref="NumericExpression"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="ADD">
<xsd:complexType>
<xsd:group ref="NumericExpression" minOccurs="2" maxOccurs="unbounded"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="SUB">
<xsd:complexType>
<xsd:group ref="NumericExpression" minOccurs="2" maxOccurs="2"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="MUL">
<xsd:complexType>
<xsd:group ref="NumericExpression" minOccurs="2" maxOccurs="unbounded"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="DIV">
<xsd:complexType>
<xsd:group ref="NumericExpression" minOccurs="2" maxOccurs="2"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="SQRT">
<xsd:complexType>
<xsd:group ref="NumericExpression"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ABS">
<xsd:complexType>
<xsd:group ref="NumericExpression"/>
</xsd:complexType>
</xsd:element>
<xsd:group name="Lookup">
<xsd:choice>
<xsd:element ref="LookupWithFrequency"/>
<xsd:element ref="LookupOnChange"/>
<xsd:element ref="LookupNow"/>
</xsd:choice>
</xsd:group>
<xsd:element name="LookupWithFrequency">
<xsd:complexType>
<xsd:sequence>
<xsd:choice>
<xsd:element ref="Name"/>
<!-- for backw compatibility -->
<xsd:element name="StateName" type="xsd:string"/>
</xsd:choice>
<xsd:element ref="Frequency"/>
<xsd:element ref="Arguments" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Frequency">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Low"/>
<xsd:element ref="High" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Low">
<xsd:complexType>
<xsd:choice>
<xsd:element ref="RealValue"/>
<xsd:element ref="RealVariable"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="High">
<xsd:complexType>
<xsd:choice>
<xsd:element ref="RealValue"/>
<xsd:element ref="RealVariable"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="LookupOnChange">
<xsd:complexType>
<xsd:sequence>
<xsd:choice>
<xsd:element ref="Name"/>
<xsd:element name="StateName" type="xsd:string"/>
<!-- for backw compatibility -->
</xsd:choice>
<xsd:element ref="Tolerance" minOccurs="0"/>
<xsd:element ref="Arguments" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Tolerance">
<xsd:complexType>
<xsd:choice>
<xsd:element ref="RealValue"/>
<xsd:element ref="RealVariable"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="LookupNow">
<xsd:complexType>
<xsd:sequence>
<xsd:choice>
<xsd:element ref="Name"/>
<xsd:element name="StateName" type="xsd:string"/>
<!-- for backw compatibility -->
</xsd:choice>
<xsd:element ref="Arguments" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email