Updated documentation (PXML_schema.xsd and human readable version) and genpxml.sh...
[pandora-libraries.git] / docs / PXML_schema.xsd
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         <xs:simpleType name="x11Param">
5                 <xs:restriction base="xs:string">
6                         <xs:enumeration value="req" />
7                         <xs:enumeration value="stop" />
8                         <xs:enumeration value="ignore" />
9                 </xs:restriction>
10         </xs:simpleType>
11         
12         <xs:simpleType name="docType">
13                 <xs:restriction base="xs:string">
14                         <xs:enumeration value="text/html" />
15                         <xs:enumeration value="text/plain" />
16                 </xs:restriction>
17         </xs:simpleType>
18         
19         <xs:simpleType name="versionNumber">
20                 <xs:restriction base="xs:string">
21                         <xs:minLength value="1"/>
22                         <xs:pattern value="[a-zA-Z0-9+-]*" />
23                 </xs:restriction>
24         </xs:simpleType>
25         
26         <xs:simpleType name="emailAddress">
27                 <xs:restriction base="xs:string">
28                         <xs:pattern value="[^@]+@[^\.]+\..+"/>
29                 </xs:restriction>
30         </xs:simpleType>
31         
32         <xs:simpleType name="dumbPath">
33                 <xs:restriction base="xs:normalizedString">
34                         <xs:pattern value="[^?>:]+" />
35                 </xs:restriction>
36         </xs:simpleType>
37         
38         <xs:simpleType name="dumbFolderName">
39                 <xs:restriction base="xs:normalizedString">
40                         <xs:pattern value="[^?>:/]+" />
41                 </xs:restriction>
42         </xs:simpleType>
43         
44         <xs:simpleType name="isoLangcode">
45                 <xs:restriction base="xs:string">
46                         <xs:minLength value="2"/>
47                         <xs:pattern value="[a-zA-Z]{2,3}(_[a-zA-Z0-9]{2,3})*" />
48                 </xs:restriction>
49         </xs:simpleType>
50         
51         <!-- Definition of all allowed categories following the FDO specs -->
52         <xs:simpleType name="fdoCategory">
53                 <xs:restriction base="xs:string">
54                         <xs:pattern value="AudioVideo|Audio|Video|Development|Education|Game|Graphics|Network|Office"/>
55                 </xs:restriction>
56         </xs:simpleType>
57         
58         <!-- Definition of all allowed subcategories following the FDO specs -->
59         <xs:simpleType name="fdoSubCategory">
60                 <xs:restriction base="xs:string">
61                         <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"/>
62                 </xs:restriction>
63         </xs:simpleType>
64         
65         
66         <xs:element name="PXML">
67                 <xs:complexType>
68                         <xs:sequence>
69                                 <xs:element name="application" minOccurs="1" maxOccurs="unbounded">
70                                         <xs:complexType>
71                                                 <xs:sequence>
72                                                         <!--Execution params -->
73                                                         <xs:element name="exec" minOccurs="1">
74                                                                 <xs:complexType>
75                                                                         <xs:attribute name="command" use="required" type="xs:token" />
76                                                                         <xs:attribute name="arguments" use="optional" type="xs:token" />
77                                                                         <xs:attribute name="background" use="optional" type="xs:boolean" />
78                                                                         <xs:attribute name="startdir" use="optional" type="dumbPath" />
79                                                                         <xs:attribute name="standalone" use="optional" type="xs:boolean" />
80                                                                         <xs:attribute name="x11" use="optional" type="x11Param" />
81                                                                 </xs:complexType>
82                                                         </xs:element>
83                                                         <!--Title-->
84                                                         <xs:sequence>
85                                                                 <xs:element name="title" minOccurs="1" maxOccurs="unbounded">
86                                                                         <xs:complexType>
87                                                                                 <xs:simpleContent>
88                                                                                         <xs:extension base="xs:string">
89                                                                                                 <xs:attribute name="lang" type="isoLangcode" />
90                                                                                         </xs:extension>
91                                                                                 </xs:simpleContent>
92                                                                         </xs:complexType>
93                                                                 </xs:element>
94                                                         </xs:sequence>
95                                                         <!--Author info-->
96                                                         <xs:element name="author" minOccurs="1">
97                                                                 <xs:complexType>
98                                                                         <xs:attribute name="name" use="required" type="xs:normalizedString" />
99                                                                         <xs:attribute name="website" use="optional" type="xs:anyURI" />
100                                                                         <xs:attribute name="email" use="optional" type="emailAddress" />
101                                                                 </xs:complexType>
102                                                         </xs:element>
103                                                         <!--App version info-->
104                                                         <xs:element name="version" minOccurs="1">
105                                                                 <xs:complexType>
106                                                                         <xs:attribute name="major" use="required" type="versionNumber" />
107                                                                         <xs:attribute name="minor" use="required" type="versionNumber" />
108                                                                         <xs:attribute name="release" use="required" type="versionNumber" />
109                                                                         <xs:attribute name="build" use="required" type="versionNumber" />
110                                                                 </xs:complexType>
111                                                         </xs:element>
112                                                         <!--OS Version info-->
113                                                         <xs:element name="osversion" minOccurs="0">
114                                                                 <xs:complexType>
115                                                                         <xs:attribute name="major" use="required" type="versionNumber" />
116                                                                         <xs:attribute name="minor" use="required" type="versionNumber" />
117                                                                         <xs:attribute name="release" use="required" type="versionNumber" />
118                                                                         <xs:attribute name="build" use="required" type="versionNumber" />
119                                                                 </xs:complexType>
120                                                         </xs:element>
121                                                         <!--Description-->
122                                                         <xs:sequence>
123                                                                 <xs:element name="description" minOccurs="0" maxOccurs="unbounded">
124                                                                         <xs:complexType>
125                                                                                 <xs:simpleContent>
126                                                                                         <xs:extension base="xs:string">
127                                                                                                 <xs:attribute name="lang" use="required" type="isoLangcode" />
128                                                                                         </xs:extension>
129                                                                                 </xs:simpleContent>
130                                                                         </xs:complexType>
131                                                                 </xs:element>
132                                                         </xs:sequence>
133                                                         <!--Icon-->
134                                                         <xs:element name="icon" minOccurs="0">
135                                                                 <xs:complexType>
136                                                                         <xs:attribute name="src" use="required" type="dumbPath" />
137                                                                 </xs:complexType>
138                                                         </xs:element>
139                                                         <!--Preview pics-->
140                                                         <xs:element name="previewpics" minOccurs="0">
141                                                                 <xs:complexType>
142                                                                         <xs:sequence>
143                                                                                 <xs:element name="pic" minOccurs="0" maxOccurs="unbounded">
144                                                                                         <xs:complexType>
145                                                                                                 <xs:attribute name="src" use="required" type="dumbPath" />
146                                                                                         </xs:complexType>
147                                                                                 </xs:element>
148                                                                         </xs:sequence>
149                                                                 </xs:complexType>
150                                                         </xs:element>
151                                                         <!--Info (aka manual or readme entry)-->
152                                                         <xs:element name="info" minOccurs="0">
153                                                                 <xs:complexType>
154                                                                         <xs:attribute name="name" use="required" type="xs:normalizedString" />
155                                                                         <xs:attribute name="type" use="required" type="docType" />
156                                                                         <xs:attribute name="src" use="required" type="dumbPath" />
157                                                                 </xs:complexType>
158                                                         </xs:element>
159                                                         <!--Categories-->
160                                                         <xs:element name="categories" minOccurs="1">
161                                                                 <xs:complexType>
162                                                                         <xs:sequence>
163                                                                                 <xs:element name="category" maxOccurs="unbounded">
164                                                                                         <xs:complexType>
165                                                                                                 <xs:sequence>
166                                                                                                         <xs:element name="subcategory" maxOccurs="unbounded">
167                                                                                                                 <xs:complexType>
168                                                                                                                         <xs:attribute name="name" type="fdoSubCategory" />
169                                                                                                                 </xs:complexType>
170                                                                                                         </xs:element>
171                                                                                                 </xs:sequence>
172                                                                                                 <xs:attribute name="name" use="required" type="fdoCategory" />
173                                                                                         </xs:complexType>
174                                                                                 </xs:element>
175                                                                         </xs:sequence>
176                                                                 </xs:complexType>
177                                                         </xs:element>
178                                                         <!--Associations-->
179                                                         <xs:element name="associations" minOccurs="0">
180                                                                 <xs:complexType>
181                                                                         <xs:sequence>
182                                                                                 <xs:element name="association" maxOccurs="unbounded">
183                                                                                         <xs:complexType>
184                                                                                                 <xs:attribute name="name" use="required" type="xs:normalizedString" />
185                                                                                                 <xs:attribute name="filetype" use="required" type="xs:token" />
186                                                                                                 <xs:attribute name="arguments" use="required" type="xs:token" />
187                                                                                         </xs:complexType>
188                                                                                 </xs:element>
189                                                                         </xs:sequence>
190                                                                 </xs:complexType>
191                                                         </xs:element>
192                                                         <!--Clockspeed-->
193                                                         <xs:element name="clockspeed" minOccurs="0">
194                                                                 <xs:complexType>
195                                                                         <xs:attribute name="frequency" use="required" type="xs:positiveInteger" />
196                                                                 </xs:complexType>
197                                                         </xs:element>
198                                                 </xs:sequence>
199                                                 <!--AppID-->
200                                                 <xs:attribute name="id" use="required" type="dumbFolderName" />
201                                                 <xs:attribute name="appdata" use="optional" type="dumbFolderName" />
202                                         </xs:complexType>
203                                 </xs:element>
204                         </xs:sequence>
205                 </xs:complexType>
206         </xs:element>
207 </xs:schema>