Handbuch durchsuchen:

- Startseite
- Einleitung
- Hallo Welt!
- Grundlagen
  - Erstellen eines Layoutregelwerks
  - Aufbau der Datendatei und des Layoutregelwerks
  - Objekte ausgeben
  - Raster
  - Bereiche auf der Seite (PositioningArea)
  - Dateiorganisation
  - Silbentrennung / Spracheinstellungen
  - Einbinden von Schriftarten
  - Textformate
  - Textformatierung
  - Farben
- Programmierung
- Bilder einbinden
- Tabellen
- Fortgeschrittene Themen
  - Lesezeichen (Bookmarks)
  - Erzeugen von XML-Strukturen
  - Druckausgabe / Schnittmarken
  - CSS
  - Gruppen (virtuelle Objekte)
  - Virtuelle Seiten
  - Rotieren von Inhalten
  - Sortieren von Daten
  - Umfließen von Bildern
  - Seitentypen
  - Starten des Publishers über den Hotfolder
  - Lua-Filter / Datenvorverarbeitung
  - Schemavalidierung
  - Qualitätssicherung (PDF-Vergleich)
  - Fehlersuche / Debugging
  - Servermodus
- Kochbuch
  - Griffmarken
  - Mehrseitige PDF-Dateien einbinden
  - Layoutoptimierung mithilfe von Gruppen
  - Verzeichnisse erstellen
  - Seitenzahlen: Seite x von y
  - Aufzählungslisten nachahmen
- Installationsanleitung
- Voreinstellungen im speedata Publisher
- Starten des Publishers über die Kommandozeile
- Konfiguration des Publishers
- Längenangaben und Maßeinheiten
- XPath- und Layoutfunktionen
- Interne Variablen
- Liste der Änderungen
- Glossar
- Befehlsreferenz
  - A
  - Action
  - AddSearchpath
  - AtPageCreation
  - AtPageShipout
  - AttachFile
  - Attribute
  - B
  - Barcode
  - Bold
  - BoldItalic
  - Bookmark
  - Box
  - Br
  - Case
  - Circle
  - Color
  - Column
  - Columns
  - Compatibility
  - Contents
  - Copy-of
  - DefineColor
  - DefineFontalias
  - DefineFontfamily
  - DefineTextformat
  - Element
  - Fontface
  - ForAll
  - Frame
  - Grid
  - Group
  - Groupcontents
  - HSpace
  - Hyphenation
  - I
  - Image
  - Include
  - Initial
  - InsertPages
  - Italic
  - Layout
  - Li
  - LoadDataset
  - LoadFontfile
  - Loop
  - Makeindex
  - Margin
  - Mark
  - Message
  - NewPage
  - NextFrame
  - NextRow
  - NoBreak
  - Ol
  - Options
  - Otherwise
  - Output
  - Overlay
  - Pageformat
  - Pagetype
  - Paragraph
  - PDFOptions
  - PlaceObject
  - Position
  - PositioningArea
  - PositioningFrame
  - ProcessNode
  - Record
  - Regular
  - Rule
  - SaveDataset
  - SavePages
  - SetGrid
  - SetVariable
  - SortSequence
  - Stylesheet
  - Span
  - Sub
  - Sup
  - Switch
  - Table
  - Tablefoot
  - Tablehead
  - Tablerule
  - Td
  - Text
  - Textblock
  - Tr
  - Trace
  - Transformation
  - U
  - Ul
  - Until
  - URL
  - Value
  - VSpace
  - While

Version 3.2.0
Handbuch durchsuchen:

- Startseite
- Einleitung
- Hallo Welt!
- Grundlagen
  - Erstellen eines Layoutregelwerks
  - Aufbau der Datendatei und des Layoutregelwerks
  - Objekte ausgeben
  - Raster
  - Bereiche auf der Seite (PositioningArea)
  - Dateiorganisation
  - Silbentrennung / Spracheinstellungen
  - Einbinden von Schriftarten
  - Textformate
  - Textformatierung
  - Farben
- Programmierung
- Bilder einbinden
- Tabellen
- Fortgeschrittene Themen
  - Lesezeichen (Bookmarks)
  - Erzeugen von XML-Strukturen
  - Druckausgabe / Schnittmarken
  - CSS
  - Gruppen (virtuelle Objekte)
  - Virtuelle Seiten
  - Rotieren von Inhalten
  - Sortieren von Daten
  - Umfließen von Bildern
  - Seitentypen
  - Starten des Publishers über den Hotfolder
  - Lua-Filter / Datenvorverarbeitung
  - Schemavalidierung
  - Qualitätssicherung (PDF-Vergleich)
  - Fehlersuche / Debugging
  - Servermodus
- Kochbuch
  - Griffmarken
  - Mehrseitige PDF-Dateien einbinden
  - Layoutoptimierung mithilfe von Gruppen
  - Verzeichnisse erstellen
  - Seitenzahlen: Seite x von y
  - Aufzählungslisten nachahmen
