Version 5.6.0

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.

Hello World Beispiel auf der Kommandozeile

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>
  1. Das Wurzelelement Layout mit 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.
  2. Record definiert, 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.
  3. PlaceObject ist der Befehl, um etwas in das PDF auszugeben — Text, Bilder, Tabellen, Boxen usw.
  4. select="." ist ein XPath-Ausdruck: der Punkt . bedeutet »das aktuelle Datenelement«. Hier ist das aktuelle Element <data>, und dessen Textinhalt ist Hello 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.