pluginSpec: plugin.xsd

File plugin.xsd, 10.8 kB (added by inureyes, 13 months ago)
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
3    <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
4    <xs:element name="plugin">
5        <xs:complexType>
6            <xs:sequence>
7                <xs:element name="title" minOccurs="1" maxOccurs="unbounded">
8                    <xs:complexType>
9                        <xs:simpleContent>
10                            <xs:extension base="xs:normalizedString">
11                                <xs:attribute ref="xml:lang"/>
12                            </xs:extension>
13                        </xs:simpleContent>
14                    </xs:complexType>
15                </xs:element>
16                <xs:element name="link" minOccurs="1" maxOccurs="1" type="xs:anyURI"/>
17                <xs:element name="version" minOccurs="1" maxOccurs="1" type="xs:token"/>
18                <xs:element name="description" minOccurs="1" maxOccurs="unbounded">
19                    <xs:complexType>
20                        <xs:simpleContent>
21                            <xs:extension base="xs:string">
22                                <xs:attribute ref="xml:lang"/>
23                            </xs:extension>
24                        </xs:simpleContent>
25                    </xs:complexType>
26                </xs:element>
27                <xs:element name="license" minOccurs="1" maxOccurs="1" type="xs:normalizedString"/>
28                <xs:element name="author" minOccurs="1" maxOccurs="unbounded">
29                    <xs:complexType>
30                        <xs:simpleContent>
31                            <xs:extension base="xs:normalizedString">
32                                <xs:attribute ref="xml:lang"/>
33                                <xs:attribute name="link" use="required" type="xs:anyURI"/>
34                            </xs:extension>
35                        </xs:simpleContent>
36                    </xs:complexType>
37                </xs:element>
38                <xs:element name="safety" minOccurs="1" maxOccurs="1">
39                    <xs:complexType>
40                        <xs:attribute name="accessLocal" use="required" type="yesno"/>
41                        <xs:attribute name="accessRaw" use="required" type="yesno"/>
42                        <xs:attribute name="accessRemote" use="required" type="yesno"/>
43                        <xs:attribute name="changeData" use="required" type="yesno"/>
44                        <xs:attribute name="exposeData" use="required" type="yesno"/>
45                    </xs:complexType>
46                </xs:element>
47                <xs:element name="requirements" minOccurs="1" maxOccurs="1">
48                    <xs:complexType>
49                        <xs:sequence>
50                            <xs:element name="tattertools" minOccurs="1" maxOccurs="1" type="xs:token"/>
51                            <xs:element name="textcube" minOccurs="0" maxOccurs="1" type="xs:token"/>
52                        </xs:sequence>
53                    </xs:complexType>
54                </xs:element>
55                <xs:element name="storage" minOccurs="0" maxOccurs="1" type="storage"/>
56                <xs:element name="binding" minOccurs="0" maxOccurs="1">
57                    <xs:complexType>
58                        <xs:sequence>
59                            <xs:element name="listener" type="listener" minOccurs="0" maxOccurs="unbounded"/>
60                            <xs:element name="tag" type="tag" minOccurs="0" maxOccurs="unbounded"/>
61                            <xs:element name="sidebar" type="sidebar" minOccurs="0" maxOccurs="unbounded"/>
62                            <xs:element name="center" type="center" minOccurs="0" maxOccurs="unbounded"/>
63                            <xs:element name="adminMenu" type="adminMenu" minOccurs="0" maxOccurs="unbounded"/>
64                            <xs:element name="config" type="config" minOccurs="0" maxOccurs="1"/>
65                        </xs:sequence>
66                    </xs:complexType>
67                </xs:element>
68            </xs:sequence>
69            <xs:attribute name="version" use="required" type="xs:decimal"/>
70        </xs:complexType>
71    </xs:element>
72
73    <xs:complexType name="storage">
74        <xs:sequence>
75            <xs:element name="table" minOccurs="1" maxOccurs="unbounded">
76                <xs:complexType>
77                    <xs:sequence>
78                        <xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:token"/>
79                        <xs:element name="fields" minOccurs="1" maxOccurs="1">
80                            <xs:complexType>
81                                <xs:sequence>
82                                    <xs:element name="field" minOccurs="1" maxOccurs="unbounded">
83                                        <xs:complexType>
84                                            <xs:sequence>
85                                                <xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:token"/>
86                                                <xs:element name="attributes" minOccurs="1" maxOccurs="1" type="xs:token"/>
87                                                <xs:element name="length" minOccurs="0" maxOccurs="1" type="xs:unsignedInt"/>
88                                                <xs:element name="isnull" minOccurs="0" maxOccurs="1" type="xs:boolean"/>
89                                                <xs:element name="default" minOccurs="0" maxOccurs="1" type="xs:string"/>
90                                                <xs:element name="autoincrement" minOccurs="0" maxOccurs="1" type="xs:boolean"/>
91                                            </xs:sequence>
92                                        </xs:complexType>
93                                    </xs:element>
94                                </xs:sequence>
95                            </xs:complexType>
96                        </xs:element>
97                        <xs:element name="key" minOccurs="0" maxOccurs="unbounded" type="xs:token"/>
98                    </xs:sequence>
99                </xs:complexType>
100            </xs:element>
101        </xs:sequence>
102    </xs:complexType>
103
104    <xs:complexType name="tag">
105        <xs:attribute name="name" use="required" type="xs:token"/>
106        <xs:attribute name="handler" use="required" type="functionName"/>
107    </xs:complexType>
108    <xs:complexType name="sidebar">
109        <xs:sequence>
110            <xs:element name="params">
111                <xs:complexType>
112                    <xs:sequence>
113                        <xs:element name="param">
114                            <xs:complexType>
115                                <xs:sequence>
116                                    <xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:token"/>
117                                    <xs:element name="type" minOccurs="1" maxOccurs="1" type="paramType"/>
118                                    <xs:element name="title" minOccurs="1" maxOccurs="unbounded">
119                                        <xs:complexType>
120                                            <xs:simpleContent>
121                                                <xs:extension base="xs:normalizedString">
122                                                    <xs:attribute ref="xml:lang"/>
123                                                </xs:extension>
124                                            </xs:simpleContent>
125                                        </xs:complexType>
126                                    </xs:element>
127                                </xs:sequence>
128                            </xs:complexType>
129                        </xs:element>
130                    </xs:sequence>
131                </xs:complexType>
132            </xs:element>
133        </xs:sequence>
134        <xs:attribute name="title" use="required" type="xs:token"/>
135        <xs:attribute name="handler" use="required" type="functionName"/>
136    </xs:complexType>
137    <xs:complexType name="listener">
138        <xs:simpleContent>
139            <xs:extension base="functionName">
140                <xs:attribute name="event" use="required" type="xs:token"/>
141            </xs:extension>
142        </xs:simpleContent>
143    </xs:complexType>
144    <xs:complexType name="center">
145    </xs:complexType>
146    <xs:complexType name="adminMenu">
147        <xs:sequence>
148            <xs:element name="viewMethods">
149                <xs:complexType>
150                    <xs:sequence>
151                        <xs:element name="method">
152                            <xs:complexType>
153                                <xs:sequence>
154                                    <xs:element name="title" minOccurs="1" maxOccurs="unbounded" type="xs:token"/>
155                                    <xs:element name="position" type="xs:token"/>
156                                    <xs:element name="helpurl" type="xs:anyURI"/>
157                                    <xs:element name="handler" minOccurs="1" maxOccurs="1" type="functionName"/>
158                                    <xs:element name="params">
159                                        <xs:complexType>
160                                            <xs:sequence>
161                                                <xs:element maxOccurs="unbounded" name="param">
162                                                    <xs:complexType>
163                                                        <xs:sequence>
164                                                            <xs:element name="name" minOccurs="1" maxOccurs="1" type="xs:token"/>
165                                                            <xs:element name="type" minOccurs="1" maxOccurs="1" type="parameterType"/>
166                                                            <xs:choice minOccurs="0" maxOccurs="1">
167                                                                <xs:element name="default" type="xs:string"/>
168                                                                <xs:element name="mandatory" type="boolean"/>
169                                                            </xs:choice>
170                                                        </xs:sequence>
171                                                    </xs:complexType>
172                                                </xs:element>
173                                            </xs:sequence>
174                                        </xs:complexType>
175                                    </xs:element>
176                                </xs:sequence>
177                            </xs:complexType>
178                        </xs:element>
179                    </xs:sequence>
180                </xs:complexType>
181            </xs:element>
182        </xs:sequence>
183    </xs:complexType>
184    <xs:complexType name="config">
185        <xs:sequence>
186            <xs:element name="fieldset" minOccurs="0" maxOccurs="unbounded">
187                <xs:complexType>
188                    <xs:sequence>
189                        <xs:element name="field" minOccurs="0" maxOccurs="unbounded">
190                            <xs:complexType>
191                                <xs:sequence>
192                                    <xs:element name="op" minOccurs="0" maxOccurs="unbounded">
193                                        <xs:complexType>
194                                            <xs:simpleContent>
195                                                <xs:extension base="xs:string">
196                                                    <xs:attribute name="name" use="required" type="xs:token"/>
197                                                    <xs:attribute name="value" type="xs:string"/>
198                                                    <xs:attribute name="checked" type="xs:string"/>
199                                                </xs:extension>
200                                            </xs:simpleContent>
201                                        </xs:complexType>
202                                    </xs:element>
203                                    <xs:element name="caption" minOccurs="0" maxOccurs="1" type="xs:string"/>
204                                </xs:sequence>
205                                <xs:attribute name="title" use="required" type="xs:normalizedString"/>
206                                <xs:attribute name="name" use="required" type="xs:token"/>
207                                <xs:attribute name="type" use="required" type="fieldType"/>
208                                <xs:attribute name="value" type="xs:string"/>
209                                <xs:attribute name="titledirection" type="fieldTitleDirection"/>
210                                <xs:attribute name="size" type="xs:unsignedInt"/>
211                                <xs:attribute name="rows" type="xs:unsignedInt"/>
212                                <xs:attribute name="cols" type="xs:unsignedInt"/>
213                            </xs:complexType>
214                        </xs:element>
215                    </xs:sequence>
216                    <xs:attribute name="legend" type="xs:normalizedString"/>
217                </xs:complexType>
218            </xs:element>
219        </xs:sequence>
220        <xs:attribute name="dataValHandler" type="functionName"/>
221        <xs:attribute name="manifestHandler" type="functionName"/>
222    </xs:complexType>
223
224    <xs:simpleType name="yesno">
225        <xs:restriction base="xs:string">
226            <xs:pattern value="yes|no"/>
227        </xs:restriction>
228    </xs:simpleType>
229    <xs:simpleType name="boolean">
230        <xs:restriction base="xs:integer">
231            <xs:minInclusive value="0"/>
232            <xs:maxInclusive value="1"/>
233        </xs:restriction>
234    </xs:simpleType>
235    <xs:simpleType name="functionName">
236        <xs:restriction base="xs:NMTOKEN"/>
237    </xs:simpleType>
238    <xs:simpleType name="paramType">
239        <xs:restriction base="xs:token">
240            <xs:enumeration value="string"/>
241            <xs:enumeration value="int"/>
242            <xs:enumeration value="textarea"/>
243        </xs:restriction>
244    </xs:simpleType>
245    <xs:simpleType name="parameterType">
246        <xs:restriction base="xs:token">
247            <xs:enumeration value="any"/>
248            <xs:enumeration value="bool"/>
249            <xs:enumeration value="number"/>
250            <xs:enumeration value="int"/>
251            <xs:enumeration value="id"/>
252            <xs:enumeration value="url"/>
253            <xs:enumeration value="string"/>
254            <xs:enumeration value="list"/>
255            <xs:enumeration value="timestamp"/>
256            <xs:enumeration value="period"/>
257            <xs:enumeration value="ip"/>
258            <xs:enumeration value="domain"/>
259            <xs:enumeration value="email"/>
260            <xs:enumeration value="language"/>
261            <xs:enumeration value="filename"/>
262            <xs:enumeration value="directory"/>
263            <xs:enumeration value="path"/>
264            <xs:enumeration value="file"/>
265        </xs:restriction>
266    </xs:simpleType>
267    <xs:simpleType name="fieldType">
268        <xs:restriction base="xs:string">
269            <xs:enumeration value="text"/>
270            <xs:enumeration value="textarea"/>
271            <xs:enumeration value="select"/>
272            <xs:enumeration value="checkbox"/>
273            <xs:enumeration value="radio"/>
274        </xs:restriction>
275    </xs:simpleType>
276    <xs:simpleType name="fieldTitleDirection">
277        <xs:restriction base="xs:string">
278            <xs:enumeration value="bk"/>
279            <xs:enumeration value=""/>
280        </xs:restriction>
281    </xs:simpleType>
282</xs:schema>