Neues Beispiel zu XML, XSLT Transformation nach HTML mit Standard Java(1.4)

Thomas Darimont

Erfahrenes Mitglied
Hier mal ein Beispiel zur Trabnsformation eines XML Dokuments mittels XSL in ein HTML Dokument mit Standard Java (1.4).

Die Klasse XMLTest:
Code:
import java.io.File;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

public class XMLTest {

	public static void main(String[] args) {
		StreamSource stylesheet = new StreamSource(XMLTest.class
				.getResourceAsStream("./Data.xsl"));
		StreamSource src = new StreamSource(XMLTest.class
				.getResourceAsStream("./Data.xml"));
		StreamResult result = new StreamResult(new File("c:/Data.html"));

		TransformerFactory factory = TransformerFactory.newInstance();
		try {
			Transformer t = factory.newTransformer(stylesheet);
			t.transform(src, result);
		} catch (TransformerConfigurationException e) {
			e.printStackTrace();
		} catch (TransformerException e) {
			e.printStackTrace();
		}

	}
}

Die Datei Data.xml:
Code:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="./Data.xsl"?>
<firma name="XYZ Company">
	<angestellte>
		<angestellter name="Thomas" alter="20"/>
		<angestellter name="Richard" alter="22"/>
	</angestellte>
</firma>

Das Stylesheet Data.xsl:
Code:
<?xml version="1.0"?>
<!--Data.xsl-->
<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>

Data.xml und Data.xsl kopiert ihr bitte ins selbe Verzeichnis in der eure kompilierte XMLTest.class liegt...

Wenn ihr das ganze dann mit:
javac XMLTest.java
kompiliert und danach folgendes absetzt

Findet ihr unter eurem Laufwerk c: eine Datei namens Data.html.
Das ist die über das Stylesheet generierte Ausgabe :)


HTH
Gruß Tom
 
Zurück