XML Transformation in JSP
Example program to demonstrate XML Transformation tag in JSP
This example illustrate use of XML transformation tag in JSP file. This example performs transformation from an XML file to XSLT stylesheet. XML transform tag performs transformation from XML file to XSLT file. Syntax for XML transform tag is as below:
<x:transform {xmlUrl="URLofXMLDocument"|xmlText="XMLDocument"} {xsltUrl="URLofXSLT"|xsltText="XSLTStylesheet"} [{var="varName"|result="resultObject"}] [scope="{page|request|session|application}"] /> |
In <x:transform> tag "xmlUrl" allows you to specify a URL from where the XML data is coming. Likewise xsltUrl also specifies XSL file URL from where XSL data is coming. You can also have data from internal source by "xmlText" and "xsltText" attributes. Scope may be page, request, session, application. This example is having user.xml file which is containing information of user such as their fname, mname, lname and age. These information is shown into XML-XSL Transform JSP page by transforming and checking the data with "parameters.xsl". This is being done by the following code:
<c:import url="http://localhost:8080/Example/user.xml" var="inputvalue" /> <c:import url="http://localhost:8080/Example/parameters.xsl" var="stylesheet" /> <x:transform xml = "${inputvalue}" xslt = "${stylesheet}"> <x:param name="nameParam" value="ankit" /> </x:transform> |
<x:transform> tag is using variable "inputvalue" which is url of xml document and variable "stylesheet" is containing url of xsl document. In <x:transform> tag we have passed one parameter and its value, which is playing an important role in this transformation.
1. user.xml
<?xml version="1.0"?> <user> <information> <fname>amit</fname> <mname>kumar</mname> <lname>raghuwanshi</lname> <age>21</age> </information> <information> <fname>sandeep</fname> <mname>kumar</mname> <lname>suman</lname> <age>23</age> </information> </user> |
In parameters.xsl file we are setting the parameter name as we have passed in JSP file. In this XSL file we have called template "processuser" to process user information which is checking all user information "fname" with parameter "nameParam", if it is not equal to nameParam's value then its showing [new value] on browser.
<xsl:template name="processuser"> <tr> <td> <xsl:value-of select="fname/text()" /> <xsl:if test="fname/text() != $nameParam"> [new value] </xsl:if> </td> <td> <xsl:value-of select="mname/text()" /> </td> <td> <xsl:value-of select="lname/text()" /> </td> <td> <xsl:value-of select="age/text()" /> </td> </tr> </xsl:template> |
Full code of parameters.xsl is as shown below:
2. parameters.xsl
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:param name="nameParam">ankit</xsl:param> <xsl:template match="user"> <h1>List of user in the XML document</h1> <table border="1" cellpadding="3"> <th>FirstName</th><th>MidName</th><th>LastName</th><th>Age</th> <xsl:apply-templates /> </table> </xsl:template> <xsl:template match="information"> <xsl:call-template name="processuser"> <xsl:with-param name="nameParam">amit</xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template name="processuser"> <tr><td> <xsl:value-of select="fname/text()" /> <xsl:if test="fname/text() != $nameParam">[new value] </xsl:if> </td><td> <xsl:value-of select="mname/text()" /> </td><td> <xsl:value-of select="lname/text()" /> </td><td> <xsl:value-of select="age/text()" /> </td></tr> </xsl:template> </xsl:transform> |
3. XML-XSL Transform
<%@ taglib uri="http://java.sun.com/jstl/xml" prefix="x" %> <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> <html > <head> <title>Using a Named Template with Global Parameters</title> </head> <body> <c:import url="http://localhost:8080/Example/user.xml" var="inputvalue" /> <c:import url="http://localhost:8080/Example/parameters.xsl" var="stylesheet" /> <x:transform xml = "${inputvalue}" xslt = "${stylesheet}"> <x:param name="nameParam" value="ankit" /> </x:transform> </body> </html> |
Output:
user.xml file
To run or execute this example follow these steps:
- Download all jar files required for JSTL xml tag use.
- Create and save user.xml.
- Create and save parameters.xsl
- Create and save XML-XSL Transform.jsp
- Run tomcat server and type following url in address bar
http://localhost:8080/Example/XML-XSLTransoform.jsp