It's part of the specification of the SAX ContentHandler interface that the parser can split the character content over a number of calls. This is designed to minimize the need to move character data between buffers. If you need the data in a single chunk you have to assemble it yourself, processing the buffer when you get to the next start tag, end tag, comment, or PI.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference