I am having some stability problems with translets. On approxamitly 50%
of the translations I receive an error that I know is bogus. The other 50%
of the time it works fine. Any suggestions or fixes?
I am using the Xalan 2.4.1
I have precompiled my XSLs into class files using the following:
-----------------------------------------------------------------------
java org.apache.xalan.xsltc.cmdline.Compile -d translets -p
com.websterbank.translets <xslfile>
The latest error is
-----------------------------------------------------------------------
The element type "br" must be terminated by the matching end-tag
"</br>".
at 18, 71
I execute the translets with the following code:
-----------------------------------------------------------------------
public class PageBuilder {
TransformerFactory tFactory;
boolean useTranslet ;
public PageBuilder() {
super();
System.setProperty("javax.xml.transform.TransformerFactory","org.apache.xalan.xsltc.trax.TransformerFactoryImpl");
Log.write ( "PageBuilder.constructor: Factory" ) ;
tFactory = TransformerFactory.newInstance();
cache = new Hashtable();
useTranslet = true ;
}
public void handle (PrintWriter out, String stylesheet, Document
doc) {
Log.write ( "PageBuilder.handle: XML DOM Data" ) ;
DOMWriter wr = new DOMWriter () ;
wr.write ( doc, new PrintWriter( Log.getLogStream()));
if ( useTranslet )
handle_translet ( out, stylesheet, doc ) ;
else
handle_translet ( out, stylesheet, doc ) ;
}
public void handle_translet (PrintWriter out, String stylesheet,
Document doc) {
Log.write ( "PageBuilder.handle - translets" ) ;
Log.write ( "PageBuilder.handle - translets: " + stylesheet )
;
String transName = stylesheet.substring(
stylesheet.lastIndexOf("/")+1,stylesheet.lastIndexOf(".")) ;
transName = "com.translets." + transName ;
Translet translet = null ;
try {
Class transClass = Class.forName( transName ) ;
translet = (Translet)transClass.newInstance() ;
} catch ( Exception e ) {
Log.write ( "PageBuilder.handle - translets: Class
Lookup Failure - " + transName ) ;
}
if ( translet == null ) {
handle_basic ( out, stylesheet, doc ) ;
} else {
Log.write ( "PageBuilder.handle - translets: Class - "
+ transName ) ;
try {
// Get the XML input document and the
stylesheet.
Log.write ( "PageBuilder.handle - translets:
Constructors" ) ;
DOMImpl dom = new DOMImpl () ;
SAXParserFactory factory =
SAXParserFactory.newInstance();
SAXParser parser =
factory.newSAXParser();
XMLReader reader =
parser.getXMLReader();
DTDMonitor _dtdMonitor = new
DTDMonitor();
StringWriter writer = new StringWriter () ;
PrintWriter prWriter = new PrintWriter (
writer ) ;
DOMWriter domWriter = new DOMWriter
() ;
Log.write ( "PageBuilder.handle - translets:
Document Translation" ) ;
domWriter.write( doc, prWriter ) ;
String stringDOM = writer.toString() ;
StringReader strReader = new StringReader
( stringDOM ) ;
reader.setContentHandler( dom.getBuilder()
);
reader.parse( new InputSource (strReader)
);
DefaultSAXOutputHandler saxHandler =
new DefaultSAXOutputHandler(out);
TextOutput textOut = new
TextOutput(saxHandler) ;
textOut.setType ( TextOutput.HTML ) ;
textOut.setIndent( false ) ;
Log.write ( "PageBuilder.handle - translets:
Transforming" ) ;
translet.transform( dom, textOut );
Log.write ( "PageBuilder.handle - translets:
Done Transforming" ) ;
} catch ( SAXParseException se ) {
Log.write ( "PageBuilder.handle - translets:
Transform Error" ) ;
Log.write ( " " + se.getMessage() ) ;
Log.write ( " at " + se.getLineNumber()
+ ", " + se.getColumnNumber() ) ;
} catch ( Exception e ) {
Log.write ( "PageBuilder.handle - translets:
Transform Error" ) ;
Log.write ( " " + e.toString() ) ;
}
}
}
public void handle_basic (PrintWriter out, String stylesheet,
Document doc) {
basic XSL translation.....
}
}
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list