98e8f691dcacfb1df8ac82714c7f9e153a49903a
[pandora-libraries.git] / docs / PXML_schema_plaintext.txt
1
2 NOTES:
3
4 Note 1) PXML_schema.xsd is overly picky about line-ordering; the line order is not required in practice,
5         but requiring the ordering makes the validator happy; this the validator may reject a valid PXML.xml
6 Note 2) libpnd is not (currently) as picky as the validator (since it only consumes some values, and will
7         sometimes 'trust' bad values in hopes things will just work anyway), but many of the online download
8         repositories _will_ use this validator, so it is probably a good idea to make your PXMLs conform!
9 Note 3) These points aside -- anything passing the validator should pass into libpnd just fint; PXML.xmls that
10         do not pass the validator may well work with libpnd, depending on the nature of the rejection --
11         if the PXML.xml is just bad, fix it! But if the validator rejects the PXML.xml on grounds of
12         bad categories or line ordering or whatever, then libpnd will 'accept' the application, but may
13         massage things to work.
14 Note 4) minimenu and xfce and other Freedesktop Statandard adhering applications may actually be pickier about
15         some things than the validator -- the validator will verify the categories and subcategories are
16         known to the Freedesktop spec, but does not validate that a FD subcategory actually belongs to the
17         listed parent category. 
18
19 Now, onto the actual specification:
20
21 1) at the root there is *exactly* one PXML block
22 2) inside this PXML block are >=1 <application> blocks
23         (required) id=DUMBFOLDERNAME
24         (optional) appdata=DUMBFOLDERNAME
25
26 inside each application block:
27 1) =1 <exec>
28         (required) command=TOKEN
29         (optional) arguments=TOKEN
30         (optional) background=BOOLEAN
31         (optional) startdir=DUMBPATH
32         (optional) standalone=BOOLEAN
33         (optional) x11=[req|stop|ignore]
34 2) >=1 <title>TEXT</title>
35         (required) lang=LANGCODE ( [a-zA-Z]{2,3}(_[a-zA-Z0-9]{2,3})* )
36 3) =1 <author>
37         (required) name=TEXT
38         (optional) website=anyURI
39         (optional) email=EMAILADDRESS
40 4) =1 <version>
41         (required) major=VERSION_NR
42         (required) minor=VERSION_NR
43         (required) release=VERSION_NR
44         (required) build=VERSION_NR
45 5) <=1 <osversion>
46         (required) major=VERSION_NR
47         (required) minor=VERSION_NR
48         (required) release=VERSION_NR
49         (required) build=VERSION_NR
50 6) >=0 <description>TEXT</description>
51         (required) lang=LANGCODE ( [a-zA-Z]{2,3}(_[a-zA-Z0-9]{2,3})* )
52 7) <=1 <icon>
53         (required) src=DUMBPATH
54 8) <=1 <previewpics>
55         (optional) >=0 <pic>
56                         (required) src=DUMBPATH
57 9) <=1 <info>
58         (required) name=TEXT
59         (required) type=[text/html|text/plain]
60         (required) src=DUMBPATH
61 10)=1 <categories>
62         (required) >=1 <category>
63                         (required) name=fdoCategory
64                         (optional) <subcategory>
65                                   (required) name=fdoSubCategory
66 11)<=1 <associations>
67         (required) >=1 <association>
68                         (required) name=TEXT
69                         (required) filetype=TOKEN
70                         (required) arguments=TOKEN
71 12)<=1 <clockspeed>
72         (required) frequency=positiveInteger
73
74
75
76 Filetype/variable explaination:
77 anyURI: should be some URL, no idea what exactly XML accepts there... (XML variable 'anyURI'!)
78 BOOLEAN: 0 or 1 or true or false (XML variable 'boolean'!)
79 DUMBFOLDERNAME: TEXT without ?>:/
80 DUMBPATH: TEXT without ?>:
81 EMAILADDRESS: [^@]+@[^\.]+\..+      in normal lang: something with an @ in the middle and some domain like thingie
82 LANGCODE: [a-zA-Z]{2,3}(_[a-zA-Z0-9]{2,3})*   example: en, eng, en_US, fur_IT
83 TEXT: The normalizedString data type also contains characters, but the XML processor will remove line feeds, carriage returns, and tab characters. (XML variable 'normalizedString'!)
84 TOKEN: The token data type also contains characters, but the XML processor will remove line feeds, carriage returns, tabs, leading and trailing spaces, and multiple spaces. (XML variable 'token'!)
85 VERSION_NR: [a-zA-Z0-9+-]*   example: 1, a, +svn, -svn, 123456789123456789
86
87 fdoCategory=AudioVideo|Audio|Video|Development|Education|Game|Graphics|Network|Office
88 fdoSubCategory=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