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


Reply via email to