Changeset 16374
- Timestamp:
- 2008-07-14T12:10:15+12:00 (15 years ago)
- Location:
- greenstone3/trunk/src/java/org/greenstone/gsdl3
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
greenstone3/trunk/src/java/org/greenstone/gsdl3/LibraryServlet.java
r14561 r16374 7 7 import org.w3c.dom.Document; 8 8 import org.w3c.dom.Element; 9 import org.w3c.dom.Node; 9 10 import org.w3c.dom.NodeList; 10 11 import java.io.*; … … 497 498 //GSXML.printXMLNode(xml_message); 498 499 499 Element xml_result = this.recept.process(xml_message);500 encodeURLs (xml_result, response);500 Node xml_result = this.recept.processToPage (xml_message); 501 // encodeURLs (xml_result, response); 501 502 out.println (this.converter.getPrettyString (xml_result)); 502 503 -
greenstone3/trunk/src/java/org/greenstone/gsdl3/core/Receptionist.java
r15011 r16374 129 129 return true; 130 130 } 131 132 public String process(String xml_in) { 133 134 Element message = this.converter.getDOM(xml_in).getDocumentElement(); 135 Node page = process(message); 136 return this.converter.getString(page); 137 } 138 139 public Element process(Element message) { 140 Node node = processToPage(message); 141 142 short nodeType = node.getNodeType(); 143 144 if (nodeType == Node.DOCUMENT_NODE) { 145 Document docNode = (Document)node; 146 return docNode.getDocumentElement() ; 147 } 148 else { 149 return null; 150 } 151 } 152 153 154 155 131 156 /** process using strings - just calls process using Elements */ 132 public String process (String xml_in) {157 public String processToPage(String xml_in) { 133 158 134 159 Element message = this.converter.getDOM(xml_in).getDocumentElement(); 135 Element page = process(message);160 Node page = processToPage(message); 136 161 return this.converter.getString(page); 137 162 } 163 138 164 139 165 /** process - produce a page of data in response to a request 140 166 * if something goes wrong, it returns null - 141 167 * TODO: return a suitable message to the user */ 142 public Element process(Element message) {168 public Node processToPage(Element message) { 143 169 144 170 // get the request out of the message - assume that there is only one … … 221 247 //logger.info(" raw page="+this.converter.getString(page)); 222 248 // transform the result in some way 223 Element resulting_page = postProcessPage(page); 224 logger.debug("receptionist returned response"); 225 logger.debug(this.converter.getString(resulting_page)); 249 //Element resulting_page = postProcessPage(page); 250 251 Node resulting_page = postProcessPage(page); 252 253 logger.debug("receptionist returned response"); 254 logger.debug(this.converter.getString(resulting_page)); 226 255 // logger.info("receptionist returned response"); 227 256 // logger.info(this.converter.getString(resulting_page)); … … 285 314 } 286 315 287 protected ElementpostProcessPage(Element page) {316 protected Node postProcessPage(Element page) { 288 317 return page; 289 318 } -
greenstone3/trunk/src/java/org/greenstone/gsdl3/core/Skin.java
r16314 r16374 175 175 176 176 177 public ElementtransformPage(Page page) throws Exception{177 public Node transformPage(Page page) throws Exception{ 178 178 179 179 Element p = page.getPage() ; … … 209 209 } catch (Exception e) { 210 210 System.out.println("error loading preprocessing xslt") ; 211 211 e.printStackTrace() ; 212 212 return constructErrorPage(e) ; 213 213 } … … 259 259 //return sourceXml.getDocumentElement() ; 260 260 261 Document finalPage = receptionist.converter.newDOM(); 261 // Document finalPage = receptionist.converter.newDOM(); // **** 262 Document finalPageParsed = null; 263 262 264 //transform source doc 263 265 try { 264 266 265 //Tranform XSL DOM to String 267 /* 268 //Tranform XSL DOM to String 266 269 TransformerFactory tf = TransformerFactory.newInstance(); 267 270 Transformer trans = tf.newTransformer(); 268 271 StringWriter sw = new StringWriter(); 269 272 trans.transform(new DOMSource(processedXsl), new StreamResult(sw)); 270 String theXSLAnswer = sw.toString(); 271 272 //writefile("c:\\mr49\\stylesheet.xsl", theXSLAnswer); 273 274 275 //Tranform XML DOM to String 273 // String theXSLAnswer = sw.toString(); // **** 274 275 276 //Tranform XML DOM to String 276 277 TransformerFactory tf2 = TransformerFactory.newInstance(); 277 278 Transformer trans2 = tf2.newTransformer(); 278 279 StringWriter sw2 = new StringWriter(); 279 280 trans2.transform(new DOMSource(sourceXml), new StreamResult(sw2)); 280 String theXMLAnswer = sw2.toString(); 281 282 //writefile("c:\\mr49\\xml.xml", theXMLAnswer); 283 284 281 //String theXMLAnswer = sw2.toString(); 282 */ 283 285 284 Transformer transformer = transformerFactory.newTransformer(new DOMSource(processedXsl)); 286 //Transformer transformer = transformerFactory.newTransformer(new StreamSource("c:\\mr49\\stylesheet.xsl")); 287 transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"); 288 DOMResult result = new DOMResult(); 289 result.setNode(finalPage); 285 // transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"); 286 //DOMResult result = new DOMResult(); 287 //result.setNode(finalPage); 290 288 291 289 //transformer.transform(new DOMSource(sourceXml), result2); 292 290 StringWriter result2 = new StringWriter(); 293 transformer.transform(new DOMSource(sourceXml), result); 294 295 //transformer.transform(new DOMSource(sourceXml), new StreamResult(result2)); 296 //writefile("c:\\mr49\\result.html", result2.toString()); 297 //System.err.println("outputting result:"); 298 //System.err.println(this.converter.getPrettyString(finalPage)); 299 /* 300 //Testing stuff 301 302 TransformerFactory tFactory = TransformerFactory.newInstance(); 303 Transformer with identity transformation 304 Transformer transformer2 = tFactory.newTransformer(new DOMSource(processedXsl)); 305 306 String xml="<root><a><b><c>aaa</c></b></a></root>"; 307 StringWriter result2 = new StringWriter(); 308 //Transfrom xml (in String) to formatted xml (in String) 309 transformer2.transform(new StreamSource(new StringReader(theXMLAnswer)), new StreamResult(result2)); 310 //Output result 311 writefile("c:\\mr49\\testHTML.txt", result2.toString()); 312 */ 313 314 315 291 transformer.transform(new DOMSource(sourceXml), new StreamResult(result2)); 292 293 XMLConverter converter = new XMLConverter(); 294 finalPageParsed = converter.getDOM(result2.toString()); 316 295 317 296 } catch (TransformerException e) { … … 326 305 } 327 306 328 return finalPage .getDocumentElement();307 return finalPageParsed; 329 308 } 330 309 … … 438 417 } 439 418 440 private void writefile(String filename, String contents){441 442 File testFile = new File(filename);443 444 445 //use buffering446 447 448 try {449 Writer output = new BufferedWriter(new FileWriter(testFile));450 //FileWriter always assumes default encoding is OK!451 output.write( contents );452 output.close();453 }454 455 catch (Exception e) {456 e.printStackTrace();457 }458 459 460 461 }462 419 463 420 } -
greenstone3/trunk/src/java/org/greenstone/gsdl3/core/SkinnedReceptionist.java
r16314 r16374 7 7 import org.w3c.dom.Document; 8 8 import org.w3c.dom.Element; 9 import org.w3c.dom.Node; 9 10 10 11 import org.greenstone.gsdl3.util.*; … … 24 25 } 25 26 26 protected ElementpostProcessPage(Element p) {27 protected Node postProcessPage(Element p) { 27 28 try { 28 29 //Avoid the duplicate attribute in the namespaces declaration of the generated html file … … 76 77 77 78 79 Node np = null; 78 80 try { 79 81 if (skin != null && !output.equals("xml")) { 80 //System.out.println("Skin exists") ; 81 p = skin.transformPage(page); 82 //System.out.println("done skinning") ; 83 84 //System.out.println("SkinnedPage = " + this.converter.getPrettyString(p)) ; 82 np = skin.transformPage(page); 85 83 } 84 else { 85 np = p; 86 } 86 87 } catch (Exception e) { 87 88 e.printStackTrace() ; … … 90 91 91 92 92 return p ;93 return np ; 93 94 } catch (Exception e) { 94 95 e.printStackTrace() ; … … 340 341 } 341 342 342 protected ElementtransformPage(Element page) {343 protected Node transformPage(Element page) { 343 344 return super.transformPage(page) ; 344 345 } -
greenstone3/trunk/src/java/org/greenstone/gsdl3/core/TransformingReceptionist.java
r13270 r16374 116 116 117 117 118 protected ElementpostProcessPage(Element page) {118 protected Node postProcessPage(Element page) { 119 119 120 120 // might need to add some data to the page 121 121 addExtraInfo(page); 122 122 // transform the page using xslt 123 Elementtransformed_page = transformPage(page);123 Node transformed_page = transformPage(page); 124 124 125 125 return transformed_page; … … 132 132 * we need to get any format element out of the page and add it to the xslt 133 133 * before transforming */ 134 protected ElementtransformPage(Element page) {134 protected Node transformPage(Element page) { 135 135 136 136 logger.debug("page before transfomring:"); … … 184 184 format_doc.appendChild(format_doc.importNode(format_elem, true)); 185 185 Element new_format = (Element)this.transformer.transform(stylesheet_doc, format_doc); 186 186 logger.debug("new format elem="+this.converter.getPrettyString(new_format)); 187 187 188 188 // add it in to the main stylesheet 189 189 GSXSLT.mergeStylesheets(style_doc, new_format); 190 190 } else { … … 196 196 } 197 197 198 // there is a thing called a URIResolver which you can set for a transformer or transformer factory. may be able to use this instead of this absoluteIncludepaths hack 199 GSXSLT.absoluteIncludePaths(style_doc, GlobalProperties.getGSDL3Home(), (String)this.config_params.get(GSConstants.SITE_NAME), collection, (String)this.config_params.get(GSConstants.INTERFACE_NAME), base_interfaces); 200 // put the page into a document - this is necessary for xslt to get the paths right if you have paths relative to the document root eg /page. 198 // there is a thing called a URIResolver which you can set for a 199 // transformer or transformer factory. may be able to use this 200 // instead of this absoluteIncludepaths hack 201 202 GSXSLT.absoluteIncludePaths(style_doc, GlobalProperties.getGSDL3Home(), 203 (String)this.config_params.get(GSConstants.SITE_NAME), 204 collection, (String)this.config_params.get(GSConstants.INTERFACE_NAME), 205 base_interfaces); 206 207 // put the page into a document - this is necessary for xslt to get 208 // the paths right if you have paths relative to the document root 209 // eg /page. 210 201 211 Document doc = this.converter.newDOM(); 202 212 doc.appendChild(doc.importNode(page, true)); -
greenstone3/trunk/src/java/org/greenstone/gsdl3/util/XMLConverter.java
r13210 r16374 21 21 // XML classes 22 22 import org.w3c.dom.Document; 23 import org.w3c.dom.DocumentType; 23 24 import org.w3c.dom.Node; 24 25 import org.w3c.dom.NodeList; … … 173 174 174 175 if (nodeType == Node.DOCUMENT_NODE) { 175 getString(((Document)xmlNode).getDocumentElement(), xmlRepresentation, depth, pretty); 176 Document xmlDocNode = (Document)xmlNode; 177 178 if (xmlDocNode.getDoctype() == null) { 179 System.err.println("Doctype is null."); 180 } 181 else { 182 183 DocumentType dt = xmlDocNode.getDoctype(); 184 185 String name = dt.getName(); 186 String pid = dt.getPublicId(); 187 String sid = dt.getSystemId(); 188 189 String doctype_str = "<!DOCTYPE " + dt.getName() + " PUBLIC \"" + pid + "\"" + sid + "\">\n"; 190 191 xmlRepresentation.append(doctype_str); 192 } 193 getString(xmlDocNode.getDocumentElement(), xmlRepresentation, depth, pretty); 176 194 return; 177 195 }
Note:
See TracChangeset
for help on using the changeset viewer.