XML und XSLT

Erfahrungen

  • Erstellung eines Autosatz Katalog Workflow für InDesign aus XML-Daten
  • Export von InDesign Zeitschriften-Daten nach XML
  • Entwicklung von XSLT für Bereinigung von XML
  • Entwicklung von XSLT für Konvertierung von XML-Zeitschriftendaten nach HTML und XML
  • Entwicklung von XSLT für Darstellung von Navision Export XML
  • Entwicklung von XSLT zur Transformierung in ONXY XML
  • DTD Entwicklung Zeitschriften
  • Ajax, Jason - Javascript und Jquery


Sie möchten mehr wissen? Klicken Sie einfach auf mehr!

Bei konkreten Rückfragen können Sie mich gerne kontaktieren.

mehr

XML und XSLT

XML InDesign Workflow

Erstellung eines Autosatz Katalog Workflow 2012

Die Basis meines InDesign Workflows für den Autosatz eines Katalogs, beruht auf den Funktionen die die Grundversion von InDesign bietet. Es gibt zahllose Anbieter von InDesign Gatchets die dieselbe Funktion bieten, allerdings sind diese bisweilen mit recht hohen Ausgaben verbunden, die unnötig sind.

Schritt 1: Anpassung der Importdaten

Die Daten des Katalogs müssen in strukturierter Form vorliegen, am besten in XML. Leider ist XML nicht gleich XML und man muss dessen Form für einen Import in InDesign anpassen. Nach einer Analyse der Ausgangsdaten, muss ein Stylesheet erstellt werden, mit der das XML bereinigt wird.

Schritt 2: Import der XML in InDesign

Die XML-Daten müssen in InDesign importiert werden, dies funktioniert über 'Datei - XML importieren'. Im besten Fall hat man bereits einen Import und eine Zuordnung der Tags zu Formatvorlagen vorgenommen, in diesem Fall entfällt Schritt 3.

Schritt 3: Zuordnung von XML Tags zu Formatvorlagen

In der Strukturansicht (STRG + ALT + 1, oder Ansicht – Struktur – Struktur einblenden) kann man 'Tags zu Formaten' zuordnen. Für den Fall das man neue Absatzformate (z. Bsp.: für neue Tags) braucht, muss man diese erst neu erstellen (Fenster – Tags) und diesem Tag dann ein Absatzformat (auch neu erstellen) zuweisen. Einmal erstellte Absatzformate können dann verändert werden – z. Bsp. eine andere Schrift, dies wirkt sich dann auf alle Textteile aus, die zu einem bestimmten Tag/Absatzformat gehören. Wichtig! InDesign unterscheidet zwischen Absatz- und Zeichenformaten, Zeichenformate sind Formate innerhalb eines Absatzes zum Beispiel ein Schlagwort mitten im Text oder ein kursiver Textteil. Dieser Schritt erfordert eine gute Vorbereitung. Die Zuordnung von Formatvorlagen sollte man am besten schon im Vorfeld in einer Tabelle festgehalten werden. Schriftart, Schriftgröße und Auszeichnungen können im Nachhinein über Anpassung der Formatvorlagen geändert werden. Das Grundlayout muss aber vorher festgelegt sein, so ist es zum Beispiel schwierig im eine Überschrift der zweiten Kategorie hinzuzufügen.

Schritt 4: Nachbearbeitung und Textbereinigung

Einige Dinge lassen sich in XML leider nicht abbilden. Dazu gehört die Trennung zwischen harten und weichen Umbrüchen oder die Umsetzung von bestimmten Satzzeichen. Solche Angaben haben in XML auch nichts verloren, sind aber für den Satz enorm wichtig. Auch kann es vorkommen, dass es leere Datenbankfelder gibt was nicht benötigte Zeilen und Kommata verursacht. Dieser letzte Schritt ist über die Suchen und Ersetzen Funktion (STRG F) von InDesign zu beseitigen. Mithilfe des Javascript 'Find Change by List' kann man eine ganze Liste von Suche und Ersetze Funktionen durchführen. Das ursprüngliche Skript muss angepasst werden.

Dieses und andere Skripte findet man unter: Windows 7: C:\Users\Username\AppData\Roaming\Adobe\InDesign\Version 7.0\de_DE\Scripts\Scripts Panel Windows XP: Documents and Settings\Benutzername\Anwendungsdaten\Adobe\InDesign\Version 5.0\Script\Scripts Panel


Skripte die hier abgelegt werden stehen dann in InDesign dann unter 'Benutzer' zur Verfügung. Das 'Find Change by List' Skript greift auf eine Textdatei zu, die in dem Ordner "FindChangeSupport" abgelegt werden muss.


Hier ein paar Beispiele für Suche und Ersetze Funktionen:

Beispiel 1: Findet zwei harte Umbrüche und ersetzt diese durch Einen. ^p entspricht hierbei einem harten Umbruch. text {findWhat:"^p^p"} {changeTo:"^p"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}

