Updated documentation (PXML_schema.xsd and human readable version) and genpxml.sh...
authorskeezix <skeezix@flotsam-vm.(none)>
Sun, 20 Feb 2011 03:51:43 +0000 (22:51 -0500)
committerskeezix <skeezix@flotsam-vm.(none)>
Sun, 20 Feb 2011 03:51:43 +0000 (22:51 -0500)
docs/PXML_schema.xsd
docs/PXML_schema_plaintext.txt [new file with mode: 0644]
testdata/scripts/genpxml.sh

index 2d28bbe..e756003 100644 (file)
-<?xml version="1.0" encoding="utf-16"?>
-<xs:schema id="NewDataSet" targetNamespace="http://openpandora.org/namespaces/PXML" xmlns="http://openpandora.org/namespaces/PXML" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="unqualified">
-  <xs:element name="PXML">
-    <xs:complexType>
-      <xs:all>
-        <!--Execution params -->
-        <xs:element name="exec">
-          <xs:complexType>
-            <xs:attribute name="background" type="xs:boolean" />
-            <xs:attribute name="startdir" use="optional" type="xs:string" />
-            <xs:attribute name="standalone" type="xs:boolean" />
-            <xs:attribute name="command" type="xs:string" />
-          </xs:complexType>
-        </xs:element>
-        <!--Author info-->
-        <xs:element name="author" maxOccurs="1">
-          <xs:complexType>
-            <xs:attribute name="name" type="xs:string" />
-            <xs:attribute name="website" type="xs:string" />
-            <xs:attribute name="email" type="xs:string" />
-          </xs:complexType>
-        </xs:element>
-        <!--Icon-->
-        <xs:element name="icon" maxOccurs="unbounded">
-          <xs:complexType>
-            <xs:attribute name="src" type="xs:string" />
-          </xs:complexType>
-        </xs:element>
-        <!--App version info-->
-        <xs:element name="version">
-          <xs:complexType>
-            <xs:attribute name="major" type="xs:nonNegativeInteger" />
-            <xs:attribute name="minor" type="xs:nonNegativeInteger" />
-            <xs:attribute name="release" type="xs:nonNegativeInteger" />
-            <xs:attribute name="build" type="xs:nonNegativeInteger" />
-          </xs:complexType>
-        </xs:element>
-        <!--OS Version info-->
-        <xs:element name="osversion">
-          <xs:complexType>
-            <xs:attribute name="major" type="xs:nonNegativeInteger" />
-            <xs:attribute name="minor" type="xs:nonNegativeInteger" />
-            <xs:attribute name="release" type="xs:nonNegativeInteger" />
-            <xs:attribute name="build" type="xs:nonNegativeInteger" />
-          </xs:complexType>
-        </xs:element>
-        <!--Title-->
-        <xs:element name="title">
-          <xs:complexType>
-            <xs:simpleContent>
-              <xs:extension base="xs:string">
-                <xs:attribute name="lang" type="xs:language" />
-              </xs:extension>
-            </xs:simpleContent>
-          </xs:complexType>
-        </xs:element>
-        <!--Description-->
-        <xs:element name="description">
-          <xs:complexType>
-            <xs:simpleContent>
-              <xs:extension base="xs:string">
-                <xs:attribute name="lang" type="xs:language" />
-              </xs:extension>
-            </xs:simpleContent>
-          </xs:complexType>
-        </xs:element>
-        <!--Preview pics-->
-        <xs:element name="previewpics" use="optional">
-          <xs:complexType>
-            <xs:sequence>
-              <xs:element name="pic" maxOccurs="unbounded">
-                <xs:complexType>
-                  <xs:attribute name="src" type="xs:string" />
-                </xs:complexType>
-              </xs:element>
-            </xs:sequence>
-          </xs:complexType>
-        </xs:element>
-        <!--Categories-->
-        <xs:element name="categories">
-          <xs:complexType>
-            <xs:sequence>
-              <xs:element name="category" maxOccurs="unbounded">
-                <xs:complexType>
-                  <xs:sequence>
-                    <xs:element name="subcategory" maxOccurs="unbounded">
-                      <xs:complexType>
-                        <xs:attribute name="name" type="xs:normalizedString" />
-                      </xs:complexType>
-                    </xs:element>
-                  </xs:sequence>
-                  <xs:attribute name="name" type="xs:normalizedString" />
-                </xs:complexType>
-              </xs:element>
-            </xs:sequence>
-          </xs:complexType>
-        </xs:element>
-        <!--Associations-->
-        <xs:element name="associations" use="optional">
-          <xs:complexType>
-            <xs:sequence>
-              <xs:element name="association" maxOccurs="unbounded">
-                <xs:complexType>
-                  <xs:attribute name="name" type="xs:normalizedString" />
-                  <xs:attribute name="filetype" type="xs:string" />
-                  <xs:attribute name="arguments" type="xs:string" />
-                </xs:complexType>
-              </xs:element>
-            </xs:sequence>
-          </xs:complexType>
-        </xs:element>
-        <!--Clockspeed-->
-        <xs:element name="clockspeed">
-          <xs:complexType>
-            <xs:attribute name="frequency" type="xs:PositiveInteger" />
-          </xs:complexType>
-        </xs:element>
-      </xs:all>
-      <!--AppID-->
-      <xs:attribute name="id" type="xs:normalizedString" />
-    </xs:complexType>
-  </xs:element>
+<?xml version="1.0" encoding="utf-8"?>
+<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">
+       
+       <xs:simpleType name="x11Param">
+               <xs:restriction base="xs:string">
+                       <xs:enumeration value="req" />
+                       <xs:enumeration value="stop" />
+                       <xs:enumeration value="ignore" />
+               </xs:restriction>
+       </xs:simpleType>
+       
+       <xs:simpleType name="docType">
+               <xs:restriction base="xs:string">
+                       <xs:enumeration value="text/html" />
+                       <xs:enumeration value="text/plain" />
+               </xs:restriction>
+       </xs:simpleType>
+       
+       <xs:simpleType name="versionNumber">
+               <xs:restriction base="xs:string">
+                       <xs:minLength value="1"/>
+                       <xs:pattern value="[a-zA-Z0-9+-]*" />
+               </xs:restriction>
+       </xs:simpleType>
+       
+       <xs:simpleType name="emailAddress">
+               <xs:restriction base="xs:string">
+                       <xs:pattern value="[^@]+@[^\.]+\..+"/>
+               </xs:restriction>
+       </xs:simpleType>
+       
+       <xs:simpleType name="dumbPath">
+               <xs:restriction base="xs:normalizedString">
+                       <xs:pattern value="[^?>:]+" />
+               </xs:restriction>
+       </xs:simpleType>
+       
+       <xs:simpleType name="dumbFolderName">
+               <xs:restriction base="xs:normalizedString">
+                       <xs:pattern value="[^?>:/]+" />
+               </xs:restriction>
+       </xs:simpleType>
+       
+       <xs:simpleType name="isoLangcode">
+               <xs:restriction base="xs:string">
+                       <xs:minLength value="2"/>
+                       <xs:pattern value="[a-zA-Z]{2,3}(_[a-zA-Z0-9]{2,3})*" />
+               </xs:restriction>
+       </xs:simpleType>
+       
+       <!-- Definition of all allowed categories following the FDO specs -->
+       <xs:simpleType name="fdoCategory">
+               <xs:restriction base="xs:string">
+                       <xs:pattern value="AudioVideo|Audio|Video|Development|Education|Game|Graphics|Network|Office"/>
+               </xs:restriction>
+       </xs:simpleType>
+       
+       <!-- Definition of all allowed subcategories following the FDO specs -->
+       <xs:simpleType name="fdoSubCategory">
+               <xs:restriction base="xs:string">
+                       <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"/>
+               </xs:restriction>
+       </xs:simpleType>
+       
+       
+       <xs:element name="PXML">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element name="application" minOccurs="1" maxOccurs="unbounded">
+                                       <xs:complexType>
+                                               <xs:sequence>
+                                                       <!--Execution params -->
+                                                       <xs:element name="exec" minOccurs="1">
+                                                               <xs:complexType>
+                                                                       <xs:attribute name="command" use="required" type="xs:token" />
+                                                                       <xs:attribute name="arguments" use="optional" type="xs:token" />
+                                                                       <xs:attribute name="background" use="optional" type="xs:boolean" />
+                                                                       <xs:attribute name="startdir" use="optional" type="dumbPath" />
+                                                                       <xs:attribute name="standalone" use="optional" type="xs:boolean" />
+                                                                       <xs:attribute name="x11" use="optional" type="x11Param" />
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <!--Title-->
+                                                       <xs:sequence>
+                                                               <xs:element name="title" minOccurs="1" maxOccurs="unbounded">
+                                                                       <xs:complexType>
+                                                                               <xs:simpleContent>
+                                                                                       <xs:extension base="xs:string">
+                                                                                               <xs:attribute name="lang" type="isoLangcode" />
+                                                                                       </xs:extension>
+                                                                               </xs:simpleContent>
+                                                                       </xs:complexType>
+                                                               </xs:element>
+                                                       </xs:sequence>
+                                                       <!--Author info-->
+                                                       <xs:element name="author" minOccurs="1">
+                                                               <xs:complexType>
+                                                                       <xs:attribute name="name" use="required" type="xs:normalizedString" />
+                                                                       <xs:attribute name="website" use="optional" type="xs:anyURI" />
+                                                                       <xs:attribute name="email" use="optional" type="emailAddress" />
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <!--App version info-->
+                                                       <xs:element name="version" minOccurs="1">
+                                                               <xs:complexType>
+                                                                       <xs:attribute name="major" use="required" type="versionNumber" />
+                                                                       <xs:attribute name="minor" use="required" type="versionNumber" />
+                                                                       <xs:attribute name="release" use="required" type="versionNumber" />
+                                                                       <xs:attribute name="build" use="required" type="versionNumber" />
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <!--OS Version info-->
+                                                       <xs:element name="osversion" minOccurs="0">
+                                                               <xs:complexType>
+                                                                       <xs:attribute name="major" use="required" type="versionNumber" />
+                                                                       <xs:attribute name="minor" use="required" type="versionNumber" />
+                                                                       <xs:attribute name="release" use="required" type="versionNumber" />
+                                                                       <xs:attribute name="build" use="required" type="versionNumber" />
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <!--Description-->
+                                                       <xs:sequence>
+                                                               <xs:element name="description" minOccurs="0" maxOccurs="unbounded">
+                                                                       <xs:complexType>
+                                                                               <xs:simpleContent>
+                                                                                       <xs:extension base="xs:string">
+                                                                                               <xs:attribute name="lang" use="required" type="isoLangcode" />
+                                                                                       </xs:extension>
+                                                                               </xs:simpleContent>
+                                                                       </xs:complexType>
+                                                               </xs:element>
+                                                       </xs:sequence>
+                                                       <!--Icon-->
+                                                       <xs:element name="icon" minOccurs="0">
+                                                               <xs:complexType>
+                                                                       <xs:attribute name="src" use="required" type="dumbPath" />
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <!--Preview pics-->
+                                                       <xs:element name="previewpics" minOccurs="0">
+                                                               <xs:complexType>
+                                                                       <xs:sequence>
+                                                                               <xs:element name="pic" minOccurs="0" maxOccurs="unbounded">
+                                                                                       <xs:complexType>
+                                                                                               <xs:attribute name="src" use="required" type="dumbPath" />
+                                                                                       </xs:complexType>
+                                                                               </xs:element>
+                                                                       </xs:sequence>
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <!--Info (aka manual or readme entry)-->
+                                                       <xs:element name="info" minOccurs="0">
+                                                               <xs:complexType>
+                                                                       <xs:attribute name="name" use="required" type="xs:normalizedString" />
+                                                                       <xs:attribute name="type" use="required" type="docType" />
+                                                                       <xs:attribute name="src" use="required" type="dumbPath" />
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <!--Categories-->
+                                                       <xs:element name="categories" minOccurs="1">
+                                                               <xs:complexType>
+                                                                       <xs:sequence>
+                                                                               <xs:element name="category" maxOccurs="unbounded">
+                                                                                       <xs:complexType>
+                                                                                               <xs:sequence>
+                                                                                                       <xs:element name="subcategory" maxOccurs="unbounded">
+                                                                                                               <xs:complexType>
+                                                                                                                       <xs:attribute name="name" type="fdoSubCategory" />
+                                                                                                               </xs:complexType>
+                                                                                                       </xs:element>
+                                                                                               </xs:sequence>
+                                                                                               <xs:attribute name="name" use="required" type="fdoCategory" />
+                                                                                       </xs:complexType>
+                                                                               </xs:element>
+                                                                       </xs:sequence>
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <!--Associations-->
+                                                       <xs:element name="associations" minOccurs="0">
+                                                               <xs:complexType>
+                                                                       <xs:sequence>
+                                                                               <xs:element name="association" maxOccurs="unbounded">
+                                                                                       <xs:complexType>
+                                                                                               <xs:attribute name="name" use="required" type="xs:normalizedString" />
+                                                                                               <xs:attribute name="filetype" use="required" type="xs:token" />
+                                                                                               <xs:attribute name="arguments" use="required" type="xs:token" />
+                                                                                       </xs:complexType>
+                                                                               </xs:element>
+                                                                       </xs:sequence>
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <!--Clockspeed-->
+                                                       <xs:element name="clockspeed" minOccurs="0">
+                                                               <xs:complexType>
+                                                                       <xs:attribute name="frequency" use="required" type="xs:positiveInteger" />
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                               </xs:sequence>
+                                               <!--AppID-->
+                                               <xs:attribute name="id" use="required" type="dumbFolderName" />
+                                               <xs:attribute name="appdata" use="optional" type="dumbFolderName" />
+                                       </xs:complexType>
+                               </xs:element>
+                       </xs:sequence>
+               </xs:complexType>
+       </xs:element>
 </xs:schema>
