Xalan 2.3.1 should work with any JDK from 1.1.8 up. Note that JDK 1.4 comes with its own copy of Xalan, so you may not be running the version you think you are; that may explain the difference.
We can't tell you whether the behavior is a bug, or a fix to a bug, without seeing what you're trying to do. If you can simplify it down to a small testcase which reliably provokes the problem, you might want to post it into Bugzilla so we can look at it.
