PXML

Aus PandoraWiki

Wechseln zu: Navigation, Suche
Datei:Baustelle.png Diese Seite wurde von T4b als Baustelle markiert. Begründung:
''Noch nicht fertig.''

Bitte hilf mit diese Seite zu verbessern und entferne diesen Baustein, sobald die beschriebenen Mängel behoben sind.

Bei PXML handelt es sich um einen Standard für XML-Dateien, die in den PNDs Informationen wie Titel, Kategorie und weiteres enthalten. Damit die PXML-Datei gefunden wird, muss sie im Stammverzeichnis der PND sein und "PXML.xml" heissen (zusätzlich muss sie noch an die PND-Datei angehängt werden). Damit PNDs korrekt erkannt werden und richtig funktionieren muss die "PXML.xml"-Datei den folgenden Regeln (genauer genommen der Maschinenlesbaren Version dieser Regeln in einer ".xsd"-Datei). Bevor man eine PXML.xml-Datei verwendet, sollte man sie mit der .xsd-Datei validieren (sprich überprüfen, ob sie dem Standard entspricht) lassen.

Inhaltsverzeichnis

Allgemeines über XML

Da PXML.xml-Dateien im Prinzip einfach ".xml"-Dateien sind, sollte man die Grundlagen von XML verstanden haben: XML besteht aus sogenannten Tags (auf Deutsch, wird aber kaum gebraucht "Beginnauszeichner" und "Endauszeichner"). Diese Tags können entweder einen Inhalt haben:

<beispieltag>Inhalt, was auch immer.</beispieltag>

Oder auch keinen Inhalt:

<beispieltag />

Letztere machen natürlich ohne Attribute keinen Sinn:

<beispieltag beispielattribut="BeispielWert" />

Attribute sind im Prinzip Name-Wert-Paare, die " werden zwingend benötigt. Tags dürfen zwar geschachtelt werden, aber nie so:

<tag1>
<tag2>
</tag1>
</tag2>

Wenn man ein Tag öffnet muss man es auch wieder schliessen, bevor man ein schon vorher geöffnetes Tag schliesst. (Hoffentlich) einfacher ausgedrückt: Man muss Tags in genau der umgekehrten Reihenfolge schliessen, in der man sie aufgemacht hat. Solche Fehler sieht man auch viel schneller, wenn man die Tags hübsch einrückt, für jede Verschachtelung einen Tabulator (8 Leerzeichen) weiter:

<tag1>
        <tag2>
                <tag3>
                        Inhalt
                </tag3>
        </tag2>
</tag1>

Zum besseren Verständnis kann man beliebig viele Kommentare einfügen, die ignoriert werden:

<!-- Die selbe Art Kommentare zu kennzeichnen wird auch in HTML verwendet, hoffentlich geht es trotzdem (sonst würde man das nicht sehen, weil Kommentare ja ignoriert werden)...-->

Validieren

Man kann, wie hier bei PXML, Regeln aufstellen, welche Tags und Attribute es geben muss/darf und welche nicht. Das tut man in ".xsd"-Dateien, mit denen dann ein Programm die ".xml"-Dateien überprüfen kann. Die neueste ".xsd"-Datei für PXML gibt es da, ein Rechtsklick auf "PXML_schema.xsd" und dann "Speichern unter" (je nach Browser unterschiedlich) speichert die Datei ab. Hier muss man aber auch aufpassen: Je nach dem ist dort eine neuere Version des Schemas als beim neuesten HotFix. Sprich im Moment (28. Mai 2011) lädt man dort ein Schema herunter, dass einige Änderungen enthält, die die Pandora erst mit HotFix6 verstehen wird, obwohl HotFix5 im Moment am aktuellsten ist. Für Abwärtskompatibilität sollte man die Hinweise auf dieser Seite (oder, besser, auf der Englischen, weil die schneller geupdated wird) beachten.

Linux

xmllint --noout --schema PATH/TO/PXML_schema.xsd PATH/TO/PXML.xml

"PATH/TO/PXML_schema.xsd" muss man anpassen, je nach dem wo man das Schema abgespeichert hat, "PATH/TO/PXML.xml" natürlich auch, je nach dem wo man seine PXML.xml abgespeichert hat. Bedauerlicherweise ist dieses Programm auf der Pandora nicht vorinstalliert. Für die, die wissen was sie tun, und das Programm mit opkg installieren wollen sei gesagt, dass es im Paket "libxml2-utils" ist.

PXML Spezifikationen

