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/Receptionist.java

    r15011 r16374  
    129129    return true;
    130130    }
     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
    131156    /** process using strings - just calls process using Elements */
    132     public String process(String xml_in) {
     157    public String processToPage(String xml_in) {
    133158
    134159    Element message = this.converter.getDOM(xml_in).getDocumentElement();
    135     Element page = process(message);
     160    Node page = processToPage(message);
    136161    return this.converter.getString(page);
    137162    }
     163
    138164
    139165    /** process - produce a page of data in response to a request
    140166     * if something goes wrong, it returns null -
    141167     * TODO:  return a suitable message to the user */
    142     public Element process(Element message) {
     168    public Node processToPage(Element message) {
    143169
    144170    // get the request out of the message - assume that there is only one
     
    221247    //logger.info(" raw page="+this.converter.getString(page));
    222248    // 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));
    226255//    logger.info("receptionist returned response");
    227256//    logger.info(this.converter.getString(resulting_page));
     
    285314    }
    286315
    287     protected Element postProcessPage(Element page) {
     316    protected Node postProcessPage(Element page) {
    288317    return page;
    289318    }
Note: See TracChangeset for help on using the changeset viewer.