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
  - Steuerung des Layouts beim Aufruf des Publishers
  - Bilder mit MetaPost erstellen und einbinden
- Kochbuch
  - Daumenregister
  - Mehrseitige PDF-Dateien einbinden
  - Layoutoptimierung mithilfe von Gruppen
  - Aufzählungslisten nachahmen
  - Verzeichnisse erstellen
  - Inhaltsverzeichnis in einem Durchlauf erstellen
  - Seitenzahlen: Seite x von y
- Installationsanleitung
- Dateinamen im Publisher
- Voreinstellungen im speedata Publisher
- Starten des Publishers über die Kommandozeile
- Konfiguration des Publishers
- Längenangaben und Maßeinheiten
- XPath- und Layoutfunktionen
- Interne Variablen
- XML Editor mit Schema verbinden
  - Visual Studio Code
  - OxygenXML
- Liste der Änderungen
- Glossar
- Kompatibilität mit anderer Software
- Befehlsreferenz
  - A
  - Action
  - AddSearchpath
  - AtPageCreation
  - AtPageShipout
  - AttachFile
  - Attribute
  - B
  - Barcode
  - Bold
  - BoldItalic
  - Bookmark
  - Box
  - Br
  - Case
  - Circle
  - ClearPage
  - Color
  - Column
  - Columns
  - Compatibility
  - Contents
  - Copy-of
  - DefineColor
  - DefineColorprofile
  - DefineFontalias
  - DefineFontfamily
  - DefineGraphic
  - DefineMatter
  - DefineTextformat
  - Element
  - Fallback
  - 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
  - TableNewPage
  - Tablefoot
  - Tablehead
  - Tablerule
  - Td
  - Text
  - Textblock
  - Tr
  - Trace
  - Transformation
  - U
  - Ul
  - Until
  - URL
  - Value
  - VSpace
  - While

Version 4.10.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
  - Steuerung des Layouts beim Aufruf des Publishers
  - Bilder mit MetaPost erstellen und einbinden
- Kochbuch
  - Daumenregister
  - Mehrseitige PDF-Dateien einbinden
  - Layoutoptimierung mithilfe von Gruppen
  - Aufzählungslisten nachahmen
  - Verzeichnisse erstellen
  - Inhaltsverzeichnis in einem Durchlauf erstellen
  - Seitenzahlen: Seite x von y
- Installationsanleitung
- Dateinamen im Publisher
- Voreinstellungen im speedata Publisher
- Starten des Publishers über die Kommandozeile
- Konfiguration des Publishers
- Längenangaben und Maßeinheiten
- XPath- und Layoutfunktionen
- Interne Variablen
- XML Editor mit Schema verbinden
  - Visual Studio Code
  - OxygenXML
- Liste der Änderungen
- Glossar
- Kompatibilität mit anderer Software
- Befehlsreferenz
  - A
  - Action
  - AddSearchpath
  - AtPageCreation
  - AtPageShipout
  - AttachFile
  - Attribute
  - B
  - Barcode
  - Bold
  - BoldItalic
  - Bookmark
  - Box
  - Br
  - Case
  - Circle
  - ClearPage
  - Color
  - Column
  - Columns
  - Compatibility
  - Contents
  - Copy-of
  - DefineColor
  - DefineColorprofile
  - DefineFontalias
  - DefineFontfamily
  - DefineGraphic
  - DefineMatter
  - DefineTextformat
  - Element
  - Fallback
  - 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
  - TableNewPage
  - Tablefoot
  - Tablehead
  - Tablerule
  - Td
  - Text
  - Textblock
  - Tr
  - Trace
  - Transformation
  - U
  - Ul
  - Until
  - URL
  - Value
  - VSpace
  - While

- This manual in English

# 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 oder dem kostenfreien Editor Visual Studio Code, der eine sehr gute XML-Unterstützung bietet.

| Wer das »Hallo Welt« Beispiel selber ausprobieren möchte, kann einfach `sp new helloworld` aufrufen. Das erstellt ein Verzeichnis mit den beiden notwendigen Dateien. Somit kann man sofort loslegen und mit dem Befehl `sp` in diesem Verzeichnis ein PDF erzeugen.

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.

| 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