W3C

Assigning Media Types to Binary Data in XML

W3C Working Draft 2 November 2004

This version:
http://www.w3.org/TR/2004/WD-xml-media-types-20041102
Latest version:
http://www.w3.org/TR/xml-media-types
Previous version:
http://www.w3.org/TR/2004/WD-xml-media-types-20040608
Editors:
Anish Karmarkar, Oracle Corporation
Ümit Yalçınalp, Oracle Corporation

Abstract

This document addresses the need to indicate the media type associated with binary element content in an XML document and the need to specify, in XML Schema, the expected media type(s) associated with binary element content. It is expected that the additional information about the media type will be used for optimizing the handling of binary data that is part of a Web services message.

Status of this Document

This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.

This is a W3C Last Call Working Draft. A diff-marked version against the previous version of this document is available. If the feedback is positive, the Working Groups plans to publish the final version of this specification as a W3C Working Group Note. Comments on this document are invited and are to be sent to the public public-ws-media-types@w3.org mailing list (public archive). Comments can be sent until 24 November 2004.

It has been produced jointly by the XML Protocol Working Group, and the Web Services Description Working Group, which are part of the Web Services Activity.

Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

This document has been produced under the 24 January 2002 Current Patent Practice as amended by the W3C Patent Policy Transition Procedure. Patent disclosures relevant to this specification may be found on the Web Services Description Working Group patent disclosure page and on the XML Protocol Working Group patent disclosure page. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) with respect to this specification should disclose the information in accordance with section 6 of the W3C Patent Policy.

Table of Contents

1 Introduction
    1.1 Notational Conventions
    1.2 Requirements
2 Attributes for Declaring Media Types
    2.1 contentType attribute
    2.2 expectedMediaType attribute
3 Declaring media types for binary data
    3.1 Role of expectedMediaType Schema annotation attribute
4 Examples
    4.1 Binary data with known media type
    4.2 Binary data with preferred media type
5 References

Appendices

A Acknowledgements
B Appendix Schema


1 Introduction

Data sent and received over the Web typically uses the MIME media type defined by [IETF RFC 2046], as the type system. For example, "image/jpeg", "application/pdf". There is a need to indicate the media type of the XML element content, for example, in messages sent and received by Web services. There is also a need to express the media type information using [XML Schema: Datatypes], which is the type system used by [WSDL 2.0 Part 1]. This would allow XML-based applications, such as Web services, to utilize the widely deployed and supported MIME media type infrastructure.

[XOP] and [MTOM] enables one to serialize binary content (element content that is in a canonical lexical representation of the xs:base64Binary type) in an optimized way using MIME packaging. There is a desire to specify the media type information of such binary element content in a standard way in the [XML Information Set] and not just in the optimized serialization of that Infoset.

This document specifies:

The XML Schema annotation, xmlmime:expectedMediaType, specifies the expected range of values for the xmlmime:contentType attribute and the expected range of media types for the binary element content.

Note that the use of this mechanism, in particular the contentType attribute, does not require the implementation, in whole or in part, of XML Schema.

1.1 Notational Conventions

The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [IETF RFC 2119].

This specification uses properties from the XML Information Set, see [XML Information Set]. Such properties are denoted by square brackets, e.g. [namespace name].

This specification uses namespace prefixes that are listed in Table 1. Note that the choice of any namespace prefix is arbitrary and not semantically significant (see [XML Information Set]).

Table 1. Prefixes and Namespaces used in this specification
Prefix Namespace Definition
xmlmime http://www.w3.org/2004/11/xmlmime Defined by this specification
wsdl http://www.w3.org/2004/03/wsdl Defined by the WSDL 2.0 specification. A normative XML Schema [XML Schema: Structures], [XML Schema: Datatypes] document for the http://www.w3.org/2004/03/wsdl namespace can be found at http://www.w3.org/2004/03/wsdl.
xs "http://www.w3.org/2001/XMLSchema" Defined in the W3C XML Schema specification [XML Schema: Structures], [XML Schema: Datatypes].