\ No newline at end of file
 </xs:schema>
\ No newline at end of file
diff --git a/docs/PXML_schema_plaintext.txt b/docs/PXML_schema_plaintext.txt
new file mode 100644 (file)
index 0000000..4509177
--- /dev/null
@@ -0,0 +1,68 @@
+1) at the root there is *exactly* one PXML block
+2) inside this PXML block are >=1 <application> blocks
+        (required) id=DUMBFOLDERNAME
+        (optional) appdata=DUMBFOLDERNAME
+
+inside each application block:
+1) =1 <exec>
+        (required) command=TOKEN
+        (optional) arguments=TOKEN
+        (optional) background=BOOLEAN
+        (optional) startdir=DUMBPATH
+        (optional) standalone=BOOLEAN
+        (optional) x11=[req|stop|ignore]
+2) >=1 <title>TEXT</title>
+        (required) lang=LANGCODE ( [a-zA-Z]{2,3}(_[a-zA-Z0-9]{2,3})* )
+3) =1 <author>
+        (required) name=TEXT
+        (optional) website=anyURI
+        (optional) email=EMAILADDRESS
+4) =1 <version>
+        (required) major=VERSION_NR
+        (required) minor=VERSION_NR
+        (required) release=VERSION_NR
+        (required) build=VERSION_NR
+5) <=1 <osversion>
+        (required) major=VERSION_NR
+        (required) minor=VERSION_NR
+        (required) release=VERSION_NR
+        (required) build=VERSION_NR
+6) >=0 <description>TEXT</description>
+        (required) lang=LANGCODE ( [a-zA-Z]{2,3}(_[a-zA-Z0-9]{2,3})* )
+7) <=1 <icon>
+        (required) src=DUMBPATH
+8) <=1 <previewpics>
+        (optional) >=0 <pic>
+                        (required) src=DUMBPATH
+9) <=1 <info>
+        (required) name=TEXT
+        (required) type=[text/html|text/plain]
+        (required) src=DUMBPATH
+10)=1 <categories>
+        (required) >=1 <category>
+                        (required) name=fdoCategory
+                        (optional) <subcategory>
+                                  (required) name=fdoSubCategory
+11)<=1 <associations>
+        (required) >=1 <association>
+                        (required) name=TEXT
+                        (required) filetype=TOKEN
+                        (required) arguments=TOKEN
+12)<=1 <clockspeed>
+        (required) frequency=positiveInteger
+
+
+
+Filetype/variable explaination:
+anyURI: should be some URL, no idea what exactly XML accepts there... (XML variable 'anyURI'!)
+BOOLEAN: 0 or 1 or true or false (XML variable 'boolean'!)
+DUMBFOLDERNAME: TEXT without ?>:/
+DUMBPATH: TEXT without ?>:
+EMAILADDRESS: [^@]+@[^\.]+\..+      in normal lang: something with an @ in the middle and some domain like thingie
+LANGCODE: [a-zA-Z]{2,3}(_[a-zA-Z0-9]{2,3})*   example: en, eng, en_US, fur_IT
+TEXT: The normalizedString data type also contains characters, but the XML processor will remove line feeds, carriage returns, and tab characters. (XML variable 'normalizedString'!)
+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'!)
+VERSION_NR: [a-zA-Z0-9+-]*   example: 1, a, +svn, -svn, 123456789123456789
+
+fdoCategory=AudioVideo|Audio|Video|Development|Education|Game|Graphics|Network|Office
+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
index d54f683..f859bfa 100755 (executable)
@@ -15,15 +15,23 @@ echo '
 <PXML xmlns="http://openpandora.org/namespaces/PXML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PXML_schema.xsd">
 
   <application id="'$BASENAME-$rnd'">
 <PXML xmlns="http://openpandora.org/namespaces/PXML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PXML_schema.xsd">
 
   <application id="'$BASENAME-$rnd'">
+    <exec command="'$BASENAME'"/>
 
     <title lang="en_US">'$BASENAMEnoex'</title>
 
     <title lang="en_US">'$BASENAMEnoex'</title>
-    <title lang="de_DE">'$BASENAMEnoex' - German (lol!)</title>
+    <title lang="de_DE">'$BASENAMEnoex' - German (lol!)</title><!--optional, only one title tag required-->
  
  
-    <exec command="'$BASENAME'"/>
+    <author name="'$USERNAME'" website="http://www.openpandora.org"/><!--Optional email and website, name required-->
+    <version major="1" minor="1" release="1" build="2"/><!--This programs version-->
+    <osversion major="1" minor="0" release="0" build="0"/><!--The minimum OS version required, optional-->
  
     <description lang="en_US">en_US Automatically generated pxml from'$(pwd)' exe='$BASENAME'</description>
     <description lang="de_DE">de_DE Automatisch generiertes pxml aus'$(pwd)' exe='$BASENAME'</description>
  
  
     <description lang="en_US">en_US Automatically generated pxml from'$(pwd)' exe='$BASENAME'</description>
     <description lang="de_DE">de_DE Automatisch generiertes pxml aus'$(pwd)' exe='$BASENAME'</description>
  
+    <!-- if you want to provide an icon, uncomment the following line and set correct filename! -->
+    <!-- <icon src="icon.png"/> -->
     <previewpics>'
 #add all images in the folder as preview pics
 for image in $(file -i -0 * | grep -a image | cut -d" " -f1)
     <previewpics>'
 #add all images in the folder as preview pics
 for image in $(file -i -0 * | grep -a image | cut -d" " -f1)
