-<?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