Version 0.6
Copyright © 2009, 2010, 2011, 2012, 2013 Lars Vogel
21.02.2013
| Revision History | |||
|---|---|---|---|
| Revision 0.1 | 07.12.2009 | Lars Vogel |
Created |
| Revision 0.2 - 0.6 | 06.07.2010 - 21.02.2013 | Lars Vogel |
bugfixes and enhancements |
Table of Contents
XSLT allows to convert XML into other formats. XSLT stands for Extensible Stylesheet Language for Transformations . You typically run XLST from the command line but there is also tooling available for graphical tools, like the Eclipse IDE.
For an introduction to XML please see Java and XML Tutorial.
Under Linux the
xsltproc
command line tool is available. If it is missing in your
installation, you can install it via the following command under
Ubuntu.
sudo apt-get install xsltprocs
We start first with a simplest transformation possible; no
transformation at all. Create a new directory called
com.vogella.xslt.first. Create a
folder
files.
Create the following XML file
source.xml
in the
files
folder
.
<?xml version="1.0"?> <!-- This is a comment --> <people> <address type="personal"> <name>Lars </name> <street> Test </street> <telephon number="0123" /> </address> <address type="personal"> <name>Joe </name> <street> Test2 </street> <telephon number="1234" /> </address> <address type="business"> <name>Jim</name> <street> Test3 </street> <telephon number="2345" /> </address> </people>
Create the following
transform.xsl
file
in the
files
folder.
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" /> <xsl:template match="*"> <xsl:copy> <xsl:copy-of select="@*" /> <xsl:apply-templates /> </xsl:copy> </xsl:template> </xsl:stylesheet>
To run the transformation use the following command on the command line.
xsltproc --output result.xml files/transform.xsl files/sources.xml
Review the generated
result.xml
file. It should be a copy of the input file.
We want to do a real transformation. Create the following "transform2.xsl" and run it with the same input file
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" /> <!-- Copy everything --> <xsl:template match="*"> <xsl:copy> <xsl:copy-of select="@*" /> <xsl:apply-templates /> </xsl:copy> </xsl:template> <!-- Do some adjustments for the address --> <xsl:template match="address"> <xsl:element name="place-where-person-live"> <xsl:apply-templates /> </xsl:element> </xsl:template> <!-- Put the name in a <hubba> tag --> <xsl:template match="name"> <xsl:element name="name"> <hubba> <xsl:apply-templates /> </hubba> </xsl:element> </xsl:template> </xsl:stylesheet>
The result should look like the following.
<?xml version="1.0" encoding="UTF-8"?><people> <place-where-person-live> <name><hubba>Lars </hubba></name> <street> Test </street> <telephon number="0123"/> </place-where-person-live> <place-where-person-live> <name><hubba>Joe </hubba></name> <street> Test2 </street> <telephon number="1234"/> </place-where-person-live> <place-where-person-live> <name><hubba>Jim</hubba></name> <street> Test3 </street> <telephon number="2345"/> </place-where-person-live> </people>
The Eclipse XSL Project allows to edit XSLT files and perform interactive XSL transformations in Eclipse.
In case you want to use Eclipse to perform your transformation you can install the Eclipse XSL Developer via the Eclipse update manager .
This chapter explains how to use the Eclipse tooling to do your XLS
transformation. We again use the simplest transformation
of just
copying the data. Create a new project of type General in Eclipse
called
de.vogella.xslt.first. Create a
folder
files.
Create the following XML file
source.xml
in the folder
files
.
<?xml version="1.0"?> <!-- This is a comment --> <people> <address type="personal"> <name>Lars </name> <street> Test </street> <telephon number="0123" /> </address> <address type="personal"> <name>Joe </name> <street> Test2 </street> <telephon number="1234" /> </address> <address type="business"> <name>Jim</name> <street> Test3 </street> <telephon number="2345" /> </address> </people>
Create the following
transform.xsl
file
in the
files
folder.
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" /> <xsl:template match="*"> <xsl:copy> <xsl:copy-of select="@*" /> <xsl:apply-templates /> </xsl:copy> </xsl:template> </xsl:stylesheet>
Select your xsl file and run it as XSL application.

Select "Open Files..." and select
source.xml. Press ok to run
it.

Review the result "source.out.xml"
Before posting questions, please see the vogella FAQ. If you have questions or find an error in this article please use the www.vogella.com Google Group. I have created a short list how to create good questions which might also help you.
http://wiki.eclipse.org/XSLT_Project Eclipse XSL Wiki
http://www.dpawson.co.uk/xsl/sect2/sect21.html XSLT FAQ
http://www.zvon.org/xxl/XSLTutorial/Books/Book1/index.html XSLT Tutorial