title: Extremely slow XSLT transformation in Java
body: <p>I try to transform XML document using XSLT. As an input I have www.wordpress.org XHTML source code, and XSLT is dummy example retrieving site's title (actually it could do nothing - it doesn't change anything).</p>
  
  <p>Every single API or library I use, transformation takes about 2 minutes! If you take a look at wordpress.org source, you will notice that it is only 183 lines of code. As I googled it is probably due to DOM tree building. No matter how simple XSLT is, it is always 2 minutes - so it confirms idea that it's related to DOM building, but anyway it should not take 2 minutes in my opinion.</p>
  
  <p>Here is an example code (nothing special):</p>
  
  <pre><code>  TransformerFactory tFactory = TransformerFactory.newInstance();
     Transformer transformer = null;
  
     try {
         transformer = tFactory.newTransformer(
             new StreamSource("/home/pd/XSLT/transf.xslt"));
  
     } catch (TransformerConfigurationException e) {
         e.printStackTrace();
     }
  
     ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  
     System.out.println("START");
     try {
         transformer.transform(new SAXSource(new InputSource(
             new FileInputStream("/home/pd/XSLT/wordpress.xml"))),
             new StreamResult(outputStream));
     } catch (TransformerException e) {       
         e.printStackTrace();
     } catch (IOException e) {
         e.printStackTrace();
     }
     System.out.println("STOP");
  
     System.out.println(new String(outputStream.toByteArray()));
  </code></pre>
  
  <p>It's between START and STOP where java "pauses" for 2 minutes. If I take a look at the processor or memory usage, nothing increases. It looks like really JVM stopped...</p>
  
  <p>Do you have any experience in transforming XMLs that are longer than 50 (this is random number ;)) lines? As I read XSLT always needs to build DOM tree in order to do its work. Fast transformation is crucial for me.</p>
  
  <p>Thanks in advance,
  Piotr</p>