- From: Graham Klyne <GK@ninebynine.org>
- Date: Mon, 01 Dec 2003 09:44:21 +0000
- To: xml-dist-app@w3.org, Mark Nottingham <mark.nottingham@bea.com>
At 22:40 28/11/03 -0800, you wrote: >Please find attached an update to the MIFFY specification, as requested. >Specifically, the following sections have been adapted from the MTOM >specification: 1.3 A A.1 A.2. Hi Mark, I took a quick look at this. It looks pretty good to me. Some passing comments. [[ This specification uses a number of namespace prefixes throughout; they are listed below. Note that the choice of any namespace prefix is arbitrary and not semantically significant (see XML Infoset [XML InfoSet]). * xbinc - [TBD] * mime - [TBD] ]] I note that we are close to having the means to register a urn:ietf: sub-namespace for MIME header fields ... but you know that, of course! [[ Unlike the Infoset, the XQuery 1.0 and XPath 2.0 Data Model ([XML Query Data Model] ... hereinafter referred to as the "data model") provides a model that carries type and value space information for each element and attribute. Accordingly, MIFFY is expressed in terms of that data model. A precondition for use of this format is therefore availability of a data model for the structure to be serialized. Details of the correspondence between Infosets and data models are provided in A. Mapping between Infosets and Data Models. The data model introduces accessors such as dm:string-value, dm:type and dm:typed-value, which are used in this specification. ]] I found this was difficult to follow, appearing as it does early in the document. I think you're saying that it's important to know exactly what data is contained in the XML infoset that is to be optimized? It might be helpful to include a *simple* example up-front, to illustrate the parts that are subsequently described. [[ 2.1 MIME Multipart packaging MIFFY Documents MUST be valid MIME Multipart/Related documents, as specified by [rfc2387]. Ordering of MIME parts MUST NOT be considered significant to MIFFY processing or to the construction of the Target Infoset. ]] How do you determine the root element? IIRC, multipart/related convention is that the *first* sub-part is the root. (though I think there may also a mechanism -- I forget what -- for identifying some other). [Later: it's the multipart/related start parameter -- do you require its use?] [[ # Transform the replaced characters into binary data by processing them as base64-encoded data. ]] -- (sect 3.1) This is unclear to me. Is it the case that any optimization target is base64 encoded, and that this step is to remove that encoding? [[ # Otherwise, the MIME part's Content-Location header field MUST have a field-value identical to the URI in the value of the href attribute information item. ]] -- (sect 3.1) I'm slightly uneasy about this use of Content-location. Maybe it's OK, but I'd suggest checking. My concern is that the referencing location in the root infoset may have no way to distinguish between inclusion of the body part contained within the multipart/related and the entity that is obtained by dereferencing the URI on the web. [[ 4. Selecting Optimization Candidates Optimization in MIFFY is limited to the content of those element information items which contain characters that can be interpreted as base64-encoded data. Attributes and non-base64-compatible character data cannot be successfully optimized by MIFFY. ]] Nit: "successfully" here is redundant. I suggest dropping it. (I think this answers an earlier question; I suggest mentioning this restriction sooner.) [[ 5. Identifying MIFFY Documents [ TBD, depending on media type feedback ] ]] You asked me about this. Now that I see the context, here's a suggestion: Define a new media type that is applied to the multipart-related root element type, say application/miffy+xml, with a parameter that specifies the original root element content type. Default is application/xml. Thus: Content-type: application/miffy+xml;orig-type=application/xml ... being eqivalent to: Content-type: application/miffy+xml ... Possibly, the multipart/related start-info parameter might be used to convey the original content type: Content-type: multipart/related ;type=application/miffy+xml ;start="<foo@bar>" ;start-info="orig-type=application/xml" [[ A.2 Deserialization Infoset Mapping ... the goal of this feature, which is to use type information as a means of optimization, without affecting application semantics. ]] I think it would be good to mention this up-front. #g ------------ Graham Klyne For email: http://www.ninebynine.org/#Contact
Received on Monday, 1 December 2003 05:08:18 UTC