Hallo Welt!
Der Klassiker: »Hallo Welt!«. Oder: wie sieht ein einfaches Dokument aus?
Die Eingabe für den Publisher besteht immer aus zwei Dateien: einer Datendatei (data.xml) mit den Inhalten und einer Layoutdatei (layout.xml) mit den Regeln, wie diese Inhalte im PDF erscheinen sollen.
Beide müssen im XML-Format vorliegen.
Am besten erstellt man sie mit einem XML-Editor oder dem kostenfreien Editor Visual Studio Code.
Wer das »Hallo Welt« Beispiel sofort ausprobieren möchte: sp new helloworld erstellt ein Verzeichnis mit den beiden Dateien. Mit cd helloworld und sp wird daraus ein PDF. |

Die beiden Dateien
Die Datendatei (data.xml) enthält die Daten — hier nur ein kurzer Text:
<data>Hello world!</data>
Die Layoutdatei (layout.xml) beschreibt, was mit den Daten passieren soll:
<Layout
xmlns="urn:speedata.de:2009/publisher/en"
xmlns:sd="urn:speedata:2009/publisher/functions/en">
<Record element="data">
<PlaceObject>
<Textblock>
<Paragraph>
<Value select="."/>
</Paragraph>
</Textblock>
</PlaceObject>
</Record>
</Layout>
PDF erzeugen
Beide Dateien in einem leeren Verzeichnis speichern, auf der Kommandozeile in dieses Verzeichnis wechseln und den Publisher starten:
$ sp
Das $-Zeichen steht für den Prompt und wird nicht mit eingegeben.
Das Ergebnis ist eine PDF-Datei publisher.pdf mit einer Seite: der Text »Hello world!« oben links.
| Für Windows-Benutzer: wenn der Publisher das PDF nicht erzeugen kann, liegt das manchmal daran, dass dieselbe Datei noch in einem anderen Programm geöffnet ist (Adobe Reader, Windows Explorer). |
Das Beispiel erläutert
Die Datendatei kann beliebig strukturiert sein, solange der Inhalt wohlgeformtes XML ist (siehe Glossar).
In diesem Fall gibt es nur ein Element <data> mit dem Textinhalt Hello world!.
Die Layoutdatei Schritt für Schritt:
<Layout <!--1-->
xmlns="urn:speedata.de:2009/publisher/en"
xmlns:sd="urn:speedata:2009/publisher/functions/en">
<Record element="data"> <!--2-->
<PlaceObject> <!--3-->
<Textblock>
<Paragraph>
<Value select="."/> <!--4-->
</Paragraph>
</Textblock>
</PlaceObject>
</Record>
</Layout>
- Das Wurzelelement
Layoutmit den beiden Namensräumen. Den zweiten Namensraum (sd:) braucht man hier noch nicht, aber er sollte immer angegeben werden — er wird für die eingebauten Funktionen benötigt. Recorddefiniert, was passieren soll, wenn der Publisher das Element<data>in der Datendatei findet. Da<data>das Wurzelelement ist, wird dieser Record automatisch beim Start aufgerufen.PlaceObjectist der Befehl, um etwas in das PDF auszugeben — Text, Bilder, Tabellen, Boxen usw.select="."ist ein XPath-Ausdruck: der Punkt.bedeutet »das aktuelle Datenelement«. Hier ist das aktuelle Element<data>, und dessen Textinhalt istHello world!. Genau dieser Text erscheint im PDF.
Wie geht es weiter?
Im Kapitel Programmierung wird ausführlich erklärt, wie Layout und Daten zusammenspielen — insbesondere das Zusammenspiel von Record und ProcessNode, mit dem auch verschachtelte Datenstrukturen verarbeitet werden können.
