<xs:complexType name="Cell">
<xs:annotation>
<xs:documentation>Definition of a cell.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="status" type="meta:Status" minOccurs="0">
<xs:annotation>
<xs:documentation>Status of the cell model: stable, in progress, etc. Further test comments explaining the current status should be added.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:group ref="meta:metadata"/>
<xs:group ref="meta:referencedata"/>
<xs:element name="segments" minOccurs="1" maxOccurs="1">
<xs:annotation>
<xs:documentation>A segment defines the smallest unit within a possibly branching structure, such as a dendrite or axon. The first segment should represent the soma, if needed for downstream applications.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:group ref="meta:metadata"/>
<xs:element name="segment" type="Segment" maxOccurs="unbounded"/>
</xs:sequence>
<!-- <xs:attribute name="name" type="xs:string" use="optional"/> -->
</xs:complexType>
<!-- This needs further testing!! -->
<xs:unique name="uniqSegId">
<xs:selector xpath=".//segment"/>
<xs:field xpath="@id"/>
</xs:unique>
<xs:key name="keySegment">
<xs:selector xpath=".//segment"/>
<xs:field xpath="@id"/>
</xs:key>
<xs:keyref name="segmentParentRef" refer="keySegment">
<xs:selector xpath=".//segment"/>
<xs:field xpath="@parent"/>
</xs:keyref>
</xs:element>
<xs:element name="cables" minOccurs="0">
<xs:annotation>
<xs:documentation>The collection of cables. Each cable will be associated with a number of connected segments.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:group ref="meta:metadata"/>
<xs:element name="cable" type="Cable" maxOccurs="unbounded"/>
<xs:element name="cablegroup" type="CableGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- This needs further testing!! -->
<xs:unique name="keyCableGroup">
<xs:selector xpath="./cablegroup"/>
<xs:field xpath="@name"/>
</xs:unique>
<xs:unique name="keyCable">
<xs:selector xpath="./cable"/>
<xs:field xpath="@id"/>
</xs:unique>
<!--
<xs:keyref name="cableParentRef" refer="keyCable">
<xs:selector xpath=".//cable"/>
<xs:field xpath="@parent"/>
</xs:keyref>-->
</xs:element>
<xs:element name="cellBody" minOccurs="0">
<xs:annotation>
<xs:documentation>Used for anatomical representation of the soma. Use a Segment with equivalent properties to retain connectivity of branches to the soma for downstream applications (e.g. neuronal simulators).</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:group ref="meta:metadata"/>
<xs:choice>
<xs:element name="polygon" type="meta:Polygon"/>
<xs:element name="polyhedron" type="meta:Polyhedron"/>
<xs:element name="sphere" type="meta:Sphere"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="spines" minOccurs="0">
<xs:annotation>
<xs:documentation>The collection of spines.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:group ref="meta:metadata"/>
<xs:element name="spine" type="Spine" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:keyref name="spineParentRef" refer="keySegment">
<xs:selector xpath=".//spine"/>
<xs:field xpath="@parent"/>
</xs:keyref>
</xs:element>
<xs:element name="freePoints" type="FreePoints" minOccurs="0">
<xs:annotation>
<xs:documentation>The collection of varicosities or synaptic connections.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="optional"/>
</xs:complexType> |