Hallo! Ich bin langsam am verzweifeln. Ich möchte ein XML File transformieren. Und als Ausgabe soll eine "schöne" Formatierung erzeugt werden. Aber egal, ob Xalan, Saxon etc. ich bekomme das nicht hin. Hier mal mein Beispielcode:
Die XML-Datei sieht so aus:
Und das Stylesheet:
Die Ausgabe sollte so aussehen:
Und bei mir fehlt immer der Einzug. Habe schon mal indent="yes" ins Stylesheet geschrieben, hat aber auch nichts geholfen. Ich würde gerne, das die Tiefe der Ebene der Tags vom Prozessor richtig erkannt und gesetzt werden. Jemand eine Idee?
Java:
import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
public class XSLTransformator {
public static void main(String[] args) throws javax.xml.transform.TransformerException {
File xmlFile = new File("Test.xml");
File xsltFile = new File("Prozessor.xsl");
Source xmlSource = new StreamSource(xmlFile);
Source xsltSource = new StreamSource(xsltFile);
Result result = new StreamResult(System.out);
TransformerFactory transFact = TransformerFactory.newInstance( );
Transformer trans = transFact.newTransformer(xsltSource);
trans.transform(xmlSource, result);
}
}
Die XML-Datei sieht so aus:
Java:
<?xml version="1.0"?>
<firma name="Company">
<angestellte>
<angestellter name="Heinz" alter="32"/>
<angestellter name="Susi" alter="40"/>
</angestellte>
</firma>
Und das Stylesheet:
Java:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>
<xsl:value-of select="firma/@name"/>
</title>
</head>
<body>
<xsl:value-of select="firma/@name"/>
<table border="2">
<xsl:for-each select="/firma/angestellte/angestellter">
<tr>
<td><xsl:value-of select="@name"/></td>
<td><xsl:value-of select="@alter"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Die Ausgabe sollte so aussehen:
Java:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Company</title>
</head>
<body>Company
<table border="2">
<tr>
<td>Heinz</td>
<td>32</td>
</tr>
<tr>
<td>Susi</td>
<td>40</td>
</tr>
</table>
</body>
</html>
Und bei mir fehlt immer der Einzug. Habe schon mal indent="yes" ins Stylesheet geschrieben, hat aber auch nichts geholfen. Ich würde gerne, das die Tiefe der Ebene der Tags vom Prozessor richtig erkannt und gesetzt werden. Jemand eine Idee?