« Übersicht Projekte

XSL: PDF erzeugen

Lernziel

An einem konkreten Beispiel, soll das bisher erworbene Wissen noch einmal angewendet werden.

Handlungsanweisungen

Aufgaben:PDF-Datei erzeugen
  1. Machen sie sich mit der XML-Datei vertraut.

    Download der Messdaten (re. Mausklick und mit der Dateiendung xml speichern!)

  2. Konvertieren Sie die XML-Struktur in eine Latex-Datei.

  3. Erzeugen Sie anschließend aus der Latex-Datei ein PDF-Dokument

  4. Selektieren Sie nach unterschiedlichen Kriterien, um nur Teile der XML-Datei auszugeben.

  5. Wenden Sie die Transformation auf die „lange Version“ der Messdaten an. Die Daten finden sie im Index über den Begriff: Beispieldatei: Messdaten (4.6 MB)

Latex Grundlagen - kürzestmögliche Fassung!

Latex ist ein Textformat, aus dem PDF-Dateien generiert werden können.

  • Zeilen die mit % beginnen, sind Kommentare
  • Zeilen die mit beginnen, sind Steueranweisungen/Befehle
  • Parameter werden in {} gesetzt
  • Optionen werden in [] eingeschlossen
  • die Dateierweiterung ist .tex

Grundgerüst für eine Leere Seite

Mit vielen Kommentaren.

Warnung

Auf einem Mac-Rechner gibt es andere Anweisungen für die Konfiguration der dt. Umlaute. Beachten Sie die entsprechenden Kommentare im Text.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
%%%================%%%
%%%  LaTeX-Gerüst  %%%
%%%================%%%

%%
%%  Nach Bedarf auskommentieren oder Kommentare entfernen
%%



%%
%% Genau eine Dokumentenklasse wählen:
%%
\documentclass[12pt,a4paper]{article}
%\documentclass[11pt,a4paper]{article}
%\documentclass[10pt,a4paper]{article}
%
%\documentclass[12pt,a4paper]{book}
%
%\documentclass{letter}
%...

% Windows/Linux
%\usepackage{german}      % Deutsche TeX-Eigenheiten
%\usepackage{isolatin1}   % Eingabekodierung mit Umlauten windows/linux...
%\usepackage{isolatin1}   % Eingabekodierung mit Umlauten

%% MAC-spezifische Konfiguration für die dt. Sprache
\usepackage[applemac]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{eurosym}

%%
%% Index-Erstellung
%%
\usepackage{makeidx}
\makeindex            % damit eine Indexdatei angelegt wird


%%
%% AMS-LaTeX Pakete:
%%
\usepackage{amsmath}  % allgemeine Mathe-Erweiterungen
\usepackage{amssymb}  % Symbole und Schriftarten
\usepackage{amsthm}   % erweiterte Theorem-Umgebungen


%%
%% XY-Pic für Diagramme etc
%%
%\usepackage[all]{xy}      % Das Paket mit allem, was man so braucht
%\UseComputerModernTips    % Pfeilspitzen wie im normalen Mathe-Modus
%\CompileMatrices          % Damit geht es etwas schneller.


\usepackage{mathrsfs}  % gibt den Befehl "\mathscr{}" für schöne
                       % Mathe-Skript-Buchstaben




%%
%% Für den Titel:
%%
%\author{G. Harder}
%\title{}
%\date{}   % Standard: Datum der Kompilierung ("\today").

%%
%% Für lange Tabellen, die über mehrere Seiten gehen können.
%%
%\usepackage{longtable}


%%%--------------------------%%%
%%%  Gleich geht es los...   %%%
%%%--------------------------%%%
\begin{document}
%%
%% Titel:
%%
%% * Entweder Standardtitel mit obigen "\title" und "\author"
%\maketitle
%% * oder alternativ eine frei formatierte Titelseite:
%\begin{titlepage}
%\end{titlepage}

%%
%% Zusammenfassung:
%%
%\begin{abstract}
%\end{abstract}

%%
%% Inhaltsverzeichnis:
%%
\tableofcontents

%%%-------------------------------%%%
%%%  Jetzt geht es richtig los:   %%%
%%%-------------------------------%%%

Inhalt, ohne Ende ...

und eine Mustertabelle für die Ausgabe...
\begin{longtable}{|l|r|c|p{2cm}|}
\hline
Linksbündige Spalte. & Rechtsbündige Spalte & Zentrierte Spalte & Parbox\\
\hline
Kurzer Text. & Kurzer Text. & Kurzer Text. & Kurzer Text.\\
\hline
Text. & Text. & Text. & Text.\\
\hline
Text. & Text. & Text. & Text.\\
\hline
\end{longtable}

%%%----------------------------%%%
%%%  Jetzt geht es zu Ende...  %%%
%%%----------------------------%%%

%%
%%  Bibliographie
%%




%%
%% Stichwortverzeichnis:
%%
%\renewcommand{\indexname}{Stichworte}  % Soll der "Index" anders heißen?
%\printindex                            % Stichwortverzeichnis ausgeben.

\end{document}
%%%%%%%%%%%%%%
%%%  Ende  %%%
%%%%%%%%%%%%%%

Die fertige xml-to-latex.xsl

Weil es eine lange Datei ist, hier zum Download:

Das Stylesheet xml-to-latex.xsl (Speichern mit der Endung XSL)

Der Aufruf könnte wie folgt aussehen:

java -jar saxon9he -o: messdaten.tex mdkurz.xml xml-to-latex.xls

Im Erfolgsfall könne Sie mit einem Latexprogramm (Mac/Techshop, Windows/Miktex, Linux/latex-Paket) ein PDf erzeugen. Falls es nicht gelingt, finden Sie hier eine fertige Version zum

Download:

messdaten.pdf

Erläuterungen zum xsl-Quelltext

In der der Datei mdkurz.xml werden vier Namensräume definiert: s,dt, rs, z davon werden aber nur zwei: rs für das Element data und z für das Element row verwendet. Um den Inhalt eines Elementes mit Namensraumangabe verwenden zu können müssen auch in der XSL-Datei, die Namensräume der XML-Datei bekannt gemacht werden (Zeilen: 3-4).

1
2
3
4
<xsl:stylesheet
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
     xmlns:rs='urn:schemas-microsoft-com:rowset'
     xmlns:z='#RowsetSchema'>

Das Ausgabeformat muss für Latex auf text umgestellt werden.

<xsl:output method="text"/>

Im Anschluss an diese Anpassungen folgen viele Zeilen Latex-Quellcode … Zu guter Letzt werden in einer Template-Rule alle Zeilen aus der XML-Struktur in eine Tabellen-Zeile für das Satzsystem Latex gewandelt. Die Besonderheit ist hier das Ampersand oder Kaufmanns-Und, welches im XML-/XSL-Standard eine Sonderfunktion hat. Es muss also kodiert ausgegeben werden.

<xsl:text>&#38;</xsl:text>

Ein Zeilenende wird wie folgt erzeugt:

<xsl:text>&#xA;</xsl:text>

Wer mehr zum Thema Latex wissen möchte, findet über seine Lieblings-Suchmaschine, viele Tutorials.