So ich habe hier ein XML mit zig verschiedenen Tags und Werten, dieses XML soll ausgelesen werden, und rauskommen soll eine Datei, die man auf ein (oder mehrere wenn mehrere Werte gibt) A4 Blatt drucken soll, soll auch einfach, verständlich lesbar sein.
Welches Format würde sich für die Ausgabe eigenen? Ich dachte da an HTML (der Nutzer soll nämlich in der Lage sein den ‘Style’ der Ausgabe selbst zu wählen/bestimmen). Man könnte z.B. auch LibreOffice nehmen, eine Vorlage erstellen mit Platzhalter-Feldern und die Werte entsprechen der Vorlage reinsetzen, würde mehr gestalterische Freiheit bei den Vorlagen für den Benutzer bedeuten, dafür aber auch deutlich mehr Programmieraufwand.
mit XSLT habe ich damals auch meine Anleitung von XML nach HTML konvertiert (bis ich auf Wiki umgestiegen bin). Der Vorteil ist wirklich das man die Daten und Darstellung getrennt hat. Was hinten rausfällt kann alles Mögliche sein.
Ich fürchte ich muss mal dazu was fragen… das neu erstellte XML schreibt den ersten Tag auf die erste Zeile (wo die XML Info ist).
Teil des XSL:
[XML]<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl=“http://www.w3.org/1999/XSL/Transform” version=“1.0”>
<xsl:strip-space elements="*" />
<xsl:output method=“xml”/>[/XML]
Teil des Quell XML:
[XML]<?xml version="1.0" encoding="utf-8"?>
[/XML]
Und das Teil des neuen XML:
[XML]<?xml version="1.0" encoding="UTF-8"?>
7
7
1
N
No Error[/XML]
Java Code zum Transformieren:
Source xsltSource = new StreamSource(xsltFile);
TransformerFactory transFact = TransformerFactory.newInstance();
Transformer trans = transFact.newTransformer(xsltSource);
trans.setOutputProperty(OutputKeys.INDENT, "yes");
trans.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "5");
trans.transform(xmlSource, new StreamResult(newXmlFile));```
wie schaffe ich es, dass der Tag <rechnung> im neuen XML auf die nächste Zeile geht? (ich kann das XML im Nachhinein bereinigen und den Tag runterhauen, würde es aber gerne schon bei der Transformation haben)
*** Edit ***
hat sich erledigt
```//hinzufügen zu java
trans.setOutputProperty(OutputKeys.STANDALONE, "yes");```