1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
package com.jclark.xsl.sax;
import org.xml.sax.*;
import java.io.IOException;
public class OutputMethodHandlerImpl implements OutputMethodHandler {
private XSLProcessor processor;
private Destination dest;
public OutputMethodHandlerImpl(XSLProcessor processor) {
this.processor = processor;
}
public OutputMethodHandler createOutputMethodHandler(String uri) {
Destination d = dest.resolve(uri);
if (d == null)
return null;
OutputMethodHandlerImpl om = new OutputMethodHandlerImpl(processor);
om.setDestination(d);
return om;
}
public void setDestination(Destination dest) {
this.dest = dest;
}
static private final String JAVA_OUTPUT_METHOD = "http://www.jclark.com/xt/java";
public DocumentHandler createDocumentHandler(String name, AttributeList atts) throws SAXException, IOException {
DocumentHandler handler = null;
if (name == null)
;
else if (name.startsWith(JAVA_OUTPUT_METHOD)
&& (name.lastIndexOf(namespaceSeparator)
== JAVA_OUTPUT_METHOD.length())) {
try {
Class cls = Class.forName(name.substring(JAVA_OUTPUT_METHOD.length() + 1));
handler = (DocumentHandler)cls.newInstance();
}
catch (ClassNotFoundException e) { }
catch (InstantiationException e) { }
catch (IllegalAccessException e) { }
catch (ClassCastException e) { }
}
else if (name.equals("http://www.jclark.com/xt"
+ namespaceSeparator
+ "nxml"))
handler = new NXMLOutputHandler();
else if (name.equals("html"))
handler = new HTMLOutputHandler();
else if (name.equals("text"))
handler = new TextOutputHandler();
if (handler == null)
handler = new XMLOutputHandler();
if (handler instanceof OutputDocumentHandler)
handler = ((OutputDocumentHandler)handler).init(dest, atts);
return handler;
}
}
|