Namespace names of the general form "http://example.org/..." and "http://example.com/..." represent application or context-dependent URIs [IETF RFC 2396].

1.2 Requirements

This section describes the set of requirements that this document addresses.

  1. Define how to indicate the media type of an XML element content whose type is xs:base64Binary or xs:hexBinary. This is meta-data that may be, but not required to, used by tools to infer the specific media type of binary data.

  2. Define how to indicate the expected media type(s) of XML element content whose type is xs:base64Binary or xs:hexBinary in XML Schema. This information is needed to define the set of media types that a binary data may have. For example, a Web services application may be willing to indicate that the binary data represents an image, but leaves it to a document to further specify whether it is "jpeg", "gif", etc. This meta-data is not required to be present.

  3. Define the acceptable format of media type values.

  4. Define the relationship between the expected and the actual value of the media types declared for binary data in XML documents.

2 Attributes for Declaring Media Types

This section defines two global attribute information items for declaring the media type of binary data in XML Schema to address the requirements (1) and (2) above. Their usage is addressed in Section 3 Declaring media types for binary data.

2.1 contentType attribute

The contentType attribute information item has the following Infoset properties:

  • A [local name] of contentType.

  • A [namespace name] of "http://www.w3.org/2004/11/xmlmime".

The type of the contentType attribute information item is xs:string.

2.2 expectedMediaType attribute

The expectedMediaType attribute information item has the following Infoset properties:

  • A [local name] of expectedMediaType.

  • A [namespace name] of http://www.w3.org/2004/11/xmlmime.

The type of the expectedMediaType attribute information item is xs:string.

The value and the meaning of the expectedMediaType attribute is similar to the value allowed for the 'Accept' header defined by HTTP 1.1 specification, Section 14.1 [IETF RFC 2616] and MUST follow the production rules defined in that section. The 'q' parameter defined by HTTP 1.1 specification, Section 3.9 [IETF RFC 2616] is allowed, but other accept-extensions are not allowed.

Editorial note:  
The 'accept-extensions' of the HTTP 'Accept' header are not allowed in the 'expectedMediaType' attribute value. The WSD WG would like to solicit feedback on this.

The expectedMediaType attribute is intended to be used as part of XML Schema annotation for a binary element information item declaration (see 3 Declaring media types for binary data).

3 Declaring media types for binary data

Documents that want to specify additional media type information for binary data SHOULD denote this by using a binary element information item. A binary element information item is an element information item defined with the following additional constraints.

The [normalized value] of the contentType attribute information item MUST be the name of a IANA media type token, e.g., "image/png", "text/xml; charset=utf-16" and indicates the media type of the [owner element].

The contentType attribute information item allows Web services applications to optimize the handling of the binary data defined by a binary element information item and should be considered as meta-data. The presence of the contentType attribute does not changes the value of the element content.

For authoring convenience, two types xmlmime:base64Binary and xmlmime:hexBinary are defined in B Appendix Schema

Example 1: Element with binary content and contentType attribute
<?xml version="1.0" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="http://example.com/ct-required"
           xmlns:xmlmime="http://www.w3.org/2004/11/xmlmime"
           targetNamespace="http://example.com/ct-required">

    <xs:import namespace="http://www.w3.org/2004/11/xmlmime"
            schemaLocation="http://www.w3.org/2004/11/xmlmime"/>

    <!-- This element has binary content and requires the contentType
         attribute that indicates the media type of the binary content -->
    <xs:element name="MyBinaryData"/>
      <xs:complexType>
        <xs:simpleContent>
          <xs:restriction base="xs:base64Binary" >
            <xs:attribute ref="xmlmime:contentType" use="required"/>
          </xs:restriction>
        </xs:simpleContent>
      </xs:complexType>
    </xs:element>

</xs:schema>

        

3.1 Role of expectedMediaType Schema annotation attribute

The expectedMediaType attribute is used for annotating XML Schema to indicate the expected range of media types of the binary element content and the expected range of values for contentType attribute.

