Changeset 32491
- Timestamp:
- 2018-09-25T13:03:50+12:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/XMLTransformer.java
r30782 r32491 59 59 import org.w3c.dom.Node; 60 60 61 import org.xml.sax.XMLReader; 62 import org.xml.sax.EntityResolver; 63 import org.xml.sax.InputSource; 64 import org.xml.sax.SAXException; 65 import javax.xml.transform.sax.SAXSource; 66 import org.xml.sax.helpers.XMLReaderFactory; 61 67 /** 62 68 * XMLTransformer - utility class for greenstone … … 64 70 * transforms xml using xslt 65 71 * 66 * @author Katherine Don67 * @version $Revision$68 72 */ 69 73 public class XMLTransformer … … 231 235 protected Node transform(Document stylesheet, Document source, HashMap<String, Object> parameters, Document docDocType, Document resultNode) 232 236 { 237 233 238 try 234 239 { … … 470 475 } 471 476 477 /** transform method for when the source doc may contain DTD references. eg in gberg collection - the files are kind of outside of greenstone. 478 * pass in an entity resolver, and it will be used by the XMLReader */ 479 public Node transform(File stylesheet, File source, Document docDocType, EntityResolver er) 480 { 481 try 482 { 483 TransformErrorListener transformerErrorListener = (TransformErrorListener) this.t_factory.getErrorListener(); 484 transformerErrorListener.setStylesheet(stylesheet); 485 Transformer transformer = this.t_factory.newTransformer(new StreamSource(new InputStreamReader(new FileInputStream(stylesheet), "UTF-8"))); 486 DOMResult result = (docDocType == null) ? new DOMResult() : new DOMResult(docDocType); 487 488 XMLReader reader = XMLReaderFactory.createXMLReader(); 489 reader.setEntityResolver(er); 490 SAXSource xmlSource = new SAXSource(reader, new InputSource(new InputStreamReader(new FileInputStream(source), "UTF-8"))); 491 492 transformer.setErrorListener(new TransformErrorListener(stylesheet, xmlSource)); 493 494 transformer.transform(xmlSource, result); 495 return result.getNode().getFirstChild(); 496 } 497 catch (SAXException e) 498 { 499 return transformError("XMLTransformer.transform(File, File), couldn't create XMLReader for source\n"+ source, e); 500 } 501 catch (TransformerConfigurationException e) 502 { 503 return transformError("XMLTransformer.transform(File, File)" + "\ncouldn't create transformer object for files\n" + stylesheet + "\n" + source, e); 504 } 505 catch (TransformerException e) 506 { 507 return transformError("XMLTransformer.transform(File, File)" + "\ncouldn't transform the source for files\n" + stylesheet + "\n" + source, e); 508 } 509 catch (UnsupportedEncodingException e) 510 { 511 return transformError("XMLTransformer.transform(File, File)" + "\ncouldn't read file due to an unsupported encoding\n" + stylesheet + "\n" + source, e); 512 } 513 catch (FileNotFoundException e) 514 { 515 return transformError("XMLTransformer.transform(File, File)" + "\ncouldn't find the file specified\n" + stylesheet + "\n" + source, e); 516 } 517 } 472 518 // debugAsFile is only to be set to true when either the stylesheet or source parameters 473 519 // are not objects of type File. The debugAsFile variable is passed into the … … 479 525 try 480 526 { 481 527 TransformErrorListener transformerErrorListener = (TransformErrorListener) this.t_factory.getErrorListener(); 482 528 transformerErrorListener.setStylesheet(stylesheet); 483 529 Transformer transformer = this.t_factory.newTransformer(new StreamSource(new InputStreamReader(new FileInputStream(stylesheet), "UTF-8")));
Note:
See TracChangeset
for help on using the changeset viewer.