Support free tutorials:











vogella training Training Books



XSLT - Extensible Stylesheet Language for Transformations - Tutorial

Lars Vogel

Version 0.6

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

XSLT with Eclipse

This articles explains how to do a XSLT transformations on the command line or via the Eclipse XSL project. In this article Eclipse 4.2 is used.


Table of Contents

1. XSLT
2. XSLT installation under Linux
3. Your first transformation - copy
4. Your first transformation
5. Using Eclipse
5.1. Eclipse XSLT installation
5.2. XSLT transformations with Eclipse
6. Support free vogella tutorials
6.1. Thank you
6.2. Questions and Discussion
7. Links and Literature

1. XSLT

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.

2. XSLT installation under Linux

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 

3. Your first transformation - copy

We start first with the 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="node()">
    <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.

4. Your first transformation

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="node()">
    <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> 

5. Using Eclipse

5.1. Eclipse XSLT installation

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 plugin via the Eclipse update manager.

5.2. XSLT transformations with Eclipse

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="node()">
    <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

6. Support free vogella tutorials

Maintaining high quality free online tutorials is a lot of work. Please support free tutorials by donating or by reporting typos and factual errors.

6.1. Thank you

Please consider a contribution if this article helped you.

Flattr this

6.2. Questions and Discussion

If you find errors in this tutorial, please notify me (see the top of the page). Please note that due to the high volume of feedback I receive, I cannot answer questions to your implementation. Ensure you have read the vogella FAQ as I don't respond to questions already answered there.

7. Links and Literature

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