Beispiel 2: Findet zwei weiche Umbrüche und ersetzt diese durch Einen. ^n entspricht also einem weichen Umbruch. text {findWhat:"^n^n"} {changeTo:"^n"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}

Diese Kürzel für Satzzeichen nennt man auch Metazeichen und Übersichten hierzu findet man eigentlich mit einer einfachen Googlesuche. Dies war die Kurzübersicht zum Autosatzkatalog, bei weiteren Rückfragen senden Sie mir einfach eine E-Mail.


mehr

XML und XSLT

InDesign Export und Erstellung von XSLT für diverse Aufgaben 2007-2012

Medienunternehmen können über die Bereitstellung von strukturierten Daten in HTML oder XML zusätzliche Einnahmen generieren. Idealerweise liegen diese bereits vor, da man XML-Daten als Grundlage für eine medienneutrale Herstellung unterschiedlicher Produkte einsetzt. Ob diese dann von externen Unternehmen sauber verarbeitet werden, kann gilt es zu prüfen und ggf. muss man diese umwandeln. Leider muss man in bestimmten Fällen auch Daten aus festen Satzdaten in XML und HTML umwandeln. Die Umwandlung von XML und der Export aus InDesign war von 2007-2012 meine Aufgabe:

Der Export von XML-Daten aus InDesign ist relativ einfach. Um saubere XML-Daten zu exportieren, benötigt man noch etwas Nacharbeit. Für den Export benötigt man eine Zuordnung von Formatvorlagen zu Tags. Diese Zuordnung kann man über die Strukturansicht vornehmen (Tastenkürzel Strg+Alt+1). Verschachtelte Tags, zum Beispiel Schlagworte innerhalb eines Textabsatzes, sollten über Zeichenformate realisiert werden. Der Export von allen Inhalten sollte in einer XML-Datei erfolgen. Diese kann im Zweifel nachbearbeitet und mithilfe eines Stylesheets angepasst oder in Einzelteile aufgespalten werden.


XSLT

Ich verwendete für meine Stylesheets XSLT 2.0, habe aber mit XSLT 1.0 angefangen XSLT zu lernen. Daher kenne ich die Vorzüge von XSLT 2.0 gegenüber von 1.0. Eine der wichtigsten Verbesserungen ist xsl:result. Mit dieser Anweisung kann man Resultate von Umwandlungen auch in mehreren Dateien in einem vom Parser angelegten Ordnersystem speichern.


Die Möglichkeit mithilfe von XML automatisch eine Ausgabe in mehrere Ausgangsdokumente zu realisieren, halte ich für eine der wichtigsten Neuerungen gegenüber XSLT 1.0.



<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.0" indent="yes" name="ausgabe"/>
<xsl:for-each select="artikel">
<xsl:result-document href="file:///C:/Testdaten/{//object}/{//jahr}/{//ausgabe}/{@artikelid}/{@artikelseite}.htm" format="ausgabe">


Mithilfe dieser einfachen Konstruktion werden alle Inhalte innerhalb des Tags 'artikel' ausgegeben. Für jeden Artikel wird auf Basis der Metainformationen ein neues HMTL Dokument erstellt. Nun muss noch der Aufbau dieses HTML Dokumente beschrieben werden.
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1" />
<META NAME="object" CONTENT="{//object}" />

Dies ist eine Metainformation, die u.a. von Datenbankanwendungen ausgelesen und interpretiert werden kann. Dies ermöglicht den Fund von Dokumenten auf Basis von bestimmten Informationen. In diesem Fall könnte 'object' zum Beispiel eine bestimmte Zeitschrift, ein Magazin oder eine Reihe darstellen.

<META NAME="identifier" CONTENT="VerlagXYZ {//jahr -1955} {//jahr} {//ausgabe} {@artikelseite} {@artikelid}" />

Dies ist ein Beispiel für die Erstellung einer verlagseigenen ID. Sehr interessant ist '//jahr -1955'! Der Inhalt des Tags 'jahr' wird um 1955 reduziert. Sehr nützlich um einen Jahrgang einer Zeitschrift auszugeben (Annahme Ersterscheiung 1955).

<body BGCOLOR="#FFFFFF">
<xsl:apply-templates />
</body><br /> </html>
</xsl:result-document>
</xsl:for-each>
</xsl:template>


Dies war ein einfacher Abriss für ein HTML Dokument.

Den durch 'apply-templates' eingefügten Inhalt müssen wir nun noch beschreiben. Dies erfolgt durch xsl:template.

<xsl:template match="titel1">
<h2>
<xsl:apply-templates />
</h2>
</xsl:template>


Dies ist nur ein kurzer Abriss und wurde so für den Export einer XML verwendet, der alle Inhaltsdaten einer bestimmten Zeitschrift enthielt. Bei Rückfragen stehe ich zur Verfügung.


mehr