XML News from Monday, June 21, 2004

The W3C XML Protocol Working Group has published several working drafts releating to XML-binary Optimized Packaging (XOP). The XML-binary Optimized Packaging spec defines a new XOP Infoset (which is not an XML Infoset) based on a XOP document (which is not an XML document). A XOP document is a MIME multipart document containing a single XML document and lots of unparsed binary data in the other MIME parts. The XML document contains xop:Include elements that point to the binary data. The XOP document can be converted to an XML document by extracting the main XML document from the MIME document and then replacing all the xop:Include elements with the Base-64 encoded versions of the binary data they point to.

SOAP Resource Representation Header "describes the semantics and serialization of a SOAP header block for carrying resource representations in SOAP messages." This defines elements that hold a Base-64 encoded picture, MPEG file, plain text file, database, or just about anything else from a particular URL, and then stuffing that in a SOAP header. In practice, this would not actually be Base-64 encoded. The data would be replaced by a xop:Include element that contains a copy of the original binary data. This way a client could receive a collection of interlinked resources as a single SOAP message.

Assigning Media Types to Binary Data in XML attempts to make sure the MIME media types of all this binary data flying around doesn't get lost when the XOP document is transmitted, stored, or serialized. To this end, it defines a contentType attribute for indicating the media type of XML element content whose type is xs:base64Binary. It also defines an expectedMediaType for use in schema annotations to indicate what the contentType attribute may say.

A few other specs try to explain how all this fits together and justify thw work to skeptics. (The working group has up till now done a notoriously poor job of communicating what they're up to, thereby engendering much hostility from other groups and people that don't really disagree with them in any fundamental way.) A new FAQ list attempts to answer some frequently asked questions about all this, but it's rather poorly written and makes several obvious mistakes so it probably won't help matters any. The other specs in this family seem to be written more carefully and correctly. SOAP Message Transmission Optimization Mechanism describes how these different technologies work together, and SOAP Optimized Serialization Use Cases and Requirements explains just why the W3C XML Protocol Working Group thinks this is so important.

Comments on these drafts are due by June 29.


Brian Quinlan has posted version 0.9 of Pyana, a Python interface to the Xalan C XSLT processor. This release supports Xalan 1.8 and Xerces-C 2.5, implements basic tracing support, and removes transform to DOM support.