Changeset 4701


Ignore:
Timestamp:
2003-06-18T11:51:34+12:00 (21 years ago)
Author:
kjdon
Message:

transformer now takes a HashMap of parameters to set as global params in the stylesheet before transformation. xml source must now also be a document, in order for XPaths like /page to work

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/util/XMLTransformer.java

    r3941 r4701  
    3838import java.io.StringWriter;
    3939import java.io.File;
    40 
     40import java.util.HashMap;
     41import java.util.Set;
     42import java.util.Map;
     43import java.util.Iterator;
    4144/** XMLTransformer - utility class for greenstone
    4245 *
     
    9295        return output.toString();
    9396    } catch (TransformerConfigurationException e) {
    94         System.err.println("XMLTransformer: couldn't create transformer object: "+e.getMessage());
     97        System.err.println("XMLTransformer: couldn't create transformer object: "+e.getMessageAndLocation());
     98        System.err.println(e.getLocationAsString()); 
    9599        return "";
    96100    } catch (TransformerException e) {
     
    100104    }
    101105
    102       public String transformToString(Document stylesheet, Node xml_in) {
    103      
    104       try {
     106    public String transformToString(Document stylesheet, Document source) {
     107    return transformToString(stylesheet, source, null);
     108    }
     109   
     110    public String transformToString(Document stylesheet, Document source, HashMap parameters) {
     111   
     112    try {
    105113        // Use the TransformerFactory to process the stylesheet Source and generate a Transformer.
    106114        Transformer transformer = t_factory_.newTransformer(new DOMSource(stylesheet));
     115        if (parameters != null) {
     116        Set params = parameters.entrySet();
     117        Iterator i = params.iterator();
     118        while (i.hasNext()) {
     119            Map.Entry m = (Map.Entry)i.next();
     120            transformer.setParameter((String)m.getKey(), m.getValue());
     121        }
     122        }
     123        //transformer.setParameter("page_lang", source.getDocumentElement().getAttribute(GSXML.LANG_ATT));
     124
    107125       
    108126        // Use the Transformer to transform an XML Source and send the output to a Result object.
    109127        StringWriter output = new StringWriter();
    110128       
    111         transformer.transform(new DOMSource(xml_in), new StreamResult(output));
     129        transformer.transform(new DOMSource(source), new StreamResult(output));
    112130        return output.toString();
    113131    } catch (TransformerConfigurationException e) {
    114         System.err.println("XMLTransformer: couldn't create transformer object: "+e.getMessage());
     132        System.err.println("XMLTransformer: couldn't create transformer object: "+e.getMessageAndLocation());
     133        System.err.println(e.getLocationAsString()); 
    115134        return "";
    116135    } catch (TransformerException e) {
     
    120139      }
    121140
    122     public Node transform(Document stylesheet, Node xml_in) {
     141    public Node transform(Document stylesheet, Document source) {
     142    return transform(stylesheet, source, null);
     143    }
     144
     145    public Node transform(Document stylesheet, Document source, HashMap parameters) {
    123146
    124147    try {
    125148        // Use the TransformerFactory to process the stylesheet Source and generate a Transformer.
    126149        Transformer transformer = t_factory_.newTransformer(new DOMSource(stylesheet));
     150        if (parameters != null) {
     151        Set params = parameters.entrySet();
     152        Iterator i = params.iterator();
     153        while (i.hasNext()) {
     154            Map.Entry m = (Map.Entry)i.next();
     155            transformer.setParameter((String)m.getKey(), m.getValue());
     156        }
     157        }
    127158
    128159        DOMResult result = new DOMResult();
    129         transformer.transform(new DOMSource(xml_in), result);
     160        transformer.transform(new DOMSource(source), result);
    130161        return result.getNode().getFirstChild();
    131162    } catch (TransformerConfigurationException e) {
    132         System.err.println("XMLTransformer: couldn't create transformer object: "+e.getMessage());
     163        System.err.println("XMLTransformer: couldn't create transformer object: "+e.getMessageAndLocation());
     164        System.err.println(e.getLocationAsString()); 
    133165        return null;
    134166    } catch (TransformerException e) {
     
    136168        return null;
    137169    }   
    138       }
     170   
     171
     172    }
    139173}
    140174
Note: See TracChangeset for help on using the changeset viewer.