The value of the contentType attribute, if present, SHOULD be within the range specified by the expectedMediaType annotation attribute, if specified in the schema. When the expectedMediaType annotation attribute has a wildcard ("*") or a list of acceptable media types, the schema SHOULD require the contentType attribute to be present.

Applications that need to specify expected media types SHOULD use the schema annotation to declare the range of expected values. expectedMediaType annotation attribute MAY be used in conjunction with the declaration of binary element information items or with complex type definitions that are derived from xs:base64Binary or xs:hexBinary in XML Schema. If the expectedMediaType annotation attribute is used in both the binary element information item declaration as well as definition of the complex type which the binary element information item belongs to, then the expected range of values defined for the binary element information item MUST be a subset of the expected range of values defined for the complex type.

The example below consists of a type definition, PictureType, and an element declaration, Picture. The xmlmime:contentType attribute is required to be present and specifies the media type of the binary content. The schema annotation attribute xmlmime:expectedMediaType specifies that the media type of the binary content is 'image', but the subtype name is unknown.

Example 2: Schema declaring an element with binary content and expected media type of "image/*"
<?xml version="1.0" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="http://example.com/wildcard"
           xmlns:xmlmime="http://www.w3.org/2004/11/xmlmime"
           targetNamespace="http://example.com/wildcard">

    <xs:import namespace="http://www.w3.org/2004/11/xmlmime"
            schemaLocation="http://www.w3.org/2004/11/xmlmime"/>


    <xs:complexType name="PictureType">
       <xs:simpleContent>
           <xs:restriction base="xmlmime:base64Binary" >
               <xs:attribute ref="xmlmime:contentType" use="required" />
           </xs:restriction>
       </xs:simpleContent>
    </xs:complexType>

    <!-- This element designates the range of values 
         that the element definition will accept    -->
    <xs:element name="Picture" type="tns:PictureType" 
            xmlmime:expectedMediaType="image/*"/> 
    </xs:element>

</xs:schema>

        

The example document instance below conforms to the element declaration of Picture and specifies that the binary content is of type "image/png".

Example 3: Document instance containing element with binary content type "image/png"
<?xml version="1.0" ?>
<Picture xmlns="http://example.com/wildcard"
           xmlns:xmlmime="http://www.w3.org/2004/11/xmlmime"
           xmlmime:contentType="image/png">/aWKKapGGyQ=</Picture>
        

4 Examples

4.1 Binary data with known media type

The example below consists of a binary element whose media type is known in advance to be "image/jpeg".

In this example, the application fixes the media type by declaring it with an annotation in conjunction with the complex type definition.

Example 4: Element with binary content and known media type
<?xml version="1.0" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="http://example.com/know-type"
           xmlns:xmlmime="http://www.w3.org/2004/11/xmlmime"
           targetNamespace="http://example.com/know-type">

    <xs:import namespace="http://www.w3.org/2004/11/xmlmime"
            schemaLocation="http://www.w3.org/2004/11/xmlmime"/>


    <xs:complexType name="JPEGPictureType" 
            type="xs:base64Binary"
            xmlmime:expectedMediaType="image/jpeg"/> 

    <xs:element name="JPEGPicture" type="tns:JpegPictureType"/>

</xs:schema>

        

4.2 Binary data with preferred media type

This example illustrates that binary data with media type 'image/jpeg' is preferred but binary data with media type of 'image/tiff' is also allowed (with a lower preference).

Example 5: Element with binary content and preferred media type
<?xml version="1.0" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="http://example.com/preferred-type"
           xmlns:xmlmime="http://www.w3.org/2004/11/xmlmime"
           targetNamespace="http://example.com/preferred-type">

    <xs:import namespace="http://www.w3.org/2004/11/xmlmime"
        schemaLocation="http://www.w3.org/2004/11/xmlmime"/>


    <xs:complexType name="JPEGPreferredPictureType">
        <xs:simpleContent>
            <xs:restriction base="xmlmime:base64Binary" >
                <xs:attribute ref="xmlmime:contentType" use="required" />
            </xs:restriction>
        </xs:simpleContent>
    </xs:complexType>

    <xs:element name="JPEGPeferredPicture" type="tns:JPEGPreferredPictureType"
            xmlmime:expectedMediaType="image/jpeg;q=1.0, image/tiff;q=0.8"/> 

