The 0.9.5 release is a full Java implementation of the XBIS encoding format with adapters for SAX2 input and output. For a production release I'd like to include adapters for XMLPull and StAX parser APIs, as well as DOM, dom4j, and possibly XOM and JDOM document models. Most of the work for these adapters has already been done for the earlier XMLS project, but needs to be updated to work with the underlying XBIS code.

I believe XBIS currently supports roundtripping documents (text to XBIS, followed by XBIS to text) with all necessary information preserved so that the canonical form of the roundtripped document is identical to that of the original document. Testing this in depth is a time consuming process, especially since the testing can be effected by parser limitations. As a preliminary step, the code includes a test program for roundtripping documents and comparing the roundtripped document text to the text generated directly from a parse of the original document. This is the test.RoundTrip program (included in the /tests directory of the distribution, with source code under the /build/src directory). This program takes three command line arguments: The input file; the output file for the text generated directly from a parse; and the output file for the text generated after conversion to and from XBIS. When run, it writes the two versions of the output to the specified files (to allow direct inspection of the results) and also does a direct byte-by-byte comparison of the two versions. As with the performance test program, this program requires the SAX2 parser to be specified with a property definition on the Java command line of the form -Dorg.xml.sax.driver=com.bluecast.xml.Piccolo (for Piccolo), -Dorg.xml.sax.driver=org.apache.xerces.parsers.SAXParser (for Xerces), or the equivalent for other parsers.

For documents that don't use namespaces this program should generally give an exact match between the two output documents. This doesn't hold for documents with namespaces, because the namespaces are output as attributes in a different order from how they're reported by the parser. Note that this difference does not effect the canonical form of the documents, since XML treats attribute order as irrelevant. Documents with DTDs will also generally not be roundtripped with exact matches (because XBIS does not preserve internal entity definitions), but this is again an issue that is irrelevant to the canonical form of documents.

I (Dennis Sosnoski, XBIS designer and developer) provide Java XML and Web services consulting, training, and support through my company, Sosnoski Software Solutions, Inc. At present I don't have any commercial projects using XBIS, so work on it tends to take a low priority. If you're interested in using XBIS for a commercial project and would like to find out about support options, contact me directly via email or telephone (425.885.7197). You're also welcome to use it directly, of course, since it's open source with minimal restrictions.