[1] Darstellung der Filter-Definition: der Prozess besteht nur aus mit einem einzigen XSL-Transformation-Schritt; das Ergebnisformat wird als "Text" deklariert.
Autor: Diez B. Roggisch, Artnology; Dr. F. Hoffmann, SNTL Publishing, 31.01.2006
Die Abkürzung CSV steht für ein Datenformat (Character Separated Values, auch Comma Separated Values). Der ZMS-Datentabelle liegt ein einfach strukturierter XML-Code zugrunde, der sich mit DTML oder XSLT nach CSV transfomieren lässt. Auf diese Weise können die ZMS-Datentabellen-Inhalte sehr leicht in andere Datenbank-Systeme überführt werden. Das Beispiel zeigt die Variante mit XSLT.
[1] Darstellung der Filter-Definition: der Prozess besteht nur aus mit einem einzigen XSL-Transformation-Schritt; das Ergebnisformat wird als "Text" deklariert.
[2] Filterdefinition im Detail: der Filter wird hier den Datentabellen-Objekten für Literatur, Glossar und Fussnoten zugeordnet. Die Berechtigung für den Export erhält der ZMS-Administrator.
Für die Transformation wird ein ZMS-Filter angelegt, der aus einem einzigen Prozessschritt besteht: per XSL wird der von ZMS generierte XML- in einen CSV-Strom konvertiert. Der entsprechende XSL-Code prozessiert die Liste von Dictionary-Elemente gemäß folgender Anweisung und schreibt die durch einen vertikalen Strich getrennten Werte zeilenweise aus (Download):
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="text"/>
<xsl:template match="//list">
<xsl:for-each select="item">
<xsl:apply-templates select="dictionary"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
<xsl:template match="dictionary">
<xsl:for-each select="item">
<xsl:value-of select="text()"/>
<xsl:if test="position() < last()">
<xsl:text>|</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:template>
<!-- suppress unneeded textual content -->
<xsl:template match="text()"/>
</xsl:stylesheet>
[3] Als server-seitiger batch-Prozess ist lediglich ein allgmeiner Aufruf des XSL-Transformers (hier xsltproc) erforderlich; diesem Prozess wird bei der Filter-Definition die XSL-Datei (code siehe oben) übergeben.
[4] Anwendung des Filters auf einem Content-Knoten am Beispiel einer Literatur-Datentabelle
[5] Der Ausgabestrom wird direkt an den Browser übergeben. (Alternativ liesse sich serverseitig mit einem weiteren Batch-Schritt eine Zip-Datei erzeugen und zurückgeben.)