- Installationsanleitung
- Voreinstellungen im speedata Publisher
- Starten des Publishers über die Kommandozeile
- Konfiguration des Publishers
- Längenangaben und Maßeinheiten
- XPath- und Layoutfunktionen
- Interne Variablen
- Liste der Änderungen
- Glossar
- Befehlsreferenz
  - A
  - Action
  - AddSearchpath
  - AtPageCreation
  - AtPageShipout
  - AttachFile
  - Attribute
  - B
  - Barcode
  - Bold
  - BoldItalic
  - Bookmark
  - Box
  - Br
  - Case
  - Circle
  - Color
  - Column
  - Columns
  - Compatibility
  - Contents
  - Copy-of
  - DefineColor
  - DefineFontalias
  - DefineFontfamily
  - DefineTextformat
  - Element
  - Fontface
  - ForAll
  - Frame
  - Grid
  - Group
  - Groupcontents
  - HSpace
  - Hyphenation
  - I
  - Image
  - Include
  - Initial
  - InsertPages
  - Italic
  - Layout
  - Li
  - LoadDataset
  - LoadFontfile
  - Loop
  - Makeindex
  - Margin
  - Mark
  - Message
  - NewPage
  - NextFrame
  - NextRow
  - NoBreak
  - Ol
  - Options
  - Otherwise
  - Output
  - Overlay
  - Pageformat
  - Pagetype
  - Paragraph
  - PDFOptions
  - PlaceObject
  - Position
  - PositioningArea
  - PositioningFrame
  - ProcessNode
  - Record
  - Regular
  - Rule
  - SaveDataset
  - SavePages
  - SetGrid
  - SetVariable
  - SortSequence
  - Stylesheet
  - Span
  - Sub
  - Sup
  - Switch
  - Table
  - Tablefoot
  - Tablehead
  - Tablerule
  - Td
  - Text
  - Textblock
  - Tr
  - Trace
  - Transformation
  - U
  - Ul
  - Until
  - URL
  - Value
  - VSpace
  - While

# Hallo Welt!

Der Klassiker: »Hallo Welt!«. Oder: wie sieht ein einfaches Dokument aus? Wie schon beschrieben, besteht die Eingabe für den Publisher aus zwei Dateien: der Datendatei und der Layoutdatei. Beide müssen im XML-Format vorliegen und immer vorhanden sein. Die Datendatei speichert man unter dem Namen `data.xml` und die Layoutdatei unter `layout.xml`. Diese beiden Dateien erstellt man am besten mit einem XML-Editor, es reicht für die ersten Schritte ein einfacher Texteditor wie Atom oder Textmate.

Die Datendatei für das »Hallo Welt« Beispiel mit dem Namen `data.xml`:

    <data>Hello world!</data>

Das reicht für das einfache Beispiel aus. Die Layoutdatei ist etwas umfangreicher (speichern unter `layout.xml)`:

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

Diese beiden Dateien werden in einem sonst leeren Verzeichnis gespeichert. Auf der Kommandozeile wechselt man nun in dieses Verzeichnis (mit `cd <Verzeichnisname>`) und ruft den Publisher über den Befehl

    $ sp

auf. Das `$`-Zeichen soll den Prompt darstellen und wird nicht mit eingegeben. Wenn alles glatt läuft, ist das Ergebnis eine PDF-Datei mit dem Namen `publisher.pdf` im gleichen Verzeichnis.

| Unter Windows wird unter Umständen gefragt, ob der Publisher eine Netzwerkverbindung öffnen darf. Das ist harmlos: beim Start des Publishers werden zwei Prozesse gestartet, die über eine Netzwerkverbindung miteinander kommunizieren.

| Ebenfalls für Windows-Benutzer: wenn der Publisher das PDF nicht erzeugen kann, liegt das manchmal daran, dass dieselbe Datei noch in einem Fenster geöffnet ist. Das kann der Adobe Reader sein, aber auch der Windows Explorer.

## Das »Hallo Welt!« Beispiel erläutert

Hier folgt eine kurze Erklärung der beiden Dateien. Die Datendatei kann beliebig strukturiert sein, solange der Inhalt wohlgeformtes XML ist (siehe Glossar).

    <data>Hello world!</data>

Die Layoutdatei ist etwas komplizierter, zumindest auf den ersten Blick.

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

① Das Wurzelelement heißt `Layout` und hat den Namensraum `urn:speedata.de:2009/publisher/en`. Der zweite Namensraum ist für die eingebauten Funktionen notwendig, wird aber in dem Beispiel nicht genutzt. (Tipp: trotzdem immer im Layout angeben, damit später keine Überraschungen auftauchen.)

② Hier startet die Datenverarbeitung. Das Wurzelelement der Datendatei wird bei dem Attribut `element` angegeben.

③ `<PlaceObject>` ist der Befehl, um Dinge (Texte, Bilder, Kästchen, .​..) in das PDF auszugeben.

④ Der Punkt beim Attribut `select` bedeutet »das aktuelle Element«, in diesem Fall das Wurzelelement. Hier wird der Textwert des Elements ausgegeben, also die Zeichenkette `Hello world!`

Mehr soll an dieser Stelle nicht erörtert werden. Vielmehr gibt es ein Verweis auf die entsprechenden Kapitel in dieser Anleitung: Unter Organisation der Daten für die Datenverarbeitung wird beschrieben, wie die Datendatei und die Layoutdatei zu strukturieren sind, und unter Ausgabe von Objekten wird der Befehl `PlaceObject` beschrieben.

- Einleitung
- Grundlagen