Ignore:
Timestamp:
2008-07-14T12:10:15+12:00 (16 years ago)
Author:
davidb
Message:

Change to Skin code (returning Node note Element) so XSLT encodes its DocType -- important information for IE to render resultant HTML correctly. This also required Skin.java to be changed from using DomResult to StreamResult. The former is known to have a problem with loosing its DocType info, and as it's then read-only, has no elegant way to put back this info.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/core/Skin.java

    r16314 r16374  
    175175   
    176176   
    177     public Element transformPage(Page page) throws Exception{
     177    public Node transformPage(Page page) throws Exception{
    178178       
    179179        Element p = page.getPage() ;
     
    209209        } catch (Exception e) {
    210210            System.out.println("error loading preprocessing xslt") ;
    211             e.printStackTrace() ;
     211        e.printStackTrace() ;
    212212            return constructErrorPage(e) ;
    213213        }
     
    259259        //return sourceXml.getDocumentElement() ;
    260260       
    261         Document finalPage = receptionist.converter.newDOM();
     261        // Document finalPage = receptionist.converter.newDOM(); // ****
     262        Document finalPageParsed = null;
     263
    262264        //transform source doc
    263265        try {
    264266       
    265         //Tranform XSL DOM to String   
     267            /*
     268            //Tranform XSL DOM to String   
    266269            TransformerFactory tf = TransformerFactory.newInstance();
    267270            Transformer trans = tf.newTransformer();
    268271            StringWriter sw = new StringWriter();
    269272            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   
    276277            TransformerFactory tf2 = TransformerFactory.newInstance();
    277278            Transformer trans2 = tf2.newTransformer();
    278279            StringWriter sw2 = new StringWriter();
    279280            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
    285284            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);
    290288           
    291289            //transformer.transform(new DOMSource(sourceXml), result2);
    292290            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());                     
    316295           
    317296        } catch (TransformerException e) {
     
    326305        }
    327306           
    328         return finalPage.getDocumentElement() ;
     307        return finalPageParsed;
    329308    }
    330309   
     
    438417    }
    439418   
    440     private void writefile(String filename, String contents){
    441    
    442         File testFile = new File(filename);
    443        
    444 
    445     //use buffering
    446    
    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   }
    462419
    463420}   
Note: See TracChangeset for help on using the changeset viewer.