Der XML-Exporter unterstützt den Export von PostgreSQL-Datenbanken nach XML. Dabei wird mindestens die PostgreSQL-Version 9.1 vorausgesetzt. Zusammen mit dem Plan-System des Imexporters können jedoch auch komplexere Aufgabenstellungen umgesetzt werden.
Das Beispiel setzt das Problem "Erstelle eine PDF-Datei mit allen freien Bildern aus der easydb" um. Der LaTeX-Quellcode ist dabei aber bewusst einfach gehalten und lässt Platz für Detailverbesserungen.
/opt/easydb/server/bin/imexporter \ -p $PWD/plan.xml \ -d "host=localhost port=5440 user=postgres dbname=digitalasset" \ —eas-url="http://eas.example.com/eas" \ —instance="digitalasset" \ -l debug
Die beiden Optionen --eas-url
und --instance
werden dabei vom Schritt fetchassets benötigt.
plan.xml
) 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: | <plan name="export2pdf" xmlns="http://schema.programmfabrik.de/imexporter-plan/0.1"> <build-steps> <step type="databaseexport"> <description-file>exportdef.xml</description-file> </step> <step type="xslt"> <xsl-file>add-eas-annotation.xsl</xsl-file> </step> <step type="fetchassets"> </step> <step type="xslt"> <xsl-file>xml-to-latex.xsl</xsl-file> </step> <step type="pdflatex"> </step> </build-steps> </plan> |
Siehe auch Pläne einrichten.
exportdef.xml
) Es sollen alle Bilder exportiert werden, deren Bildrecht "frei" heißt.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: | <export-definition name="export-free-images" xmlns="http://schema.programmfabrik.de/export-definition/0.1"> <table name="assets"> <column name="id"/> <column name="titel" escape="latex"/> <column name="bild"/> <filter> <referencing table="bildrecht"> <own-column name="lk_bildrecht_id"/> </referencing> </filter> </table> <table name="bildrecht"> <column name="id"/> <filter> <column name="name" type="text" value="frei"/> </filter> </table> </export-definition> |
Siehe auch Exportdefinitionen.
add-eas-annotation.xsl
) In diesem Schritt werden in die exportierte XML-Datei einige XML-Tags (im Namensraum an
) geschrieben, die im nächsten Schritt (fetchassets
) durch weitere Informationen über die EAS-Assets ersetzt werden. Der meiste Code dient nur dem Kopieren der existierenden Struktur.
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: | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:id="http://schema.programmfabrik.de/imexport-data/0.1" xmlns:an="http://schema.programmfabrik.de/imexport-annotation-input/0.1"> <xsl:template match="id:col[@name='bild']"> <xsl:if test="./text()"> <an:asset id="{./text()}" profile="file"/> </xsl:if> </xsl:template> <xsl:template match="id:dump"> <xsl:copy> <an:profile name="file"> <an:versions only-first="true"> <an:version>original</an:version> <an:version>orig</an:version> </an:versions> <an:file/> </an:profile> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="id:table"> <xsl:copy> <xsl:attribute name="tablename"><xsl:value-of select="@tablename"/></xsl:attribute> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="id:col[@name!='bild']"> <xsl:copy> <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="id:row"> <xsl:copy> <xsl:apply-templates/> </xsl:copy> </xsl:template> </xsl:stylesheet> |
xml-to-latex.xsl
) Diese XSLT-Transformation wandelt die XML-Datei in eine LaTeX-Quelle um. Der folgende Schritt (pdflatex
) wird diese dann in ein PDF übersetzen.
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: | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:id="http://schema.programmfabrik.de/imexport-data/0.1" xmlns:an="http://schema.programmfabrik.de/imexport-annotation-output/0.1"> <xsl:output method="text" /> <xsl:strip-space elements="*" /> <xsl:template match="id:dump"> \documentclass[a4paper]{article} \usepackage{german} \usepackage{graphicx} \begin{document} <xsl:apply-templates/> \end{document} </xsl:template> <xsl:template match="id:table[@tablename='assets']"> \section{Freie Bilder} <xsl:apply-templates/> </xsl:template> <xsl:template match="id:row"> \subsection{Bild "`<xsl:value-of select="./id:col[@name='titel']/text()"/>"'} ID=<xsl:value-of select="./id:col[@name='id']"/> <xsl:if test="an:asset/an:file"> \begin{figure}[ht] \includegraphics[height=0.7\textheight,width=0.9\textwidth,keepaspectratio]{<xsl:value-of select="an:asset/an:file"/>} \end{figure} </xsl:if> </xsl:template> </xsl:stylesheet> |