</xs:schema>

        
Editorial note:  
This document addresses the requirements in Issue 443 of the XML Protocol WG issues list. If this document is changed in the future in such a way that the requirements in issue 443 are not addressed, then issue 443 may be reopened by the XML Protocol WG.

5 References

XML Schema: Structures
XML Schema Part 1: Structures, H. Thompson, D. Beech, M. Maloney, and N. Mendelsohn, Editors. World Wide Web Consortium, 2 May 2001. (See http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/.)
XML Schema: Datatypes
XML Schema Part 2: Datatypes, P. Byron and A. Malhotra, Editors. World Wide Web Consortium, 2 May 2001. (See http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/.)
IETF RFC 2396
Uniform Resource Identifiers (URI): Generic Syntax, T. Berners-Lee, R. Fielding, L. Masinter, Authors. Internet Engineering Task Force, August 1998. (See http://www.ietf.org/rfc/rfc2396.txt.)
IETF RFC 2046
RFC 2046 - Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types, N. Freed, N. Borenstein, November 1996. (See http://www.faqs.org/rfcs/rfc2046.html.)
IETF RFC 2616
Hypertext Transfer Protocol--HTTP 1.1, R. Fieldingm, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee, Authors, W3C/MIT, June 1999. (See http://www.w3.org/Protocols/rfc2616/rfc2616.html.)
IETF RFC 2119
Key words for use in RFCs to Indicate Requirement Levels, S. Bradner, Author. Internet Engineering Task Force, June 1999. (See http://www.ietf.org/rfc/rfc2119.txt.)
XML Information Set
XML Information Set, J. Cowan and R. Tobin, Editors. World Wide Web Consortium, 24 October 2001. (See http://www.w3.org/TR/2001/REC-xml-infoset-20011024/.)
WSDL 2.0 Part 1
Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language. Roberto Chinnici, Martin Gudgin, Jean-Jacques Moreau, Jeffrey Schlimmer, Sanjiva Weerawarana, World Wide Web Consortium, W3C Working Draft 26 March 2004 (See http://www.w3.org/TR/2004/WD-wsdl20-20040326/.)
XOP
XML-binary Optimized Packaging, Noah Mendelsohn, Mark Nottingham, Herve Ruellan, W3C Working Draft 09 February 2004 (See http://www.w3.org/TR/2004/WD-xop10-20040209/.)
MTOM
SOAP Message Transmission Optimization Mechanism Noah Mendelsohn, Mark Nottingham, Herve Ruellan, W3C Working Draft 09 February 2004 (See http://www.w3.org/TR/2004/WD-soap12-mtom-20040209/.)

A Acknowledgements

This document is developed by the participants of the joint media types task force formed by Web Services Description and XML Protocol Working Groups. Participants of the taskforce, specifically Martin Gudgin, and Mark Nottingham are gratefully acknowledged.

B Appendix Schema

<?xml version="1.0" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:xmlmime="http://www.w3.org/2004/11/xmlmime"
           targetNamespace="http://www.w3.org/2004/11/xmlmime" >


<xs:attribute name="contentType" type="xs:string" />

<xs:attribute name="expectedMediaType" type="xs:string" />

<xs:complexType name="base64Binary" >
    <xs:simpleContent>
        <xs:extension base="xs:base64Binary" >
            <xs:attribute ref="xmlmime:contentType" />
        </xs:extension>
    </xs:simpleContent>
</xs:complexType>

<xs:complexType name="hexBinary" >
    <xs:simpleContent>
        <xs:extension base="xs:hexBinary" >
            <xs:attribute ref="xmlmime:contentType" />
        </xs:extension>
    </xs:simpleContent>
</xs:complexType>

</xs:schema>