advertisement
Premier Club Log In/Registration
  Include Code  Search Tips
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   SKILLBUILDING  |   TIP BANK  |   SOURCEBANK  |   FORUMS  |   NEWSLETTERS
Browse DevX
Partners & Affiliates
advertisement
advertisement
Tip of the Day
Rate this item | 0 users have rated this item.
Expertise: Advanced
Language: Java
July 29, 2008
Using Templates for Concurrent XSLT Transformations
As you know, you may not use a Transformer object (from the TrAX API) in multiple threads running concurrently. To do this, you need to use Templates. The following three example threads demonstrate:

Used documents:


C:\Data_Local\xml\docs\AirWings_xslt.xml
C:\Data_Local\xml\docs\AirWings_xslt.xsl
Result documents:

three HTML documents

import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import java.io.*;

class xslt extends Thread{
String doc;
int nr_doc=0;

  public xslt(String doc,int nr_doc) 
     {
     this.doc=doc;
     this.nr_doc=nr_doc;
     }

  public void run()
     {           
     //define the Source 
     Source sXML=new StreamSource(new File 
                 ("C://Data_Local//xml//docs//"+doc));
       
     //define the Result
     Result rXML=new StreamResult(new File 
       ("C://Data_Local//xml//docs//" +doc+String.valueOf
                 (nr_doc)+".html"));
                                         
   //get the Transformer
   try{
      Transformer tXML=(TrAX_templates.templateXML).                                               
                                          newTransformer(); 
     tXML.transform(sXML,rXML);
      }catch(javax.xml.transform.TransformerConfigurationException e)
           {System.out.println(e.getMessage());
        }catch(javax.xml.transform.TransformerException e)
           {System.out.println(e.getMessage());}        
      }
}

public class TrAX_templates{

   static Templates templateXML=null;

   public static void main(String[] args)
      {
      String[] docs={"AirWings_xslt.xml", 
                     "AirWings_xslt.xml","AirWings_xslt.xml"};

      //get a TransformerFactory
      TransformerFactory tfXML=TransformerFactory.newInstance();
         
      //define the Source for AirWings_xslt.xsl
      Source sXSL=new StreamSource(new File
               ("C://Data_Local//xml//docs//AirWings_xslt.xsl"));
                  
    //get a Templates object
    try{
       templateXML=tfXML.newTemplates(sXSL);
       }catch(javax.xml.transform.TransformerConfigurationException e)
            {System.out.println(e.getMessage());}
      
      Thread[] threads=new Thread[docs.length];
      for(int i=0;i<docs.length;i++)
          {
          threads[i]=new xslt(docs[i],i);
          threads[i].start();
          }
      }
}
Leonard Anghel
If you have a hot tip and we publish it, we'll pay you. However, due to accounting overhead we no longer pay $10 for a single tip submission. You must accumulate 10 acceptable tips to receive payment. Be sure to include a clear explanation of what the technique does and why it's useful. If it includes code, limit it to 20 lines if possible. Submit your tip here.
Please rate this item (5=best)
 1  2  3  4  5
advertisement
advertisement
Advertising Info  |   Member Services  |   Permissions  |   Contact Us  |   Help  |   Feedback  |   Site Map  |   Network Map  |   About

internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

Legal Notices, Licensing, Permissions, Privacy Policy.
Advertise | Newsletters | Shopping | E-mail Offers | Freelance Jobs