build hacks, r3 release
[android_pandora.git] / pnd / PXML_schema.xsd
CommitLineData
34a1da07 1<?xml version="1.0" encoding="utf-8"?>
2<xs:schema targetNamespace="http://openpandora.org/namespaces/PXML" xmlns="http://openpandora.org/namespaces/PXML" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">
3
4
5 <!-- declare some simpleTypes for later usage -->
6
7 <!-- Specify params allows with the 'x11' entry in exec -->
8 <xs:simpleType name="x11Param">
9 <xs:restriction base="xs:string">
10 <xs:enumeration value="req" />
11 <xs:enumeration value="stop" />
12 <xs:enumeration value="ignore" />
13 </xs:restriction>
14 </xs:simpleType>
15
16 <!-- Specify the valid documentation formats in the <info> block -->
17 <xs:simpleType name="docType">
18 <xs:restriction base="xs:string">
19 <xs:enumeration value="text/html" />
20 <xs:enumeration value="text/plain" />
21 </xs:restriction>
22 </xs:simpleType>
23
24 <!-- Make sure that version numbers only consist of letters, numbers and + as well as - -->
25 <xs:simpleType name="versionNumber">
26 <xs:restriction base="xs:string">
27 <xs:minLength value="1"/>
28 <xs:pattern value="[a-zA-Z0-9+-]*" />
29 </xs:restriction>
30 </xs:simpleType>
31
32 <!-- Specify what is valid as release type -->
33 <xs:simpleType name="releaseType">
34 <xs:restriction base="xs:string">
35 <xs:enumeration value="alpha" />
36 <xs:enumeration value="beta" />
37 <xs:enumeration value="release" />
38 </xs:restriction>
39 </xs:simpleType>
40
41 <!-- Specify what makes an email address "valid" -->
42 <xs:simpleType name="emailAddress">
43 <xs:restriction base="xs:string">
44 <xs:pattern value="[^@]+@[^\.]+\..+"/>
45 </xs:restriction>
46 </xs:simpleType>
47
48 <!-- some restrictions regarding file names that are eg not allowed/possible when using sd cards formated as fat32 -->
49 <xs:simpleType name="dumbPath">
50 <xs:restriction base="xs:normalizedString">
51 <xs:pattern value="[^?>:]+" />
52 </xs:restriction>
53 </xs:simpleType>
54 <xs:simpleType name="dumbFolderName">
55 <xs:restriction base="xs:normalizedString">
56 <xs:pattern value="[^?>:/]+" />
57 </xs:restriction>
58 </xs:simpleType>
59
60 <!-- Specify lang codes -->
61 <xs:simpleType name="isoLangcode">
62 <xs:restriction base="xs:string">
63 <xs:minLength value="2"/>
64 <xs:pattern value="[a-zA-Z]{2,3}(_[a-zA-Z0-9]{2,3})*" />
65 </xs:restriction>
66 </xs:simpleType>
67 <xs:simpleType name="isoLangcode_en_US">
68 <xs:restriction base="xs:string">
69 <xs:enumeration value="en_US" />
70 </xs:restriction>
71 </xs:simpleType>
72
73 <!-- Definition of all allowed categories following the FDO specs -->
74 <xs:simpleType name="fdoCategory">
75 <xs:restriction base="xs:string">
76 <xs:pattern value="AudioVideo|Audio|Video|Development|Education|Game|Graphics|Network|Office|Settings|System|Utility"/>
77 </xs:restriction>
78 </xs:simpleType>
79 <!-- Definition of all allowed subcategories following the FDO specs (should be based upon the given main categories, but would significantly increase complexity of the schema) -->
80 <xs:simpleType name="fdoSubCategory">
81 <xs:restriction base="xs:string">
82 <xs:pattern value="Building|Debugger|IDE|GUIDesigner|Profiling|RevisionControl|Translation|Calendar|ContactManagement|Database|Dictionary|Chart|Email|Finance|FlowChart|PDA|ProjectManagement|Presentation|Spreadsheet|WordProcessor|2DGraphics|VectorGraphics|RasterGraphics|3DGraphics|Scanning|OCR|Photography|Publishing|Viewer|TextTools|DesktopSettings|HardwareSettings|Printing|PackageManager|Dialup|InstantMessaging|Chat|IRCClient|FileTransfer|HamRadio|News|P2P|RemoteAccess|Telephony|TelephonyTools|VideoConference|WebBrowser|WebDevelopment|Midi|Mixer|Sequencer|Tuner|TV|AudioVideoEditing|Player|Recorder|DiscBurning|ActionGame|AdventureGame|ArcadeGame|BoardGame|BlocksGame|CardGame|KidsGame|LogicGame|RolePlaying|Simulation|SportsGame|StrategyGame|Art|Construction|Music|Languages|Science|ArtificialIntelligence|Astronomy|Biology|Chemistry|ComputerScience|DataVisualization|Economy|Electricity|Geography|Geology|Geoscience|History|ImageProcessing|Literature|Math|NumericalAnalysis|MedicalSoftware|Physics|Robotics|Sports|ParallelComputing|Amusement|Archiving|Compression|Electronics|Emulator|Engineering|FileTools|FileManager|TerminalEmulator|Filesystem|Monitor|Security|Accessibility|Calculator|Clock|TextEditor|Documentation|Core|KDE|GNOME|GTK|Qt|Motif|Java|ConsoleOnly"/>
83 </xs:restriction>
84 </xs:simpleType>
85
86 <!-- Create some way to enforce entries to be nonempty -->
87 <xs:simpleType name="nonempty_token">
88 <xs:restriction base="xs:token">
89 <xs:minLength value="1"/>
90 </xs:restriction>
91 </xs:simpleType>
92 <xs:simpleType name="nonempty_string">
93 <xs:restriction base="xs:string">
94 <xs:minLength value="1"/>
95 </xs:restriction>
96 </xs:simpleType>
97 <xs:simpleType name="nonempty_normalizedString">
98 <xs:restriction base="xs:string">
99 <xs:minLength value="1"/>
100 </xs:restriction>
101 </xs:simpleType>
102
103
104
105 <!-- declare some complexTypes for later usage -->
106
107 <!-- type used for file associations -->
108 <xs:complexType name="association_data">
109 <xs:attribute name="name" use="required" type="nonempty_normalizedString" />
110 <xs:attribute name="filetype" use="required" type="nonempty_token" />
111 <xs:attribute name="exec" use="required" type="nonempty_token" />
112 </xs:complexType>
113
114 <!-- type used for author info -->
115 <xs:complexType name="author_data">
116 <xs:attribute name="name" use="required" type="nonempty_normalizedString" />
117 <xs:attribute name="website" use="optional" type="xs:anyURI" />
118 <xs:attribute name="email" use="optional" type="emailAddress" />
119 </xs:complexType>
120
121 <!-- type used for version informations (full entry as well as os version) -->
122 <xs:complexType name="app_version_info">
123 <xs:attribute name="major" use="required" type="versionNumber" />
124 <xs:attribute name="minor" use="required" type="versionNumber" />
125 <xs:attribute name="release" use="required" type="versionNumber" />
126 <xs:attribute name="build" use="required" type="versionNumber" />
127 <xs:attribute name="type" use="optional" type="releaseType" />
128 </xs:complexType>
129 <xs:complexType name="os_version_info">
130 <xs:attribute name="major" use="required" type="versionNumber" />
131 <xs:attribute name="minor" use="required" type="versionNumber" />
132 <xs:attribute name="release" use="required" type="versionNumber" />
133 <xs:attribute name="build" use="required" type="versionNumber" />
134 </xs:complexType>
135
136 <!-- type used for exec entries -->
137 <xs:complexType name="exec_params">
138 <xs:attribute name="command" use="required" type="nonempty_token" />
139 <xs:attribute name="arguments" use="optional" type="nonempty_token" />
140 <xs:attribute name="background" use="optional" type="xs:boolean" />
141 <xs:attribute name="startdir" use="optional" type="dumbPath" />
142 <xs:attribute name="standalone" use="optional" type="xs:boolean" />
143 <xs:attribute name="x11" use="optional" type="x11Param" />
144 </xs:complexType>
145
146 <!-- type used for tiles or descriptions, once in 'normal' version, once enforcing usage of en_US -->
147 <xs:complexType name="title_or_description">
148 <xs:simpleContent>
149 <xs:extension base="nonempty_string">
150 <xs:attribute name="lang" use="required" type="isoLangcode" />
151 </xs:extension>
152 </xs:simpleContent>
153 </xs:complexType>
154 <xs:complexType name="title_or_description_enUS">
155 <xs:simpleContent>
156 <xs:extension base="nonempty_string">
157 <xs:attribute name="lang" use="required" type="isoLangcode_en_US" />
158 </xs:extension>
159 </xs:simpleContent>
160 </xs:complexType>
161
162 <!-- type used for referencing images -->
163 <xs:complexType name="image_entry">
164 <xs:attribute name="src" use="required" type="dumbPath" />
165 </xs:complexType>
166
167 <!-- type for referencing manuals/readme docs -->
168 <xs:complexType name="information_entry">
169 <xs:attribute name="name" use="required" type="nonempty_normalizedString" />
170 <xs:attribute name="type" use="required" type="docType" />
171 <xs:attribute name="src" use="required" type="dumbPath" />
172 </xs:complexType>
173
174 <!-- type used for the license information -->
175 <xs:complexType name="license_info">
176 <xs:attribute name="name" use="required" type="nonempty_normalizedString" />
177 <xs:attribute name="url" use="optional" type="xs:anyURI" />
178 <xs:attribute name="sourcecodeurl" use="optional" type="xs:anyURI" />
179 </xs:complexType>
180
181
182
183 <!-- Combine the symple and complex types into the "real" PXML specification -->
184
185 <xs:element name="PXML">
186 <xs:complexType>
187 <xs:sequence>
188 <!-- specify the <package> tag with info about the complete package, information providable:
189 author
190 version
191 title(s)
192 description(s)
193 icon
194 -->
195 <xs:element name="package" minOccurs="1" maxOccurs="1">
196 <xs:complexType>
197 <xs:all>
198 <!--Author info-->
199 <xs:element name="author" type="author_data" minOccurs="1" />
200 <!--App version info-->
201 <xs:element name="version" type="app_version_info" minOccurs="1" />
202 <!--Title-->
203 <xs:element name="titles" minOccurs="1">
204 <xs:complexType>
205 <xs:sequence>
206 <xs:element name="title" type="title_or_description_enUS" minOccurs="1" maxOccurs="1" />
207 <xs:element name="title" type="title_or_description" minOccurs="0" maxOccurs="unbounded" />
208 </xs:sequence>
209 </xs:complexType>
210 </xs:element>
211 <!--Description-->
212 <xs:element name="descriptions" minOccurs="0">
213 <xs:complexType>
214 <xs:sequence>
215 <xs:element name="title" type="title_or_description_enUS" minOccurs="0" maxOccurs="1" />
216 <xs:element name="description" type="title_or_description" minOccurs="0" maxOccurs="unbounded" />
217 </xs:sequence>
218 </xs:complexType>
219 </xs:element>
220 <!--Icon-->
221 <xs:element name="icon" type="image_entry" minOccurs="0" />
222 </xs:all>
223 <!--Package ID-->
224 <xs:attribute name="id" use="required" type="dumbFolderName" />
225 </xs:complexType>
226 </xs:element>
227 <!-- specify the <application> tag with info about a single program
228 executable call
229 author
230 version (of the application)
231 osversion (min OS version supported)
232 title(s) (allowing compatibility to <HF6, too!)
233 description(s) (allowing compatibility to <HF6, too!)
234 icon
235 license
236 preview pictures
237 info/manual/readme entry
238 categories
239 associations to file types
240 clockspeed
241 -->
242 <xs:element name="application" minOccurs="1" maxOccurs="unbounded">
243 <xs:complexType>
244 <xs:all>
245 <!--Execution params -->
246 <xs:element name="exec" type="exec_params" minOccurs="1" />
247 <!--Author info-->
248 <xs:element name="author" type="author_data" minOccurs="1" />
249 <!--App version info-->
250 <xs:element name="version" type="app_version_info" minOccurs="1" />
251 <!--OS Version info-->
252 <xs:element name="osversion" type="os_version_info" minOccurs="0" />
253 <!--Title-->
254 <!-- via <titles> element, used for HF6+ -->
255 <xs:element name="titles" minOccurs="1">
256 <xs:complexType>
257 <xs:sequence>
258 <xs:element name="title" type="title_or_description_enUS" minOccurs="1" maxOccurs="1" />
259 <xs:element name="title" type="title_or_description" minOccurs="0" maxOccurs="unbounded" />
260 </xs:sequence>
261 </xs:complexType>
262 </xs:element>
263 <!--Title-->
264 <!-- via <title> element, only one for en_US allowed, meant for backwards compatibility with libpnd from <HF6 -->
265 <xs:element name="title" type="title_or_description_enUS" minOccurs="0" />
266 <!--Description-->
267 <!-- via <descriptions> element, used for HF6+ -->
268 <xs:element name="descriptions" minOccurs="0">
269 <xs:complexType>
270 <xs:sequence>
271 <xs:element name="description" type="title_or_description_enUS" minOccurs="1" maxOccurs="1" />
272 <xs:element name="description" type="title_or_description" minOccurs="0" maxOccurs="unbounded" />
273 </xs:sequence>
274 </xs:complexType>
275 </xs:element>
276 <!--Description-->
277 <!-- via <description> element, only one for en_US allowed, meant for backwards compatibility with libpnd from <HF6 -->
278 <xs:element name="description" type="title_or_description_enUS" minOccurs="0" />
279 <!--Icon-->
280 <xs:element name="icon" type="image_entry" minOccurs="0" />
281 <!--License-->
282 <xs:element name="licenses" minOccurs="1">
283 <xs:complexType>
284 <xs:sequence>
285 <xs:element name="license" type="license_info" minOccurs="1" maxOccurs="unbounded" />
286 </xs:sequence>
287 </xs:complexType>
288 </xs:element>
289 <!--Preview pics-->
290 <xs:element name="previewpics" minOccurs="0">
291 <xs:complexType>
292 <xs:sequence>
293 <xs:element name="pic" type="image_entry" minOccurs="0" maxOccurs="unbounded" />
294 </xs:sequence>
295 </xs:complexType>
296 </xs:element>
297 <!--Info (aka manual or readme entry)-->
298 <xs:element name="info" type="information_entry" minOccurs="0" />
299 <!--Categories-->
300 <xs:element name="categories" minOccurs="1">
301 <xs:complexType>
302 <xs:sequence>
303 <xs:element name="category" minOccurs="1" maxOccurs="unbounded">
304 <xs:complexType>
305 <xs:sequence>
306 <xs:element name="subcategory" minOccurs="0" maxOccurs="unbounded">
307 <xs:complexType>
308 <xs:attribute name="name" type="fdoSubCategory" />
309 </xs:complexType>
310 </xs:element>
311 </xs:sequence>
312 <xs:attribute name="name" use="required" type="fdoCategory" />
313 </xs:complexType>
314 </xs:element>
315 </xs:sequence>
316 </xs:complexType>
317 </xs:element>
318 <!--Associations-->
319 <xs:element name="associations" minOccurs="0">
320 <xs:complexType>
321 <xs:sequence>
322 <xs:element name="association" type="association_data" maxOccurs="unbounded" />
323 </xs:sequence>
324 </xs:complexType>
325 </xs:element>
326 <!--Clockspeed-->
327 <xs:element name="clockspeed" minOccurs="0">
328 <xs:complexType>
329 <xs:attribute name="frequency" use="required" type="xs:positiveInteger" />
330 </xs:complexType>
331 </xs:element>
332 </xs:all>
333 <!--AppID-->
334 <xs:attribute name="id" use="required" type="dumbFolderName" />
335 <xs:attribute name="appdata" use="optional" type="dumbFolderName" />
336 </xs:complexType>
337 </xs:element>
338 </xs:sequence>
339 </xs:complexType>
340 </xs:element>
341</xs:schema>