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
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. |