Sunday, December 28, 2003

Saxon and resolver.jar

I've been doing some work which requires me to have local copies of dtd files due to limited connectivity. I've been using the Saxon XSLT processor as part of this work and been struggling to get catalog managers working correctly.

Richard Dallaway has an excellent document DTDs and XML Catalogs which provides many helpful clues as to how to proceed with getting the catalog system up and running for parsing and xsl-t.

The following is my addition for anyone trying to get this working with the command line version of Saxon :


java -cp .;./resolver.jar;./saxon7.jar net.sf.saxon.Transform \
-r com.sun.resolver.tools.CatalogResolver\
-x com.sun.resolver.tools.ResolvingXMLReader \
-x com.sun.resolver.tools.ResolvingXMLReader \
mySource.xml myTransform.xsl


I was stuck for a while because I was using only the -r option, this appears to initially work but you need to also specify the -x and -y options to ensure that the SAX parsers used by the transformation engine are also catalog aware.


The next thing to get working was the Transformer within the code itself. I'd had no success by just setting the URIResolver on the TransformerFactory, but given that the above worked it was just a quick dive into the Saxon source to find the required extra params:


transformerFactory.setURIResolver(new CatalogResolver());

transformerFactory.setAttribute("http://saxon.sf.net/feature/sourceParserClass","com.sun.resolver.tools.ResolvingXMLReader");

transformerFactory.setAttribute("http://saxon.sf.net/feature/styleParserClass","com.sun.resolver.tools.ResolvingXMLReader");


This solved my remaining problems and now I can deploy my application without having to ensure the public dtd host is always reachable.



Wednesday, December 24, 2003

Jira and Cookies

My evaluation of Jira is now complete and we have bought a copy for the project I am working on at the moment. It is a great issue tracker and has been very easy to integrate into our application. If you are involved in a commercial project that needs a strong issue tracking mechanism then for 1000USD it really isn't worth trying to write the functionality yourself.


It is easy to plug in your own authentication mechanisms (we had an existing EJB authenticator), but I do have one word of warning. Make sure that you take a look at the cookie handling that Seraph uses under the hood. You can easily replace the mechanisms that it uses, and you really should if the application you are using is at all sensitive.

Java Update/P900

Fired up my browser yesterday morning for the first time in a couple of days and found that the plugin is now able to update itself. I got a message in the toolbar telling me that an update was available and a few minutes later I was running the latest plugin version. All in all a very nice system when I'm running standalone, I'm not sure how happy I'd be if a major step was taken (to JRE 1.5 for example) if I was running a series of WebStart apps in an enterprise........


In other news, Christmas came early for me in the form of a new phone. A Sony Ericsson: P900 running MIDP2.0 . It replaces both my T68 which kept going through phases of not being able to make calls for 2-3 hours a day and my Zaurus which whilst fantastic managed to get to a state where the battery will not last a day, and leaving it for two days goes flat enough to loose data.


I've been playing with the P900 for a week, and I'm very much in love. Simple things like the "TODO" lists are really handy. It synchronises with tools like Outlook straight from the box, but I'm going to have to do a little work to get it talking properly to Evolution via SyncML. I will post further when I've cracked it.

Thursday, December 04, 2003

Mozilla Firebird and Adobe SVG plugin

Some of the work I am doing involves using svg graphics. Until today I've been trapped using IE rather than my ideal browser Firebird for viewing them.

However today i found that if you install Adobe SVG Beta 6 and then copy the NPSVG6.dll and NPSVG6.zip files into Firebird/plugins. Restart Firebird, and you should find the plugin working!

NB. This doesn't work with version 3.0 for me, you need to use the version 6 beta.