@@ -32,14 +40,17 @@ echo "      <pic src="$image"/>"
 done
 echo '    </previewpics>
  
 done
 echo '    </previewpics>
  
-    <author name="'$USERNAME'" website="http://www.openpandora.org"/><!--Optional email and website, name required-->
-    <version major="1" minor="1" release="1" build="2"/><!--This programs version-->
-    <osversion major="1" minor="0" release="0" build="0"/><!--The minimum OS version required-->
+    <!-- if you want to provide a manual, uncomment the following line and set correct values! -->
+    <!-- <info name="'$BASENAMEnoex' manual" type="text/html" src="manual.html"/> -->
  
     <categories>
  
     <categories>
-      <category name="Main category"><!--category like "Games", "Graphics", "Internet" etc-->
-        <subcategory name="Subcategory 1"/><!--subcategory, like "Board Games", "Strategy", "First Person Shooters"-->
+    <!-- for information about valid categories and explainations of them, please have a look at this website:
+         http://standards.freedesktop.org/menu-spec/menu-spec-latest.html#category-registry
+         entries with invalid category/subcategory combinations will appear under "others" in the menus! -->
+      <category name="Main category">
+      <!--valid values for "Main category": "AudioVideo", "Audio", "Video", "Development", "Education", "Game", "Graphics", "Network", "Office", "Settings", "System", "Utility"-->
+        <subcategory name="Main Subcategory"/>
+        <!--valid Values for "Subcategory": "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"-->
         <subcategory name="Subcategory 2"/>
       </category>
       <category name="Alternative category">
         <subcategory name="Subcategory 2"/>
       </category>
       <category name="Alternative category">
@@ -47,9 +58,10 @@ echo '    </previewpics>
       </category>
     </categories>
  
       </category>
     </categories>
  
-    <clockspeed frequency="600"/><!--Frequency in Hz-->
+    <!-- if you want to set a fixed clockrate differening from the default (500MHz), uncomment the following line and set it to the value you want (in MHz) -->
+    <!-- <clockspeed frequency="600"/> -->
 
   </application>
 
 </PXML>
 
   </application>
 
 </PXML>
-'
\ No newline at end of file
+'