dol: initial dol commit
[jump.git] / dol / examples / schema / processnetwork.xsd
1 <?xml version="1.0"?>
2 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pn="http://www.tik.ee.ethz.ch/~shapes/schema/PROCESSNETWORK" targetNamespace="http://www.tik.ee.ethz.ch/~shapes/schema/PROCESSNETWORK"  elementFormDefault="qualified" >
3   <xsd:include schemaLocation="generics.xsd"/>
4
5   <xsd:element name="processnetwork">
6     <xsd:complexType>
7       <xsd:sequence minOccurs="0" maxOccurs="unbounded">
8         <xsd:element name="variable" type="pn:variable" minOccurs="0" maxOccurs="unbounded"/>
9         <xsd:element name="function" type="pn:function" minOccurs="0" maxOccurs="unbounded"/>
10         <xsd:element name="process" type="pn:process" minOccurs="0" maxOccurs="unbounded"/>
11         <xsd:element name="sw_channel" type="pn:sw_channel" minOccurs="0" maxOccurs="unbounded"/>
12         <xsd:element name="iterator" type="pn:generaliterator" minOccurs="0" maxOccurs="unbounded"/>
13         <xsd:element name="connection" type="pn:connection" minOccurs="0" maxOccurs="unbounded"/>
14         <xsd:element name="configuration" type="pn:configuration" minOccurs="0" maxOccurs="unbounded"/>
15       </xsd:sequence>
16       <xsd:attribute name="name" type="xsd:string" use="required"/>
17     </xsd:complexType>
18   </xsd:element>
19
20   <xsd:complexType name="process">
21     <xsd:complexContent>
22       <xsd:extension base="pn:element">
23         <xsd:sequence>
24           <xsd:element name="append" type="pn:append" minOccurs="0" maxOccurs="unbounded"/>
25           <xsd:choice minOccurs="0">
26             <xsd:sequence>
27               <xsd:element name="iterator" type="pn:qualifiedportiterator" maxOccurs="unbounded"/>
28               <xsd:element name="port" type="pn:qualifiedport" minOccurs="0" maxOccurs="unbounded"/>
29             </xsd:sequence>
30             <xsd:element name="port" type="pn:qualifiedport" maxOccurs="unbounded"/>
31           </xsd:choice>
32           <xsd:element name="source" type="pn:source"/>
33           <xsd:element name="configuration" type="pn:configuration" minOccurs="0" maxOccurs="unbounded"/>
34         </xsd:sequence>
35       </xsd:extension>
36     </xsd:complexContent>
37   </xsd:complexType>
38
39   <xsd:complexType name="source">
40     <xsd:attribute name="type" use="required">
41       <xsd:simpleType>
42         <xsd:restriction base="xsd:string">
43           <xsd:enumeration value="c"/>
44           <xsd:enumeration value="c++"/>
45         </xsd:restriction>
46       </xsd:simpleType>
47     </xsd:attribute>
48     <xsd:attribute name="location" type="xsd:string" use="required"/>
49   </xsd:complexType>
50
51   <xsd:complexType name="sw_channel">
52     <xsd:complexContent>
53       <xsd:extension base="pn:element">
54         <xsd:sequence>
55           <xsd:element name="append" type="pn:append" minOccurs="0" maxOccurs="unbounded"/>
56           <xsd:element name="port" type="pn:qualifiedport" minOccurs="2" maxOccurs="2"/>
57           <xsd:element name="configuration" type="pn:configuration" minOccurs="0" maxOccurs="unbounded"/>
58         </xsd:sequence>
59         <xsd:attribute name="size" type="xsd:string" use="required"/>
60         <xsd:attribute name="tokensize" type="xsd:string" default="1" use="optional"/>
61         <xsd:attribute name="type" use="required">
62           <xsd:simpleType>
63             <xsd:restriction base="xsd:string">
64               <xsd:enumeration value="fifo"/>
65               <xsd:enumeration value="wfifo"/>
66             </xsd:restriction>
67           </xsd:simpleType>
68         </xsd:attribute>
69       </xsd:extension>
70     </xsd:complexContent>
71   </xsd:complexType>
72
73   <xsd:complexType name="port">
74     <xsd:complexContent>
75       <xsd:extension base="pn:element">
76         <xsd:sequence>
77           <xsd:element name="append" type="pn:append" minOccurs="0" maxOccurs="unbounded"/>
78         </xsd:sequence>
79       </xsd:extension>
80     </xsd:complexContent>
81   </xsd:complexType>
82
83   <xsd:complexType name="qualifiedport">
84     <xsd:complexContent>
85       <xsd:extension base="pn:port">
86         <xsd:attribute name="type" use="required">
87           <xsd:simpleType>
88             <xsd:restriction base="xsd:string">
89               <xsd:enumeration value="input"/>
90               <xsd:enumeration value="output"/>
91             </xsd:restriction>
92           </xsd:simpleType>
93         </xsd:attribute>
94       </xsd:extension>
95     </xsd:complexContent>
96   </xsd:complexType>
97
98   <xsd:complexType name="connection">
99     <xsd:sequence minOccurs="0" maxOccurs="unbounded">
100       <xsd:element name="append" type="pn:append" minOccurs="0" maxOccurs="unbounded"/>
101       <xsd:element name="origin" type="pn:connector"/>
102       <xsd:element name="target" type="pn:connector"/>
103     </xsd:sequence>
104     <xsd:attribute name="name" type="xsd:string" use="required"/>
105   </xsd:complexType>
106
107   <xsd:complexType name="connector">
108     <xsd:sequence>
109       <xsd:element name="append" type="pn:append" minOccurs="0" maxOccurs="unbounded"/>
110       <xsd:element name="port" type="pn:port"/>
111     </xsd:sequence>
112     <xsd:attribute name="name" type="xsd:string" use="required"/>
113   </xsd:complexType>
114   
115   <xsd:complexType name="generaliterator">
116     <xsd:complexContent>
117       <xsd:extension base="pn:iterator">
118         <xsd:sequence>
119           <xsd:element name="iterator" type="pn:generaliterator" minOccurs="0" maxOccurs="unbounded"/>
120           <xsd:element name="process" type="pn:process" minOccurs="0" maxOccurs="unbounded"/>
121           <xsd:element name="sw_channel" type="pn:sw_channel" minOccurs="0" maxOccurs="unbounded"/>
122           <xsd:element name="connection" type="pn:connection" minOccurs="0" maxOccurs="unbounded"/>
123         </xsd:sequence>
124       </xsd:extension>
125     </xsd:complexContent>
126   </xsd:complexType>
127
128   <xsd:complexType name="qualifiedportiterator">
129     <xsd:complexContent>
130       <xsd:extension base="pn:iterator">
131         <xsd:choice>
132           <xsd:sequence>
133             <xsd:element name="iterator" type="pn:qualifiedportiterator" maxOccurs="unbounded"/>
134             <xsd:element name="port" type="pn:qualifiedport" minOccurs="0" maxOccurs="unbounded"/>
135           </xsd:sequence>
136           <xsd:element name="port" type="pn:qualifiedport" maxOccurs="unbounded"/>
137         </xsd:choice>
138       </xsd:extension>
139     </xsd:complexContent>
140   </xsd:complexType>
141
142 </xsd:schema>