]> AND Private Git Repository - blast.git/blob - reference.xsd
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
finished VHDL gen. (but have to test further
[blast.git] / reference.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
4     <!-- déclaration des groupes d'attributs -->
5
6     <xs:attributeGroup name="parameterAttrGroup">
7       <xs:attribute ref="name" use="required"/>
8         <xs:attribute name="type" type="typeparam" use="required"/>
9         <xs:attribute ref="wishbone" use="optional"/>
10         <xs:attribute ref="value" use="optional"/>
11         <xs:attribute ref="iface" use="optional"/>
12         <xs:attribute ref="width" use="optional"/>      
13         <xs:attribute ref="context" use="required"/>
14     </xs:attributeGroup>
15
16     <xs:attributeGroup name="inOutAttrGroup">
17         <xs:attribute ref="name" use="required"/>
18         <xs:attribute ref="width" use="required"/>
19         <xs:attribute name="type" type="typeiface"/>
20         <xs:attribute ref="purpose"/>
21         <xs:attribute ref="multiplicity"/>
22         <xs:attribute name="endian" type="typeendian" use="optional"/>  
23     </xs:attributeGroup>
24
25
26     <!-- déclaration des attributs -->
27
28     <xs:attribute name="ids" type="xs:string"/>
29     <xs:attribute name="name" type="xs:string"/>
30
31     <xs:simpleType name="typeparam">
32       <xs:restriction base="xs:string">
33         <xs:enumeration value="string"/>
34         <xs:enumeration value="expression"/>
35         <xs:enumeration value="boolean"/>
36         <xs:enumeration value="integer"/>
37         <xs:enumeration value="natural"/>
38         <xs:enumeration value="positive"/>
39         <xs:enumeration value="real"/>
40         <xs:enumeration value="time"/>
41       </xs:restriction>
42     </xs:simpleType>
43
44     <xs:simpleType name="typeiface">
45       <xs:restriction base="xs:string">
46         <xs:enumeration value="expression"/>
47         <xs:enumeration value="boolean"/>
48         <xs:enumeration value="natural"/>
49       </xs:restriction>
50     </xs:simpleType>
51     
52     <xs:simpleType name="typeendian">
53       <xs:restriction base="xs:string">
54         <xs:enumeration value="little"/>
55         <xs:enumeration value="big"/>
56       </xs:restriction>
57     </xs:simpleType>
58       
59     <xs:attribute name="wishbone" type="xs:string"/>
60     <xs:attribute name="context" type="xs:string" />
61     <xs:attribute name="multiplicity" type="xs:string" />
62     <xs:attribute name="width" type="xs:string"/>
63     <xs:attribute name="purpose" type="xs:string"/>
64     <xs:attribute name="value" type="xs:string"/>
65     <xs:attribute name="iface" type="xs:string"/>
66     <xs:attribute name="path" type="xs:string" />
67
68
69     <!-- déclaration des groupes d'éléments -->
70
71     <xs:group name="blockElmtGroup">
72         <xs:sequence>
73             <xs:element ref="informations"/>
74             <xs:element ref="parameters"/>
75             <xs:element ref="interfaces"/>
76             <xs:element ref="implementations" minOccurs="0"/>
77         </xs:sequence>
78     </xs:group>
79
80     <xs:group name="informationsElmtGroup">
81         <xs:sequence>
82             <xs:element ref="name"/>
83             <xs:element ref="category"/>
84             <xs:element ref="description"/>
85         </xs:sequence>
86     </xs:group>
87
88     <xs:group name="descriptionElmtGroup">
89         <xs:sequence>
90             <xs:element ref="brief"/>
91             <xs:element ref="detailed"/>
92         </xs:sequence>
93     </xs:group>
94
95     <xs:group name="interfacesElmtGroup">
96         <xs:sequence>
97             <xs:element ref="inputs" minOccurs="0"/>
98             <xs:element ref="outputs" minOccurs="1"/>
99             <xs:element ref="bidirs" minOccurs="0"/>
100         </xs:sequence>
101     </xs:group>
102
103
104     <!-- déclaration des éléments -->
105
106     <xs:element name="informations">
107         <xs:complexType>
108             <xs:group ref="informationsElmtGroup"/>
109         </xs:complexType>
110     </xs:element>
111
112     <xs:element name="name" type="xs:string" />
113
114     <xs:element name="category">
115         <xs:complexType>
116             <xs:attribute ref="ids" use="required"/>
117         </xs:complexType>
118     </xs:element>
119
120     <xs:element name="description">
121         <xs:complexType>
122             <xs:group ref="descriptionElmtGroup"/>
123         </xs:complexType>
124     </xs:element>
125
126     <xs:element name="brief" type="xs:string" />
127
128     <xs:element name="detailed" type="xs:string" />
129
130     <xs:element name="parameters">
131         <xs:complexType>
132             <xs:sequence>
133                 <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
134             </xs:sequence>
135         </xs:complexType>
136     </xs:element>
137
138     <xs:element name="parameter">
139         <xs:complexType>
140             <xs:attributeGroup ref="parameterAttrGroup"/>
141         </xs:complexType>
142     </xs:element>
143
144     <xs:element name="interfaces">
145         <xs:complexType>
146             <xs:group ref="interfacesElmtGroup"/>
147         </xs:complexType>
148     </xs:element>
149
150     <xs:element name="control">
151         <xs:complexType>
152             <xs:attribute ref="iface"/>
153         </xs:complexType>
154     </xs:element>
155
156     <xs:element name="inputs">
157         <xs:complexType>
158             <xs:sequence>
159               <xs:element ref="input" maxOccurs="unbounded" />
160               <xs:element ref="control" minOccurs="0" maxOccurs="unbounded" />
161             </xs:sequence>
162         </xs:complexType>
163     </xs:element>
164
165     <xs:element name="input">
166         <xs:complexType>
167             <xs:attributeGroup ref="inOutAttrGroup"/>
168         </xs:complexType>
169     </xs:element>
170
171     <xs:element name="outputs">
172         <xs:complexType>
173             <xs:sequence>
174               <xs:element ref="output" maxOccurs="unbounded" />
175               <xs:element ref="control" minOccurs="0" maxOccurs="unbounded" />
176             </xs:sequence>
177         </xs:complexType>
178     </xs:element>
179
180     <xs:element name="output">
181         <xs:complexType>
182             <xs:attributeGroup ref="inOutAttrGroup"/>
183         </xs:complexType>
184     </xs:element>
185
186     <xs:element name="bidirs">
187         <xs:complexType>
188             <xs:sequence>
189                 <xs:element ref="bidir" maxOccurs="unbounded" />
190             </xs:sequence>
191         </xs:complexType>
192     </xs:element>
193
194     <xs:element name="bidir">
195         <xs:complexType>
196             <xs:attributeGroup ref="inOutAttrGroup"/>
197         </xs:complexType>
198     </xs:element>
199
200     <xs:element name="implementations">
201         <xs:complexType>
202             <xs:sequence>
203                 <xs:element ref="implementation" maxOccurs="unbounded" />
204             </xs:sequence>
205         </xs:complexType>
206     </xs:element>
207
208     <xs:element name="implementation">
209         <xs:complexType>
210             <xs:attribute ref="path" use="required" />
211         </xs:complexType>
212     </xs:element>
213
214
215     <!-- Racine du document -->
216
217     <xs:element name="block">
218       <xs:complexType>
219         <xs:group ref="blockElmtGroup"/>
220         <xs:attribute name="version" type="xs:string" use="optional" />
221       </xs:complexType>
222     </xs:element>
223
224 </xs:schema>