Java and XSLT tutorial to transform XML documents
Q. What is XSLT?
A. XSLT (Extensible Stylesheet Language Transformations) is a language for transforming XML documents into other XML, HTML, or plain text documents. XSLT is based on functional prgramming ideas, but it is not a full functional programming language as it lacks ability to treat functions as a first class data type. XSLT supports XPath to query parts of XML. The major disadvantage of XSL is that it can be very verbose.
Step 1: The source XML
<Employee> <name type="first">Peter</name> <age>25</age> </Employee>
Step 2: The style sheet (i.e XSL) that defines how to transform
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/Employee"> <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> <H1> Hello <xsl:value-of select="name"/> </H1> </BODY> </HTML> </xsl:template> </xsl:stylesheet>
Step 3: The Java code to perform the transformation by applying the above XSL.
package com.xml; import java.io.ByteArrayInputStream; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; public class XsltTransform { public static void main(String[] args) { String xml = "<Employee><name type=\"first\">Peter</name><age>25</age></Employee>"; String xsl = "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">\r\n" + " <xsl:template match=\"/Employee\">\r\n" + " <HTML>\r\n" + " <HEAD>\r\n" + " <TITLE></TITLE>\r\n" + " </HEAD>\r\n" + " <BODY>\r\n" + " <H1>\r\n" + " Hello \r\n" + " <xsl:value-of select=\"name\"/>\r\n" + " </H1>\r\n" + " </BODY>\r\n" + " </HTML>\r\n" + "\r\n" + " </xsl:template>\r\n" + "</xsl:stylesheet>"; try { Source xmlSource = new StreamSource(new ByteArrayInputStream(xml.getBytes())); Source xslSource = new StreamSource(new ByteArrayInputStream(xsl.getBytes())); Result result = new StreamResult(System.out); TransformerFactory factory = TransformerFactory.newInstance(); Transformer transformer = factory.newTransformer(xslSource); transformer.transform(xmlSource, result); } catch (TransformerException e) { e.printStackTrace(); } } }
Output:
<HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <TITLE></TITLE> </HEAD> <BODY> <H1> Hello Peter</H1> </BODY> </HTML>
Labels: XML
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home