- From: Marc Hadley <Marc.Hadley@Sun.COM>
- Date: Wed, 12 Nov 2003 15:47:14 -0500
- To: "Xml-Dist-App@W3. Org" <xml-dist-app@w3.org>
- Message-id: <6595ACEA-1551-11D8-A149-0003937568DC@sun.com>
Here's a proposal for an extension to the current MTOM formulation to offer better support for multiple inclusion of the same data. The proposed extension has the following properties: - Preserves MTOM semantics of attachment inclusion in SOAP message infoset - Supports existing 'Include' and 'Representation' semantics, use of extension is optional - Supports multiple inclusion of attachments without replication of data in the serialized form - Multiply included data replicated in message infoset, signatures over elements containing such data include attachment data rather than a reference to the data as woud be the case when using a Representation approach. Infoset Form ============ This section shows via an example the infoset of a message after the binding has performed the MTOM deserialization (described later). XML 1.0 is used as the most convenient syntax to express the infoset but this should be considered a purely abtract model of the message content. <env:Envelope xmlns:env="..." xmlns:mtom="..."> <env:Body> <app:Stuff xmlns:app="..."> <app:Thing1 mtom:ContentID="someURI"> some base64 text </app:Thing1> <app:Thing2 mtom:ContentID="someURI"> some base64 text </app:Thing2> <app:Thing3> some base64 text </app:Thing3> </app:Stuff> </env:Body> </env:Envelope> Note that the same base64 data is included as the content of the Thing1 and Thing2 EIIs, this is indicated by the value of the mtom:ContentID attribute being the same for both. Thing3 has no mtom:ContentID indicating that the optional multi-reference extension is not being used for the content of this EII. Optimized (MIME) Wire Form ========================== This section shows via an example the serialized form of a message using the MIME based MTOM. Content-type: multipart/related; boundary="someBoundaryString" --someBoundaryString Content-Type: application/soap+xml <env:Envelope xmlns:env="..." xmlns:mtom="..."> <env:Body> <app:Stuff xmlns:app="..."> <app:Thing1 mtom:ContentID="someURI"> <mtom:Include href="someURI"> <!-- depending on how mtom:ContentID is defined, the Include/@href may be redundant --> </app:Thing1> <app:Thing2 mtom:ContentID="someURI"> <mtom:Include href="someURI"> </app:Thing2> <app:Thing3> <mtom:Include href="someOtherURI"> </app:Thing3> </app:Stuff> </env:Body> </env:Envelope> --someBoundaryString Content-Type: image/png Content-ID: someURI binary picture data --someBoundaryString Content-Type: image/png Content-ID: someOtherURI binary picture data --someBoundaryString-- Schema Types ============ <complexType name="OptimizationCandidate"> <simpleContent> <extension base="xsd:base64Binary"> <attribute name="ContentID" type="xsd:anyURI"/> <attribute name="MediaType" type="xsd:string"/> <!-- other attributes we define --> </extension> </simpleContent> </complexType> Terminology =========== The following terminology is used in the description of the serialization and deserialization algorithms: Optimization candidate: EII of type xsd:base64 or mtom:OptimizationCandidate. Matching MIME part: MIME part whose content-id and/or content-location headers (TBD specify exact matching criteria) match an OptimizationCandidate/@ContentID. Content: base64Binary child CIIs of an optimization candidate (excludes AII children) Infoset to Wire Serialization ============================= For each optimization candidate in the SOAP message - if no matching MIME part exists then create a matching MIME part from the optimization candidate's decoded content and AIIs - replace the content of the optimization candidate with a child mtom:Include EII Wire to Infoset Deserialization =============================== For each mtom:Include EII - replace the mtom:Include EII with base64 encoded attachment content -- Marc Hadley <marc.hadley@sun.com> Web Technologies and Standards, Sun Microsystems.
Attachments
- application/pkcs7-signature attachment: smime.p7s
Received on Wednesday, 12 November 2003 15:47:19 UTC