Można powiązać dokument XML'owy z arkuszem XSL który ma dokonać jego transformacji, dokonuje się tego poprzez ustawienie znaczników:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xml" href="14-2.xsl"?>

Powinno to pozwolić na zinterpretowanie dokumentu na przykład przez przeglądarkę lub sam serwer przy próbie pobrania pliku. Niestety IE nie stosuje się do specyfikacji i wymaga innego nagłówka dla pliku xsl

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

zamiast

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"
  xmlns:html="http://www.w3.org/TR/REC-html40" result-ns="html">

Nie można więc stworzyć uniwersalnego szablonu. Kolejną różnicą IE w stosunku do specyfikacji jest brak domyślnych wzorców, w związku z tym trzeba dopisać te reguły.

Istnieje wiele kompilatorów XSLT, które umożliwiają przetwarzanie dokumentów z czego najpopularniejszy jest XT, który też jest zawsze najbliższy specyfikacji XSLT (dlatego że jego twórca bieże udział w jej tworzeniu). O to linki do stron zawierających kompilatory

  • XT - http://www.jclark.com/xml/xt.html
    najbardziej aktualna implementacja w javie XSLT
  • XALAN - http://xml.apache.org/xalan-j/
    wydajny procesor XSLT
  • XSLTC - http://xml.apache.org/xalan-j/xsltc_usage.html
    kompilator XSLTC do binarii javy
  • MSXML
    Implementacja Microsoftu

Przedstawię najprostszy sposób korzystnia z parsera zgodnego z Java Api for XML Parsing jakim na przykład jest Xalan.

//import interfejsow
import javax.xml.transform.*;
import java.io.*;

public class SimpleTransform
{
  public static void main(String[] args)    throws Exception
  {  
  //Pobranie fabrykatora obiektów, o tym jaki zostanie zwrócony  
  //decydują ustawienia środowiska, w przypadku XAlana jest to
  // org.apache.xalan.transformer.TransformerImpl.
  TransformerFactory tFactory = TransformerFactory.newInstance();

  //Tworzymy obiekt transformujący w oparciu o arkusz
  StreamSource xsl_src = new StreamSource("birds.xsl");
  Transformer transformer = tFactory.newTransformer(xsl_src);

  // Dokonujemy transformacji
  StreamSource xml_src = new StreamSource("birds.xml");
  StreamResult out =new FileOutputStream("out.xml")
  transformer.transform(xml_src, out);

  //po wszystkim
  } 
}