1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
4 <!-- déclaration des groupes d'attributs -->
6 <xs:attributeGroup name="parameterAttrGroup">
7 <xs:attribute ref="name" use="required"/>
8 <xs:attribute ref="type" 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"/>
16 <xs:attributeGroup name="inOutAttrGroup">
17 <xs:attribute ref="name" use="required"/>
18 <xs:attribute ref="width" use="required"/>
19 <xs:attribute ref="type"/>
20 <xs:attribute ref="purpose"/>
21 <xs:attribute ref="multiplicity"/>
25 <!-- déclaration des attributs -->
27 <xs:attribute name="ids" type="xs:string"/>
28 <xs:attribute name="name" type="xs:string"/>
29 <xs:attribute name="type" type="xs:string"/>
30 <xs:attribute name="wishbone" type="xs:string"/>
31 <xs:attribute name="context" type="xs:string" />
32 <xs:attribute name="multiplicity" type="xs:string" />
33 <xs:attribute name="width" type="xs:string"/>
34 <xs:attribute name="purpose" type="xs:string"/>
35 <xs:attribute name="value" type="xs:string"/>
36 <xs:attribute name="iface" type="xs:string"/>
37 <xs:attribute name="path" type="xs:string" />
40 <!-- déclaration des groupes d'éléments -->
42 <xs:group name="blockElmtGroup">
44 <xs:element ref="informations"/>
45 <xs:element ref="parameters"/>
46 <xs:element ref="interfaces"/>
47 <xs:element ref="implementations" minOccurs="0"/>
51 <xs:group name="informationsElmtGroup">
53 <xs:element ref="name"/>
54 <xs:element ref="category"/>
55 <xs:element ref="description"/>
59 <xs:group name="descriptionElmtGroup">
61 <xs:element ref="brief"/>
62 <xs:element ref="detailed"/>
66 <xs:group name="interfacesElmtGroup">
68 <xs:element ref="inputs" minOccurs="0"/>
69 <xs:element ref="outputs" minOccurs="1"/>
70 <xs:element ref="bidirs" minOccurs="0"/>
75 <!-- déclaration des éléments -->
77 <xs:element name="informations">
79 <xs:group ref="informationsElmtGroup"/>
83 <xs:element name="name" type="xs:string" />
85 <xs:element name="category">
87 <xs:attribute ref="ids" use="required"/>
91 <xs:element name="description">
93 <xs:group ref="descriptionElmtGroup"/>
97 <xs:element name="brief" type="xs:string" />
99 <xs:element name="detailed" type="xs:string" />
101 <xs:element name="parameters">
104 <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
109 <xs:element name="parameter">
111 <xs:attributeGroup ref="parameterAttrGroup"/>
115 <xs:element name="interfaces">
117 <xs:group ref="interfacesElmtGroup"/>
121 <xs:element name="control">
123 <xs:attribute ref="iface"/>
127 <xs:element name="inputs">
130 <xs:element ref="input" maxOccurs="unbounded" />
131 <xs:element ref="control" minOccurs="0" maxOccurs="unbounded" />
136 <xs:element name="input">
138 <xs:attributeGroup ref="inOutAttrGroup"/>
142 <xs:element name="outputs">
145 <xs:element ref="output" maxOccurs="unbounded" />
146 <xs:element ref="control" minOccurs="0" maxOccurs="unbounded" />
151 <xs:element name="output">
153 <xs:attributeGroup ref="inOutAttrGroup"/>
157 <xs:element name="bidirs">
160 <xs:element ref="bidir" maxOccurs="unbounded" />
165 <xs:element name="bidir">
167 <xs:attributeGroup ref="inOutAttrGroup"/>
171 <xs:element name="implementations">
174 <xs:element ref="implementation" maxOccurs="unbounded" />
179 <xs:element name="implementation">
181 <xs:attribute ref="path" use="required" />
186 <!-- Racine du document -->
188 <xs:element name="block">
190 <xs:group ref="blockElmtGroup"/>