|                                                                                                              1
 37  package org.webharvest.runtime.processors;
 38
 39  import java.io.StringReader
  ; 40  import java.io.StringWriter
  ; 41
 42  import javax.xml.transform.*;
 43  import javax.xml.transform.stream.StreamResult
  ; 44  import javax.xml.transform.stream.StreamSource
  ; 45
 46  import org.webharvest.definition.XsltDef;
 47  import org.webharvest.definition.BaseElementDef;
 48  import org.webharvest.exception.XsltException;
 49  import org.webharvest.runtime.Scraper;
 50  import org.webharvest.runtime.ScraperContext;
 51  import org.webharvest.runtime.variables.IVariable;
 52  import org.webharvest.runtime.variables.NodeVariable;
 53
 54
 57  public class XsltProcessor extends BaseProcessor {
 58
 59      private XsltDef xsltDef;
 60
 61      public XsltProcessor(XsltDef xsltDef) {
 62          super(xsltDef);
 63          this.xsltDef = xsltDef;
 64      }
 65
 66      public IVariable execute(Scraper scraper, ScraperContext context) {
 67          BaseElementDef xsltElementDef = xsltDef.getXmlDef();
 68          IVariable xmlStr = getBodyTextContent(xsltElementDef, scraper, context);
 69          debug(xsltElementDef, scraper, xmlStr);
 70
 71          BaseElementDef stylesheetElementDef = xsltDef.getStylesheetDef();
 72          IVariable stylesheetStr = getBodyTextContent(stylesheetElementDef, scraper, context);
 73          debug(stylesheetElementDef, scraper, stylesheetStr);
 74
 75          try {
 76              TransformerFactory xformFactory = TransformerFactory.newInstance();
 77              Source
  xsl = new StreamSource  ( new StringReader  (stylesheetStr.toString()) ); 78              Transformer stylesheet = xformFactory.newTransformer(xsl);
 79              Source
  request  = new StreamSource  ( new StringReader  (xmlStr.toString()) ); 80              StringWriter
  writer = new StringWriter  (); 81              Result
  response = new StreamResult  (writer); 82              stylesheet.transform(request, response);
 83
 84              return new NodeVariable(writer.toString());
 85          } catch (TransformerException e) {
 86              throw new XsltException("Error during XSLT transforming!", e);
 87          }
 88      }
 89
 90  }
                                                                                                                                                                                                             |                                                                       
 
 
 
 
 
                                                                                   Popular Tags                                                                                                                                                                                              |