Hier wird an einem ausführlich kommentierten Beispiel gezeigt, wie eine "PXML.xml"-Datei aussehen muss. In den Kommentaren steht jeweils ob etwas optional oder unbedingt nötig ist, usw.

 <PXML xmlns="http://openpandora.org/namespaces/PXML">
 	<!--
 	PXML: Benötigt (genau 1 Mal).
 
 		xmlns: Benötigt. Muss immer den Wert "http://openpandora.org/namespaces/PXML" haben.
 	-->
 	<package id="einzigartigeID">
 		<!--
 		package: Benötigt (genau 1 Mal).
 
 			id: Benötigt. DUMBFOLDERNAME. Diese ID bleibt bei allen Versionen gleich und muss einzigartig sein. Damit werden PNDs unterschieden. Eine gute ID für die PND "MeinePND" von "Ich" wäre z. B. "MeinePND.Ich.Bliblablu123"
 		-->
 		<author name="Voller Name" website="http://die.webseite.des.autors.com" email="autor@provider.ch" />
 			<!--
 			author: Benötigt (genau 1 Mal).
 
 				name: TEXT. Benötigt. Der Name des Autors.
 				website: anyURI. Optional. Die Webseite des Autors.
 				email: EMAILADDRESS. Optional. Die eMail-Adresse des Autors.
 			-->
 		<version major="0" minor="0" release="1" build="1" type="alpha"/>
 			<!--
 			version: Benötigt (genau 1 Mal).
 
 				major: Benötigt. VERSION_NR. Die Hauptversionsnummer. Darf Buchstaben, Zahlen, "+" und "-" enthalten.
 				minor: Benötigt. VERSION_NR. Die Nebenversionsnummer. Darf Buchstaben, Zahlen, "+" und "-" enthalten.
 				release: Benötigt. VERSION_NR. Die Revisionsnummer. Darf Buchstaben, Zahlen, "+" und "-" enthalten.
 				build: Benötigt. VERSION_NR. Die Buildnummer. Darf Buchstaben, Zahlen, "+" und "-" enthalten.
 				type: Optional. Muss einer der Werte "release", "beta" oder "alpha" haben. Entwicklungsstadium der PND, wenn nicht vorhanden wird "release" angenommen.
 			-->
 		<titles>
 			<!--
 			titles: Benötigt (genau 1 Mal).
 			-->
 			<title lang="en_US">
 				<!--
 				title: Benötigt (mindestens 1 Mal)
 
 					lang: Benötigt. LANGCODE. Muss beim ersten <title>-Tag "en_US" sein.
 				-->
 				Beispielname
 			</title>
 		</titles>
 		<descriptions>
 			<!--
 			descriptions: Optional (0 oder 1 Mal).
 			-->
 			<description lang="en_US">
 				<!--
 				description: Benötigt (mindestens 1 Mal)
 
 					lang: Benötigt. LANGCODE. Muss beim ersten <description>-Tag "en_US" sein.
 				-->
 				Eine beispielhafte lange Beschreibung, was die PND ist, tut, und so weiter und so fort.
 			</description>
 		</desriptions>
 		<icon src="./icon.png" />
 			<!--
 			icon: Optional (0 oder 1 Mal).
 
 				src: Benötigt. DUMBPATH. Der Pfad zum Icon, relativ zur PXML.xml-Datei.
 			-->
 	</package>
 	<application id="einzigartigeID" appdata="einOrdnerName">
 		<!--
 		application: Benötigt (mindestens 1 Mal).
 			id: Benötigt. DUMBFOLDERNAME. Diese ID bleibt bei allen Versionen gleich und darf nicht von mehreren PNDs verwendet werden. Damit werden Programme unterschieden Eine gute ID für das Programm "MeinProgramm" von "Ich" wäre z. B. "MeinProgramm.Ich.Bliblablu123"
 			appdata: Optional. DUMBFOLDERNAME. Ein Name für den Appdata-Ordner, wenn nicht vorhanden gleich id.
 		-->
 		<exec command="./start.sh" arguments="-b -j" background="1" startdir="./bin/" standalone="1" x11="req" />
 			<!--
 			exec: Benötigt (genau 1 Mal).
 
 				command: Benötigt. TOKEN. Der Befehl, der zum Starten des Programms ausgeführt wird. Es sind keine Parameter erlaubt.
 				arguments: Optional. TOKEN. Ein oder mehrere Argumente, die wohl an command angehängt werden.
 				background: Optional. BOOLEAN. 0 heisst, dass das Programm als einziges laufen muss, 1 dass es auch im Hintergrund laufen kann.
 				startdir: Optional. DUMBPATH. Das Arbeitsverzeichnis, wenn nicht vorhanden ist es das Stammverzeichnis der PND.
 				standalone: Optional. BOOLEAN. 0 heisst, dass das Programm mit Parametern gestartet werden muss, es wird kein Icon für das Programm erstellt und es kann nur im Terminal gestartet werden.
 				x11: Optional. Muss einer der Werte "req", "stop" oder "ignore" haben. Wenn das Programm x11 braucht, muss das "req" sein, wenn es nicht gleichzeitig mit x11 laufen kann "stop" und wenn es ihm egal ist "ignore".
 			-->
 		<osversion major="2" minor="6" release="32" build="30"/>
 			<!--
 			osversion: Optional (0 oder 1 Mal). Noch nicht implementiert.
 			-->
 		<licenses>
 			<!--
 			licenses: Benötigt (genau 1 Mal).
 			-->
 			<license name="GPLv2+" url="http://www.gnu.org/licenses/gpl-2.0.html" sourcecodeurl="http://pandora.org/sources/package.tar.gz" />
 				<!--
 				license: Benötigt (mindestens 1 Mal).
 					name: Benötigt. TEXT.
 					url: Benötigt. anyURI
 					sourcecodeurl: Benötigt. anyURI
 				-->
 		</licenses>
 		<previewpics>
 			<!--
 			previewpics: Optional (0 oder 1 Mal).
 			-->
 			<pic src="./preview.png" />
 				<!--
 				pic: Optional. (Beliebig oft). Dass man einen <previewpics>-Block ohne Inhalt machen kann, ist um Rückwärtkompatibilität zu erhalten.
 					src: Benötigt. DUMBPATH. Der Pfad zu einem Vorschaubild/Screenshot des Programms, relativ zur "PXML.xml".
 				-->
 		</previewpics>
 		<info name="">
 			<!--
 			info: Optional (0 oder 1 Mal).
Persönliche Werkzeuge