<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' href="xmlspec.xsl"?>
<!DOCTYPE spec PUBLIC "-//W3C//DTD Specification V2.1//EN" "xmlspec.dtd"[
<!ENTITY wgmb SYSTEM "http://www.w3.org/2000/xp/Group/wgmb.txt">
<!ENTITY prevwgmb SYSTEM "http://www.w3.org/2000/xp/Group/prevwgmb.txt">
<!ENTITY % entities SYSTEM "entitieswd.dtd" >
<!ENTITY name-part0 "SOAP Version 1.2 Part 0: Primer (Second Edition)">
<!ENTITY name-part1 "SOAP Version 1.2 Part 1: Messaging Framework (Second Edition)">
<!ENTITY name-part2 "SOAP Version 1.2 Part 2: Adjuncts (Second Edition)">
<!ENTITY name-testcollection "SOAP Version 1.2 Specification Assertions and Test Collection (Second Edition)">
<!ENTITY mediatype "http://www.w3.org/TR/2005/NOTE-xml-media-types-20050504/" >
%entities;
]>
<spec w3c-doctype="per" role="editors-copy">

  <!-- ****************************************************** -->
  <!-- *************** Header of the document *************** -->
  <!-- ****************************************************** -->

  <header>
    <title>XML-binary Optimized Packaging</title>
    <w3c-doctype>&status;</w3c-doctype>
    <pubdate>
      <day><!-- PUBONLY &xopdraft.day; --> $Date: 2007/07/11 20:12:02 $</day>
      <month><!-- PUBONLY &xopdraft.month; --></month>
      <year><!-- PUBONLY &xopdraft.year; --></year>
    </pubdate>
<!--
    <publoc>
      <loc xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
	xlink:show="replace" xlink:actuate="onRequest"
	href="&dated-xop;">&dated-xop;</loc> 
    </publoc>
-->
    <prevlocs>
      <loc xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
	xlink:show="replace" xlink:actuate="onRequest"
	href="http://www.w3.org/TR/2005/REC-xop10-20050125/">
	http://www.w3.org/TR/2005/REC-xop10-20050125/</loc>
    </prevlocs>
    <latestloc>
      <loc xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
	xlink:show="replace" xlink:actuate="onRequest"
	href="http://www.w3.org/TR/&shortname-xop;/">
	http://www.w3.org/TR/&shortname-xop;/</loc>
    </latestloc>
    <authlist>
      <author>
        <name>Martin Gudgin</name>
        <affiliation>Microsoft</affiliation>
      </author>
      <author>
        <name>Noah Mendelsohn</name>
        <affiliation>IBM</affiliation>
      </author>
      <author>
	<name>Mark Nottingham</name>
	<affiliation>BEA</affiliation>
      </author>
      <author>
	<name>Hervé Ruellan</name>
	<affiliation>Canon</affiliation>
      </author>
    </authlist>
	
    <abstract>
      <p>
	This document defines the XML-binary Optimized Packaging (XOP)
	convention, a means of more efficiently serializing XML Infosets that
	have certain types of content.
      </p>
    </abstract>

<status>

</status>

    <langusage>
      <language id="en">English</language>
    </langusage>
    <revisiondesc>
      <p>Last Modified:"Editors Copy $Date: 2007/07/11 20:12:02 $</p>
    </revisiondesc>

  </header>

  <!-- ****************************************************** -->
  <!-- **************** Body of the document **************** -->
  <!-- ****************************************************** -->

  <body>

    <!-- ==================================================== -->
    <!-- =================== Introduction =================== -->
    <!-- ==================================================== -->
    <div1 id="introduction">
      <head>Introduction</head>

      <p>
	This specification defines the XML-binary Optimized Packaging (XOP)
	convention, a means of more efficiently serializing XML Infosets (see
	<bibref ref="XMLInfoSet"/>) that have certain types of content.
      </p>

      <p>
	A XOP package is created by placing a serialization of the XML Infoset
	inside of an extensible packaging format (such a MIME
	Multipart/Related, see <bibref ref="RFC2387"/>). Then, selected
	portions of its content that are base64-encoded binary data are extracted and 
	re-encoded (i.e., the data is decoded from base64) and placed into the
	package. The locations of those selected portions are marked in the XML
	with a special element that links to the packaged data using URIs.
      </p>

      <p>
	In a number of important XOP applications, binary data need never be
	encoded in base64 form. If the data to be included is already available
	as a binary octet stream, then either an application or other software
	acting on its behalf can directly copy that data into a XOP package, at
	the same time preparing suitable linking elements for use in the root
	part; when parsing a XOP package, the binary data can be made available
	directly to applications, or, if appropriate, the base64 binary
	character representation can be computed from the binary data.
      </p>

      <p>
	However, at the conceptual level, this binary data can be thought of as
	being base64-encoded in the XML Document. As this conceptual form might
	be needed during some processing of the XML Document (e.g., for signing
	the XML document), it is necessary to have a one to one correspondence
	between XML Infosets and XOP Packages. Therefore, the conceptual
	representation of such binary data is as if it were base64-encoded,
	using the canonical lexical form of XML Schema <att>base64Binary</att>
	datatype (see <bibref ref="XMLSchemaP2"/> <xspecref
	  href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#base64Binary">3.2.16
	  base64Binary</xspecref>). In the reverse direction, XOP is capable of
	optimizing only base64-encoded Infoset data that is in the canonical
	lexical form.
      </p>

      <p>
	Only element content can be optimized; attributes,
	non-base64-compatible character data, and data not in the canonical
	representation of the <att>base64Binary</att> datatype cannot be
	successfully optimized by XOP.
      </p>

      <p>
	The remainder of this specification is organized in the following
	fashion:
      </p>

      <ulist>
	<item>
	  <p>
	    Section 2 describes the XOP Infoset, which preserves the
	    non-optimized content and structure of the original XML Infoset.
	  </p>
	</item>

	<item>
	  <p>
	    Section 3 specifies the XOP processing model.
	  </p>
	</item>

	<item>
	  <p>
	    Section 4 of this specification describes the form of the XOP
	    Package.
	  </p>
	</item>

	<item>
	  <p>
	    Section 5 describes how XOP Documents are identified.
	  </p>
	</item>

	<item>
	  <p>
	    Section 6 explores the security considerations of using the XOP
	    convention.
	  </p>
	</item>
      </ulist>

      <!--                                                    -->
      <!-- __________________ Terminology ___________________ -->
      <!--                                                    -->
      <div2 id="terminology">
	<head>Terminology</head>


	<p>
	  This specification uses terminology from the XML Infoset (see <bibref
	    ref="XMLInfoSet"/>) when discussing XML content and structure. This
	  is only a convention for clear specification of XOP behavior.
	</p>

	<p>
	  The following terms are used in this specification:
	</p>

	<ulist>
	  <item>
	    <kw>Original XML Infoset</kw> - An XML Infoset to be optimized.
	  </item>
	  <item>
	    <kw>Optimized Content</kw> - Content which has been removed from
	    the XML Infoset.
	  </item>
	  <item>
	    <kw>XOP Infoset</kw> - The Original Infoset with
	    any Optimized Content removed and replaced by
	    <att>xop:Include</att><span> </span><emph>element information items</emph>.
	  </item>
	  <item>
	    <kw>XOP Document</kw> - A serialization of the XOP Infoset using
	    any W3C recommendation-level version of XML.
	  </item>
	  <item>
	    <kw>XOP Package</kw> - A package containing the XOP
	    Document and any Optimized Content. As a whole, the XOP Package
	    is an alternate serialization of the Original Infoset.
	  </item>
	  <item>
	    <kw>Reconstituted XML Infoset</kw> - An XML Infoset that has been
	    constructed from the parts of a XOP Package.
	  </item>
	</ulist>

	<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
	  id="xoparchitecture" source="XOP-architecture.png" xlink:show="embed"
	  xlink:actuate="onLoad" alt="Architecture of the XOP framework">
	  <caption>Architecture of the XOP framework</caption>
	</graphic>

      </div2>


      <!--                                                    -->
      <!-- ____________________ Example _____________________ -->
      <!--                                                    -->
      <div2 id="example">
	<head>Example</head>

	<p>
	  <specref ref="xml_infoset_soap_sample"/> 1 shows an XML Infoset prior to XOP
	  processing. <specref ref="xop_package_soap_sample"/> 2 shows the same
	  Infoset, serialized using the XOP format in a MIME Multipart/Related
	  package. The base64-encoded content of the <att>m:photo</att> and
	  <att>m:sig</att> elements have been replaced by a
	  <att>xop:Include</att> element, while
	  the binary octets have been serialized in separate MIME parts. Note
	  that those examples use <bibref ref="xmlmime"/> to identify the
	  media type of the content of the <att>m:photo</att> and
	  <att>m:sig</att> elements. Note also that the sample base64 data is smaller 
	  than would be typical and the binary octets are not shown; in practice, the 
	  optimized form is likely to be much smaller than the original.
	</p>

	<example id="xml_infoset_soap_sample">
	  <head>XML Infoset prior to XOP processing (Example 1, SOAP)</head>
	  <eg xml:space="preserve">&lt;soap:Envelope
    xmlns:soap='http://www.w3.org/2003/05/soap-envelope' 
    xmlns:xmime='http://www.w3.org/2005/05/xmlmime'&gt;
  &lt;soap:Body&gt;
    &lt;m:data xmlns:m='http://example.org/stuff'&gt;
      &lt;m:photo 
  xmime:contentType='image/png'&gt;/aWKKapGGyQ=&lt;/m:photo&gt;
      &lt;m:sig 
  xmime:contentType='application/pkcs7-signature'&gt;Faa7vROi2VQ=&lt;/m:sig&gt;
    &lt;/m:data&gt;
  &lt;/soap:Body&gt;
&lt;/soap:Envelope&gt;</eg>
	</example>

	<example id="xop_package_soap_sample">
	  <head>XML Infoset serialized as a XOP package (Example 2, SOAP)</head>
	  <eg xml:space="preserve">MIME-Version: 1.0
Content-Type: Multipart/Related;boundary=MIME_boundary;
    type="application/xop+xml";
    start="&lt;mymessage.xml@example.org&gt;";
    start-info="application/soap+xml; action=\"http://www.example.com/ProcessData\""
Content-Description: A SOAP message with my pic and sig in it

--MIME_boundary
Content-Type: application/xop+xml; 
    charset=UTF-8; 
    type="application/soap+xml; action=\"http://www.example.com/ProcessData\""
Content-Transfer-Encoding: 8bit
Content-ID: &lt;mymessage.xml@example.org&gt;

&lt;soap:Envelope
    xmlns:soap='http://www.w3.org/2003/05/soap-envelope'
    xmlns:xmime='http://www.w3.org/2005/05/xmlmime'&gt;
  &lt;soap:Body&gt;
    &lt;m:data xmlns:m='http://example.org/stuff'&gt;
      &lt;m:photo 
  xmime:contentType='image/png'&gt;&lt;xop:Include 
    xmlns:xop='http://www.w3.org/2004/08/xop/include' 
    href='cid:mypicture.png@example.org'/&gt;&lt;/m:photo&gt;
      &lt;m:sig 
  xmime:contentType='application/pkcs7-signature'&gt;&lt;xop:Include 
    xmlns:xop='http://www.w3.org/2004/08/xop/include' 
    href='cid:mysignature.hsh@example.org'/&gt;&lt;/m:sig&gt;
    &lt;/m:data&gt;
  &lt;/soap:Body&gt;
&lt;/soap:Envelope&gt;

--MIME_boundary
Content-Type: image/png
Content-Transfer-Encoding: binary
Content-ID: &lt;mypicture.png@example.org&gt;

// binary octets for png

--MIME_boundary
Content-Type: application/pkcs7-signature
Content-Transfer-Encoding: binary
Content-ID: &lt;mysignature.hsh@example.org&gt;

// binary octets for signature

--MIME_boundary--</eg>
	</example>

	<p>
	  <specref ref="xml_infoset_xml_sample"/> 3 shows an XML Infoset prior to XOP
	  processing. <specref ref="xop_package_svg_sample"/> 4 shows the same
	  Infoset, serialized using the XOP format in a MIME Multipart/Related
	  package. The base64-encoded content of the <att>m:photo</att> and
	  <att>m:sig</att> elements have been replaced by a
	  <att>xop:Include</att> element, while
	  the binary octets have been serialized in separate MIME parts. Note also 
	  that the sample base64 data is smaller than would be typical and the 
	  binary octets are not shown; in practice, the optimized form is 
	  likely to be much smaller than the original.
	</p>

	<example id="xml_infoset_xml_sample">
	  <head>XML Infoset prior to XOP processing (Example 3, non-SOAP)</head>
	  <eg xml:space="preserve">&lt;m:data xmlns:m='http://example.org/stuff'&gt;
  &lt;m:photo&gt;/aWKKapGGyQ=&lt;/m:photo&gt;
  &lt;m:sig&gt;Faa7vROi2VQ=&lt;/m:sig&gt;
&lt;/m:data&gt;</eg>
	</example>

	<example id="xop_package_svg_sample">
	  <head>XML Infoset serialized as a XOP package (Example 4, non-SOAP)</head>
	  <eg xml:space="preserve">MIME-Version: 1.0
Content-Type: Multipart/Related;boundary=MIME_boundary;
    type="application/xop+xml";
    start="&lt;mymessage.xml@example.org&gt;";
    start-info="text/xml"
Content-Description: An XML document with my pic and sig in it

--MIME_boundary
Content-Type: application/xop+xml; 
    charset=UTF-8; 
    type="text/xml"
Content-Transfer-Encoding: 8bit
Content-ID: &lt;mymessage.xml@example.org&gt;

&lt;m:data xmlns:m='http://example.org/stuff'&gt;
  &lt;m:photo&gt;&lt;xop:Include 
  xmlns:xop='http://www.w3.org/2004/08/xop/include' 
  href='cid:mypicture.png@example.org'/&gt;&lt;/m:photo&gt;
  &lt;m:sig&gt;&lt;xop:Include 
  xmlns:xop='http://www.w3.org/2004/08/xop/include' 
  href='cid:mysignature.hsh@example.org'/&gt;&lt;/m:sig&gt;
&lt;/m:data&gt;

--MIME_boundary
Content-Type: image/png
Content-Transfer-Encoding: binary
Content-ID: &lt;mypicture.png@example.org&gt;

// binary octets for png

--MIME_boundary
Content-Type: application/pkcs7-signature
Content-Transfer-Encoding: binary
Content-ID: &lt;mysignature.hsh@example.org&gt;

// binary octets for signature

--MIME_boundary--</eg>
	</example>

      </div2>

      <!--                                                    -->
      <!-- _____________ Notational Conventions _____________ -->
      <!--                                                    -->
      <div2 id="notational_conventions">
	<head>Notational Conventions</head>

	<p>
	  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 RFC 2119 <bibref
	    ref="RFC2119"/>.
	</p>

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

	<table border="1" id="tabnsprefixes">
	  <caption>Prefixes and Namespaces used in this
	    specification.</caption>
	  <tbody>
	    <tr>
	      <th rowspan='2'>Prefix</th>
	      <th>Namespace</th>
		</tr>
		<tr>
	      <th>Notes</th>
	    </tr>

	    <tr>
	      <td rowspan='2'>xop</td>
	      <td><attval>http://www.w3.org/2004/08/xop/include</attval></td>
		</tr>
		<tr>
	      <td>
		A non-normative XML Schema <bibref ref="XMLSchemaP1"/>, <bibref
		  ref="XMLSchemaP2"/> document for the
		<attval>http://www.w3.org/2004/08/xop/include</attval>
		namespace can be found at <loc
		  xmlns:xlink="http://www.w3.org/1999/xlink"
		  xlink:type="simple"
		  href="http://www.w3.org/2004/08/xop/include"
		  xlink:show="replace"
		  xlink:actuate="onRequest">http://www.w3.org/2004/08/xop/include</loc>. Note that XML Schema currently provides only for validation of XML 1.0 Infosets;  accordingly, the schema may not be usable with XOP Infosets corresponding to later versions of XML.
	      </td>
	    </tr>

	    <tr>
	      <td rowspan='2'>xmime</td>
	      <td><attval>http://www.w3.org/2005/05/xmlmime</attval></td>
		</tr>
		<tr>
	      <td>
		The namespace for the content type attribute.
	      </td>
	    </tr>

	    <tr>
	      <td rowspan='2'>soap</td>
	      <td><attval>http://www.w3.org/2003/05/soap-envelope</attval></td>
		</tr>
		<tr>
	      <td>
			The SOAP 1.2 namespace<bibref
		  ref="W3C.soap-part1"/>.
	      </td>
	    </tr>

	    <tr>
	      <td rowspan='2'>xs</td>
	      <td><attval>http://www.w3.org/2001/XMLSchema</attval></td>
		</tr>
		<tr>
	      <td>
		The namespace of XML Schema data types <bibref
		  ref="XMLSchemaP2"/>.
	      </td>
	    </tr>

	  </tbody>
	</table>

      </div2>
    </div1>

    <!-- ==================================================== -->
    <!-- =================== XOP Infosets =================== -->
    <!-- ==================================================== -->
    <div1 id="xop_infosets">
      <head>XOP Infoset Constructs</head>

      <p>
	XOP operates by extracting the Optimized Content from the Original
	Infoset to create the XOP Infoset. In particular, the <emph>character
	  information item</emph> children of <emph>element information
	  items</emph> to be optimized are removed and replaced with an
	<emph>element information item</emph> named <att>xop:Include</att>.
	The <att>xop:Include</att> <emph>element information item</emph>
	contains an <emph>attribute information item</emph> with a link to
	the part of the XOP Package that carries a binary representation of the
	data removed from the original <emph>element information item</emph>.
	Details of the construction and processing of XOP serializations are
	provided in <specref ref="xop_processing_model"/>.
      </p>

      <p>
	The Infoset used as input to XOP processing MUST NOT contain any
	<emph>element information item</emph> with a [namespace name]
	property of <attval>http://www.w3.org/2004/08/xop/include</attval>
	and a [local name] property of <att>Include</att>.  Infosets
	containing such <emph>element information items</emph> cannot be
	serialized using XOP. This is because during infoset reconstruction 
	a processor is unable to differentiate between 
	<att>xop:Include</att> <emph>element information items</emph> inserted during XOP package 
	construction and those that were part of the original infoset. 
      </p>

      <p>
	The following subsections provide formal definitions for allowable content in the
	<emph>element information item</emph> and <emph>attribute information
	  items</emph> used to construct a XOP serialization; content not explicitly specified 
	  is disallowed. A non-normative XML Schema for <bibref ref="XML"/> serializations of those
	<emph>element information item</emph> and <emph> attribute
	  information items</emph> can be found at <loc
	  xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
	  href="http://www.w3.org/2004/08/xop/include"
	  xlink:show="replace"
	  xlink:actuate="onRequest">http://www.w3.org/2004/08/xop/include</loc>.
      </p>

      <!--                                                    -->
      <!-- ______________ XOP Include Element _______________ -->
      <!--                                                    -->
      <div2 id="xop_include">
	<head><att>xop:Include</att> element information item</head>

	<p>
	  The <att>xop:Include</att> <emph>element information item</emph>
	  has:
	</p>

	<ulist>
	  <item>
	    A [local name] of <att>Include</att>.
	  </item>
	  <item>
	    A [namespace name] of 
	    <attval>http://www.w3.org/2004/08/xop/include</attval>.
	  </item>
	  <item>
	    One or more <emph>attribute information items</emph>
	    amongst its [attributes] property as follows:

	    <ulist>
	      <item>
			A mandatory <att>href</att><span> </span><emph>attribute information
			item</emph> (see <specref ref="xop_href"/>).
		  </item>
	      <item>
			Zero or more additional namespace qualified <emph>attribute information
		  items</emph>. Any such <emph>attribute information items</emph> MUST NOT have a [namespace name] of 
		<attval>http://www.w3.org/2004/08/xop/include</attval>, MUST NOT change
		the semantics of processing the <att>xop:Include</att>
                <span> </span><emph>element information item</emph> and 
		MUST be ignored if not recognized.
	      </item>
		</ulist>
	  </item>
	  <item>
	    Zero or more namespace qualified <emph>element
	      information items</emph> in its [children] property. Any such
	    <emph>element information items</emph> MUST NOT have a [namespace name]
	    of <attval>http://www.w3.org/2004/08/xop/include</attval>, MUST
	    NOT change the semantics of processing the <att>xop:Include</att>
	    <span> </span><emph>element information item</emph> and MUST be ignored if not recognized.
	  </item>
	</ulist>

      </div2>
  
      <!--                                                    -->
      <!-- _______________ XOP Href Attribute _______________ -->
      <!--                                                    -->
      <div2 id="xop_href">
	<head><att>href</att> attribute information item</head>

	<p>
	  The <att>href</att> <emph>attribute information item</emph> has:
	</p>

	<ulist>
	  <item>
	    A [local name] of <att>href</att>.
	  </item>
	  <item>
	    An empty [namespace name].
	  </item>
	  <item>
	    A [normalized value] which is a representation of a URI (see
	    <bibref ref="RFC3986"/>)
	    referencing the part of the package containing the data logically
	    included by the [owner element] (i.e., the <att>xop:Include</att>
	    <span> </span><emph>element information item</emph>). The [normalized value] MUST be a 
		valid URI per the cid: URI scheme (see <bibref ref='RFC2392' />). In addition, 
		the [normalized value] MUST be a valid lexical form of the XML Schema <att>xs:anyURI</att>
	    datatype (see <bibref ref="XMLSchemaP2"/> <xspecref
	      href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#anyURI">3.2.17
	      anyURI</xspecref>). 
	  </item>
	  <item>
	    An [owner element] which is the <att>xop:Include</att>
	    <span> </span><emph>element information item</emph> containing the
	    <emph>attribute information item</emph>.
	  </item>
	</ulist>

      </div2>

    </div1>

    <!-- ==================================================== -->
    <!-- ============== XOP Processing Model ============== -->
    <!-- ==================================================== -->

    <div1 id="xop_processing_model">
      <head>XOP Processing Model</head>

      <p>
	This section describes the processing model for creating XOP Packages
	and interpreting XOP Packages.  Unless otherwise stated, the result of
	such processing MUST be semantically equivalent to performing the
	specified steps separately, and in the order given.
      </p>

      <!--                                                    -->
      <!-- _____________ Creating XOP Packages ______________ -->
      <!--                                                    -->
      <div2 id="creating_xop_packages">
	<head>Creating XOP Packages</head>

	<p>
	  To create a XOP Package from an Original XML Infoset:
	</p>

	<olist>
	  <item>
	    Ensure that the Original XML Infoset contains no <emph>element
	      information item</emph> with a [namespace name] of
	    <attval>http://www.w3.org/2004/08/xop/include</attval> and a [local
	    name] of <att>Include</att>. As discussed in <specref
	      ref="xop_infosets"/>, XML Infosets with such <emph>element
	      information items</emph> cannot be represented using XOP.
	  </item>
	  <item>
	    Create an empty package.
	  </item>
	  <item>
	    Identify within the Original XML Infoset the <emph>element
	      information items</emph> to be optimized. To be optimized, the
	    characters comprising the [children] of the <emph>element
	      information item</emph> MUST be in the canonical form of
	    <att>xs:base64Binary</att> (see <bibref ref="XMLSchemaP2"/>
	<xspecref
	  href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#base64Binary">3.2.16
	  base64Binary</xspecref>) and MUST NOT contain any whitespace
	    characters, preceding, inline with or following the non-whitespace
	    content.
      Note that this rule requires that the [children] of the <emph>element
      information item</emph> to be optimized contains only 
      <emph>character information items</emph>.
	  </item>
	  <item>
	    Create a XOP Infoset which is a copy of the Original XML Infoset,
	    but with the [children] of each <emph>element
	      information item</emph>
	    identified in the previous step replaced by a
	    <att>xop:Include</att><span> </span><emph>element
	      information item</emph> (see <specref
	      ref="xop_include"/>) constructed as follows:

	    <olist>
	      <item>
		Transform the replaced characters into binary data by
		processing them as base64-encoded data.
	      </item>
	      <item>
		Serialize the binary data into a new part of the package, with
		appropriate metadata corresponding to the [normalized value] of
		the <att>href</att><span> </span><emph>attribute information item</emph> of
		the <att>xop:Include</att><span> </span><emph>element information
		  item</emph> (see <specref ref="xop_href"/>).
	      </item>
	      <item>
		If the <emph>element information item</emph> being optimized
		(i.e., the [parent] of the newly inserted
		<att>xop:Include</att><span> </span><emph>element information item</emph>)
		has a <att>xmime:contentType</att><span> </span><emph>attribute
		  information item</emph>, its value SHOULD be reflected
		appropriately in the metadata for the part.
	      </item>
	    </olist>
	  </item>
	  <item>
	    Serialize the resulting XOP Infoset into the package using any W3C
	    recommendation-level version of XML (e.g., <bibref ref="XML"/>,
	    <bibref ref="XML1.1"/>) and identify it as the root part according
	    to the packaging mechanism's convention, labeling it with the
	    application/xop+xml media type, as described in <specref
	      ref="identifying_xop_documents"/>.
	  </item>
	</olist>

	<p>
	  Additional parts MAY be added to the package to satisfy application
	  specific requirements.  Other content-specific metadata MAY be
	  reflected in the packaging metadata as appropriate.
	</p>

	<p>
	  If content cannot be successfully encoded into the XOP package,
	  implementations SHOULD behave as if that portion of the Original XML
	  Infoset was not nominated for optimization.
	</p>

      </div2>

      <!--                                                    -->
      <!-- ___________ Interpreting XOP Packages ____________ -->
      <!--                                                    -->
      <div2 id="interpreting_xop_packages">
	<head>Interpreting XOP Packages</head>

	<p>
	  This section specifies the means by which the Original XML Infoset
	  can be reconstructed from a XOP Package that has been prepared
	  according to the rules of <specref ref="creating_xop_packages"/>.
	</p>

	<p>
	  Note: conventions or error reporting mechanisms to be used in
	  processing packages that incorrectly purport to be XOP Packages are
	  beyond the scope of this specification.
	</p>

	<p>
	  To create a Reconstituted XML Infoset from a XOP Package:
	</p>

	<olist>
	  <item>
	    Construct an XML Infoset by parsing the root part of the package as
	    an XML document. The document MUST be parsed according to the level
	    of the XML Recommendation identified by the XML declaration of that
	    document. If no XML declaration is present, then the document MUST
	    be parsed per <bibref ref="XML"/>.
	  </item>

	  <item>
	    Using that XML Infoset, for each <emph>element information
	      item</emph>, E,  which has, as the sole member of its [children] property, a <att>xop:Include</att><span> </span>
	    <emph>element information item</emph> (as defined in <specref
	      ref="xop_include"/>):

	    <olist>
	      <item>
		Locate the part of the package corresponding to the URI in the
		<att>href</att><span> </span><emph>attribute information item</emph> of 
		the <att>xop:Include</att><span> </span><emph>element information item</emph> (i.e., corresponding to the URI
		encoded in the <emph>attribute information item</emph>'s
		[normalized value]).
	      </item>
	      <item>
		Replace the <att>xop:Include</att><span> </span><emph>element information item</emph> that appears in the 
		[children] property of E with <emph>character information items</emph> representing
		the canonical base64 encoding of the entity body of the
		identified package part (i.e., effectively replace the
		<att>xop:Include</att><span> </span><emph>element information item</emph>
		with the data reconstructed from the
		package part).
	      </item>
	    </olist>
	  </item>
	</olist>

      </div2>

    </div1>

    <!-- ==================================================== -->
    <!-- =================== XOP Packages =================== -->
    <!-- ==================================================== -->
    <div1 id="xop_packages">
      <head>XOP Packages</head>

      <p>
	XOP is capable of using a variety of underlying packaging mechanisms.
	Such packaging mechanisms MUST be able to represent, with full fidelity
	all the parts created according to <specref
	  ref="xop_processing_model"/> (see <specref
	  ref="creating_xop_packages"/>), and MUST be used in a manner that provides a 
	  means of designating a distinguished root (main, primary etc.) part.
      </p>

      <p>
	The subsection below specifies normatively how a particular packaging
	mechanism, MIME Multipart/Related, is used, but does not preclude the
	use of other packaging mechanisms with the XOP convention.
      </p>

      <!--                                                    -->
      <!-- __________ MIME/Multipart XOP Packages ___________ -->
      <!--                                                    -->
      <div2 id="mime_xop_packages">
	<head>MIME Multipart/Related XOP Packages</head>

	<p>
	  This section describes how MIME Multipart/Related packaging (as
	  specified in <bibref ref="RFC2387"/>) is used with XOP.
	</p>

	<p>
	  The root MIME part is the root part of the XOP package, MUST be a
	  serialization of the XOP Infoset using any W3C recommendation-level
	  version of XML (e.g., <bibref ref="XML"/>, <bibref ref="XML1.1"/>), and 
	  MUST be identified with a media type of "application/xop+xml" (as defined below). 
	  The "start-info" parameter of the package's media type MUST contain the content type 
	  associated with the content's XML serialization. (i.e. it will contain the same 
	  value as the "type" parameter of the root part). 
	</p>

	<p>
	  Except for purposes of determining the root MIME part, as specified
	  by <bibref ref="RFC2387"/>, ordering of MIME parts MUST NOT be
	  considered significant to XOP processing or to the construction of
	  the XOP Infoset.
	</p>

	<p>
	  Part metadata is reflected in MIME header fields. Specifically, 
	  the URI used in the value of an <att>href</att> <emph>attribute 
	  information item</emph> on a <att>xop:Include</att> <emph>element 
	  information item</emph> contains a URI that uses the 'cid:' scheme 
	  (see <bibref ref="RFC2392"/>), so the corresponding MIME
	  part MUST have a Content-ID header field (see <bibref ref="RFC2387"/> 
	  with a corresponding field-value.
	</p>

	<p>
	  Furthermore, if a <att>xmime:contentType</att> <emph>attribute
	    information item</emph> is found (as described in <specref
	    ref="xop_processing_model"/>), it SHOULD be reflected in the field value 
		of the MIME Content-Type header.
	</p>

      </div2>

    </div1>

    <!-- ==================================================== -->
    <!-- ============= Identifying XOP Documents ============ -->
    <!-- ==================================================== -->
    <div1 id="identifying_xop_documents">
      <head>Identifying XOP Documents</head>
	  <p>XOP Documents, when used in MIME-like systems, are identified with 
	  the "application/xop+xml" media type, with the required "type" parameter conveying 
	  the original XML serialisation's associated content type. Note that when the type 
	  parameter contains reserved characters, it needs to be appropriately quoted and escaped.</p>

	  <p>For example, a XOP package using MIME multipart/related packaging to serialize a 
	  SOAP 1.2 message <bibref ref='W3C.soap-part1' /> with an action parameter of "http://www.example.net/foo" 
	  would label the package itself with the "multipart/related"
	  media type, and the root part with the "application/xop+xml" media type along with a type parameter 
	  containing "application/soap+xml;action=\"http://www.example.net/foo\"".
	  </p>

	  <div2>
		<head>Registration</head>
		<glist>
		  <gitem><label>MIME media type name:</label><def><p>application</p></def></gitem>
		  <gitem><label>MIME subtype name:</label><def><p>xop+xml</p></def></gitem>
		  <gitem>
			<label>Required parameters:</label>
			<def>
			  <glist>
				<gitem>
				  <label>type</label>
				  <def><p>This parameter conveys the content type associated with the XML serialization of the XOP infoset, including parameters as appropriate.</p></def>
				</gitem>
			  </glist>
			</def>
		  </gitem>
		  <gitem>
			<label>Optional parameters:</label>
			<def>
			  <glist>
				<gitem>
				  <label>charset</label>
				  <def><p>This parameter has identical semantics to the charset parameter
				  of the <attval>application/xml</attval> media type as specified in
				  RFC 3023 <bibref ref="RFC3023"/>.</p></def>
				</gitem>
			  </glist>
			</def>
		  </gitem>
		  <gitem>
			<label>Encoding considerations:</label>
			<def><p>Identical to those of <attval>application/xml</attval>
			as described in RFC 3023 <bibref ref="RFC3023"/>,
			section 3.2.</p></def>
		  </gitem>
		  <gitem>
			<label>Security considerations:</label>
			<def><p>In addition to application-specific considerations, XOP has the same 
			security considerations described in RFC3023 <bibref ref='RFC3023' />, 
			section 10.</p></def>
		  </gitem>
		  <gitem><label>Interoperability considerations:</label><def><p>There are no known interoperability issues.</p></def></gitem>
		  <gitem><label>Published specification:</label><def><p>This document</p></def></gitem>
		  <gitem><label>Applications which use this media type:</label><def><p>No known applications currently use this media type.</p></def></gitem>
		  <gitem>
			<label>Additional information:</label>
			<def>
			  <glist>
				<gitem>
				  <label>File extension:</label>
				  <def><p>XOP</p></def>
				</gitem>
				<gitem>
				  <label>Fragment identifiers:</label>
				  <def><p>Identical to that of <attval>application/xml</attval> as described in
				  RFC 3023 <bibref ref="RFC3023"/>,
				  section 5.</p></def>
				</gitem>
				<gitem>
				  <label>Base URI:</label>
				  <def><p>As specified in RFC 3023 <bibref ref="RFC3023"/>, section 6.</p></def>
				</gitem>
				<gitem>
				  <label>Macintosh File Type code:</label>
				  <def><p>TEXT</p></def>
				</gitem>
			  </glist>
			</def>
		  </gitem>
		  <gitem>
			<label>Person and email address to contact for further information:</label>
			<def><p>Mark Nottingham &lt;mnot@pobox.com&gt;</p></def>
		  </gitem>
		  <gitem><label>Intended usage:</label><def><p>COMMON</p></def></gitem>
		  <gitem>
			<label>Author/Change controller:</label>
			<def>
			  <p>The XOP specification is a work product of the World Wide Web Consortium's <loc xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"  href="http://www.w3.org/2000/xp/Group/" xlink:show="replace" xlink:actuate="onRequest">XML Protocol Working Group</loc>. The W3C has change control over this specification.</p>
			</def>
		  </gitem>
		</glist>
	  </div2>
    </div1>

    <!-- ==================================================== -->
    <!-- ============== Security Considerations ============= -->
    <!-- ==================================================== -->
    <div1 id="security_considerations">
      <head>Security Considerations</head>

      <!--                                                    -->
      <!-- _____________ XOP Package Integrity ______________ -->
      <!--                                                    -->
      <div2 id="package_integrity">
	<head>XOP Package Integrity</head>

	<p>
	  The integrity of Infosets optimized using XOP may need to be ensured.
	  As XOP packages can be transformed to recover such Infosets (see
	  <specref ref="interpreting_xop_packages"/>), existing XML Digital
	  Signature techniques can be used to protect them. Note, however, that
	  a signature over the Infoset does not necessarily protect against
	  modifications of other aspects of the XOP packaging; for example, an
	  Infoset signature check might not protect against re-ordering of
	  non-root parts.
	</p>

	<p>
	  In the future a transform algorithm for use with XML Signature could
	  provide a more efficient processing model where the raw octets are
	  digested directly.
	</p>
      </div2>

      <!--                                                    -->
      <!-- __________ XOP Package Confidentiality ___________ -->
      <!--                                                    -->
      <div2 id="package_confidentiality">
	<head>XOP Package Confidentiality</head>

	<p>
	  The confidentiality of XOP Packages may need to be ensured. As such
	  packages can be transformed to an XML Information Set, existing XML
	  Encryption (see <bibref ref="XMLEnc"/>) techniques can be used to
	  protect such packages.  Any part of a package can be encrypted,
	  whether it includes base64 characters or not. The resulting
	  <att>CipherData</att> <emph>element information item</emph> can then
	  be optimized because the content of such an <emph>element information
	    item</emph> is base64 characters.
	</p>

	<p>
	  In the future a transform algorithm for use with XML Encryption could
	  provide a more efficient processing model where the raw octets are
	  encrypted directly.
	</p>

      </div2>
    </div1>

  </body>

  <!-- ****************************************************** -->
  <!-- *************** Trailer of the document ************** -->
  <!-- ****************************************************** -->
  <back>

    <!-- ==================================================== -->
    <!-- ======= Relationship to other specifications ======= -->
    <!-- ==================================================== -->
    <div1 id="relation_other_specifications">
      <head>Relationship to other specifications</head>

      <p>
	This appendix summarizes the XOP dependencies upon underlying
	specifications, the nature of appropriate payloads for XOP and the
	means of extending XOP.
      </p>

      <!--                                                    -->
      <!-- __________________ Dependencies __________________ -->
      <!--                                                    -->
      <div2 id="dependencies">
	<head>Dependencies</head>

	<p>
	  The XOP convention builds upon a number of underlying specifications.
	  They are:
	</p>

	<ulist>
	  <item>
	    <p>
	      XML (e.g., <bibref ref="XML"/>, <bibref ref="XML1.1"/>) - The XOP
	      Document is encoded using any W3C recommendation-level version of
	      XML (see <specref ref="creating_xop_packages"/>). Formats that
	      use XOP MUST identify which versions of XML are permissible for
	      encoding the XOP Infoset. XOP does not constrain the use of any
	      mechanisms defined by XML, including those explicitly allowing
	      extensions, nor does it constrain the use of underlying
	      specifications.
	    </p>
	  </item>

	  <item>
	    <p>
	      Namespaces in XML (e.g., <bibref ref="XMLNS"/>, <bibref
		ref="XMLNS1.1"/>) - The XOP Document uses any W3C
	      recommendation-level version of Namespaces in XML compatible with
	      the version(s) of XML used. Formats that use XOP MUST identify
	      which versions of Namespaces in XML are permissible for encoding
	      the XOP Infoset. XOP does not constrain the use of any mechanisms
	      defined by Namespaces in XML, including those explicitly
	      allowing extensions, nor does it constrain the use of underlying
	      specifications.
	    </p>
	  </item>

	  <item>
	    <p>
	      Uniform Resource Identifiers (see <bibref ref="RFC3986"/>) - The
	      XOP Document uses URIs to locate parts in the XOP Package (see
	      <specref ref="xop_href"/>. XOP does not constrain the use of any
	      mechanisms defined by URIs, including those explicitly allowing
	      extensions, nor does it constrain the use of underlying
	      specifications.
	    </p>
	  </item>

	  <item>
	    <p>
	      Packaging Mechanism - XOP requires the use of a packaging
	      mechanism that satisfies the requirements in <specref
		ref="xop_packages"/>. One such mechanism MUST be in use, but
	      XOP does not require a specific mechanism. Formats using XOP MUST
	      identify at least one such mechanism permissible for creating the
	      XOP Package, and MUST specify how each allowed mechanism is to
	      be used for building the XOP Package.
	    </p>

	    <p>
	      The relationship of one such mechanism to XOP, The MIME
	      Multipart/Related Content-type, is specified in <specref
		ref="mime_xop_packages"/>.
	    </p>
	  </item>
	</ulist>

      </div2>

      <!--                                                    -->
      <!-- _____________________ Payload ____________________ -->
      <!--                                                    -->
      <div2 id="payload">
	<head>Payload</head>

	<p>
	  The payload of a XOP Package is an XML Infoset. XOP constrains the
	  range of admissible characters in the payload to those contained in
	  the "Char" production of a W3C recommendation-level version of XML.
	  Additionally, the Original XML Infoset cannot contain an
	  <emph>element information item</emph> with a [local name] of
	  <att>Include</att> and a [namespace name] of
	  <attval>http://www.w3.org/2004/08/xop/include</attval>. Finally,
	  portions of the payload which are nominated for optimization in XOP
	  MUST be base64-encoded data in the canonical lexical form of XML
	  Schema <att>base64Binary</att> datatype (see <bibref
	    ref="XMLSchemaP2"/> <xspecref
	    href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#base64Binary">3.2.16
	    base64Binary</xspecref>).
	</p>
      </div2>

      <!--                                                    -->
      <!-- ___________________ Extension ____________________ -->
      <!--                                                    -->
      <div2 id="extension">
	<head>Extension</head>

	<p>
	  XOP Documents allow extensions to the <att>xop:Include</att> element
	  when they do not change its semantics. Changes to the semantics MUST be
	  identified by a new namespace URI (i.e., they MUST define a new
	  <att>Include</att> <emph>element information item</emph> in another
	  namespace).
	</p>

	<p>
	  The extensibility of the specifications underlying XOP is not
	  constrained by their use in XOP.
	</p>

      </div2>

      <!--                                                    -->
      <!-- __________________ Requirements __________________ -->
      <!--                                                    -->
      <div2 id="requirements">
	<head>Requirements</head>
	<p>
	  This document along with <bibref ref="MTOM"/>
	  and <bibref ref="rep"/> has been produced in conjunction
	  with the development of requirements
	  embodied in the <bibref
	  ref="ucr"/> document.
	</p>  
      </div2>
    </div1>

    <!-- ==================================================== -->
    <!-- ==================== References ==================== -->
    <!-- ==================================================== -->
    <div1 id="references">
      <head>References</head>

      <!--                                                    -->
      <!-- _____________ Normative References _______________ -->
      <!--                                                    -->
      <div2 id="normative_references">
	<head>Normative References</head>

<blist>
    <bibl key="XML 1.0" 
        id="XML">
	<titleref href="http://www.w3.org/TR/2006/REC-xml-20060816">Extensible
	Markup Language (XML) 1.0 (Fourth Edition)</titleref>, Jean Paoli,
	Eve Maler, Tim Bray, <emph>et. al.</emph>, Editors. 
	World Wide Web Consortium, 16 August 2006. 
	This version is http://www.w3.org/TR/2006/REC-xml-20060816. 
	The <a href="http://www.w3.org/TR/REC-xml">latest version</a> is
	available at http://www.w3.org/TR/REC-xml.</bibl>

   <bibl id="XML1.1" key="XML 1.1">
      <titleref href="http://www.w3.org/TR/2006/REC-xml11-20060816">
	Extensible Markup Language (XML) 1.1 (Second Edition)</titleref>, 
	Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Eve Maler, 
        François Yergeau, John Cowan, Editors.
	World Wide Web Consortium, 16 August 2006, edited in place 29 September 2006.
	This version is http://www.w3.org/TR/2006/REC-xml11-20060816.
	The <a href="http://www.w3.org/TR/xml11/">latest version</a> is 
	available at http://www.w3.org/TR/xml11/.</bibl>

   <bibl key="SOAP Message Transmission Optimization Mechanism" 
	id="MTOM">
        <titleref href="&dated-mtom;">SOAP Message 
	Transmission Optimization Mechanism</titleref>, Hervé Ruellan,
	Noah Mendelsohn, Martin Gudgin, and Mark Nottingham, Editors. 
	World Wide Web Consortium, 
	&mtomdraft.dd; &mtomdraft.month; &mtomdraft.year;. 
	This version is &dated-mtom;.
	The <a href="http://www.w3.org/TR/soap12-mtom/">latest version</a> is
	available at http://www.w3.org/TR/soap12-mtom/.</bibl>

    <bibl key="Resource Representation SOAP Header Block"
        id="rep">
	 <titleref href="&dated-rep;">Resource 
	 Representation SOAP Header Block</titleref>, Martin Gudgin, 
	 Yves Lafon, and Anish Karmarkar, Editors. 
	 World Wide Web Consortium, 
	 &repdraft.dd; &repdraft.month; &repdraft.year;. 
	 This version is &dated-rep;. 
	 The <a href="http://www.w3.org/TR/soap12-rep/">latest version</a> is
	 available at http://www.w3.org/TR/soap12-rep/.</bibl>

    <bibl key="SOAP Optimized Serialization Use Cases and Requirements" 
	id="ucr">
	<titleref href="http://www.w3.org/TR/2004/WD-soap12-os-ucr-20040608/">SOAP Optimized 
	Serialization Use Cases and Requirements</titleref>, Tony Graham, 
	Mark Jones, and Anish Karmarkar, Editors. 
	World Wide Web Consortium, 08 June 2004. 
	This version is http://www.w3.org/TR/2004/WD-soap12-os-ucr-20040608/. 
	The <a href="http://www.w3.org/TR/soap12-os-ucr/">latest version</a>
	is available at http://www.w3.org/TR/soap12-os-ucr/.</bibl>

    <bibl key="Namespaces in XML" 
        id="XMLNS">
	<titleref href="http://www.w3.org/TR/2006/REC-xml-names-20060816">
	Namespaces in
	XML (Second Edition)</titleref>, Tim Bray, Dave Hollander, 
        Andrew Layman, and Richard Tobin, Editors. 
	World Wide Web Consortium, 16 August 2006. 
	This version is http://www.w3.org/TR/2006/REC-xml-names-20060816.
	The <a href="http://www.w3.org/TR/REC-xml-names">latest version</a> is
	available at http://www.w3.org/TR/REC-xml-names.</bibl>

    <bibl key="Namespaces in XML 1.1" 
        id="XMLNS1.1">
        <titleref href="http://www.w3.org/TR/2006/REC-xml-names11-20060816">Namespaces in
	XML 1.1 (Second Edition)</titleref>, Richard Tobin, Andrew Layman, Tim Bray, and 
	Dave Hollander, Editors. 
	World Wide Web Consortium, 16 August 2006. 
	This version is http://www.w3.org/TR/2006/REC-xml-names11-20060816. 
	The <a href="http://www.w3.org/TR/xml-names11/">latest version</a> is 
	available at http://www.w3.org/TR/xml-names11/.</bibl>

    <bibl key="XML InfoSet" 
	id="XMLInfoSet">
	<titleref href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204">XML
	Information Set (Second Edition)</titleref>, Richard Tobin and 
	John Cowan, Editors. 
	World Wide Web Consortium, 04 February 2004. 
	This version is http://www.w3.org/TR/2004/REC-xml-infoset-20040204. 
	The <a href="http://www.w3.org/TR/xml-infoset">latest version</a> is
	available at http://www.w3.org/TR/xml-infoset.</bibl>

    <bibl key="XML Schema Part 1" 
        id="XMLSchemaP1">
        <titleref href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/">
	XML Schema Part 1: 
	Structures Second Edition</titleref>, David Beech, Murray Maloney, 
	Henry S. Thompson, and Noah Mendelsohn, Editors. 
	World Wide Web Consortium, 28 October 2004. 
	This version is http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/
	The <a href="http://www.w3.org/TR/xmlschema-1/">latest version</a> is
	available at http://www.w3.org/TR/xmlschema-1/.</bibl>

    <bibl key="XML Schema Part 2" 
        id="XMLSchemaP2">
	<titleref href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">
	XML Schema Part 2:
	Datatypes Second Edition</titleref>, 
	Ashok Malhotra and Paul V. Biron, Editors. 
	World Wide Web Consortium, 28 October 2004. 
	This version is http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/. 
	The <a href="http://www.w3.org/TR/xmlschema-2/">latest version</a> is
	available at http://www.w3.org/TR/xmlschema-2/.</bibl>

    <bibl key="MediaTypes"
        id="xmlmime">
	<titleref href="&mediatype;">Describing Media Content of Binary Data in XML</titleref>, Anish Karmarkar, 
        Ümit Yalçinalp, Editors.
	World Wide Web Consortium, 04 May 2005.
	This version is &mediatype;. 
	The <a href="http://www.w3.org/TR/xml-media-types">latest version</a>
	is available at http://www.w3.org/TR/xml-media-types.</bibl>

    <bibl key="RFC 2119" 
	id="RFC2119">
	<titleref href="http://www.ietf.org/rfc/rfc2119.txt">Key words for 
	use in RFCs to Indicate Requirement Levels</titleref>, S. Bradner, 
	Editor.
	IETF, March 1997. 
	This RFC is available at http://www.ietf.org/rfc/rfc2119.txt.</bibl>

    <bibl key="RFC 2387" 
	id="RFC2387">
	<titleref href="http://www.ietf.org/rfc/rfc2387.txt">The MIME 
	Multipart/Related Content-type</titleref>, E. Levinson, 
	Editor.
	IETF, August 1998. 
	This RFC is available at http://www.ietf.org/rfc/rfc2387.txt.</bibl>

    <bibl key="RFC 2557" 
	id="RFC2557">
	<titleref href="http://www.ietf.org/rfc/rfc2557.txt">MIME 
	Encapsulation of Aggregate Documents, such as HTML (MHTML)</titleref>,
	J. Palme, A. Hopmann and N. Shelness, Editors.
	IETF, March 1999. 
	This RFC is available at http://www.ietf.org/rfc/rfc2557.txt.</bibl>

    <bibl key="RFC 2392" 
	id="RFC2392">
	<titleref href="http://www.ietf.org/rfc/rfc2392.txt">Content-ID and 
	Message-ID Uniform Resource Locators</titleref>, 
	E. Levinson, Editor.
	IETF, August 1998. 
	This RFC is available at http://www.ietf.org/rfc/rfc2392.txt.</bibl>

    <bibl key="RFC 3023" 
	id="RFC3023">
	<titleref href="http://www.ietf.org/rfc/rfc3023.txt">XML 
	Media Types</titleref>, M. Murata, S. St.Laurent
	and D. Kohn, Editors.
	IETF, January 2001. 
	This RFC is available at http://www.ietf.org/rfc/rfc3023.txt.</bibl>

    <bibl key="RFC 3986" 
	id="RFC3986">
	<titleref href="http://www.ietf.org/rfc/rfc3986.txt">Uniform Resource 
	Identifiers (URI): Generic Syntax</titleref>, T. Berners-Lee, 
	R. Fielding and L. Masinter, Editors.
	IETF, January 2005. 
	<emph>Obsoletes: <span id="RFC2396">RFC 2396</span>, 
	<span id="RFC2732">RFC 2732</span></emph>.
	This RFC is available at http://www.ietf.org/rfc/rfc3986.txt.</bibl>

</blist>

      </div2>

      <!--                                                    -->
      <!-- ____________ Informative References ______________ -->
      <!--                                                    -->
      <div2 id="informative_references">
	<head>Informative References</head>

	<blist>
    <bibl key="Canonical XML" 
        id="C14N">
	<titleref href="http://www.w3.org/TR/2001/REC-xml-c14n-20010315">Canonical XML Version 1.0</titleref>, John Boyer, Editor. 
	World Wide Web Consortium, 15 March 2001. 
        This version is http://www.w3.org/TR/2001/REC-xml-c14n-20010315. 
        The <a href="http://www.w3.org/TR/xml-c14n">latest version</a> is 
	available at http://www.w3.org/TR/xml-c14n.</bibl>

    <bibl key="Exclusive XML Canonicalization" 
        id="EXCC14N">
        <titleref href="http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/">Exclusive XML Canonicalization Version 1.0</titleref>, 
	Joseph Reagle, Donald E. Eastlake 3rd, and John Boyer, Editors. 
	World Wide Web Consortium, 18 July 2002. 
	This version is http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/. 
	The <a href="http://www.w3.org/TR/xml-exc-c14n">latest version</a> is
	available at http://www.w3.org/TR/xml-exc-c14n.</bibl>

   <bibl key="XML Encryption Syntax and Processing" 
        id="XMLEnc">
	<titleref href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">XML Encryption Syntax and Processing</titleref>, 
	Joseph Reagle and Donald Eastlake, Editors. 
	World Wide Web Consortium, 10 December 2002. 
	This version is http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/. 
        The <a href="http://www.w3.org/TR/xmlenc-core/">latest version</a> is 
	available at http://www.w3.org/TR/xmlenc-core/.</bibl>

   <bibl key="SOAP Part 1" 
        id="W3C.soap-part1">
	<titleref href="&dated-part1;">&name-part1;</titleref>, 
	Martin Gudgin, Marc Hadley, Noah Mendelsohn, Jean-Jacques Moreau,
	Henrik Frystyk Nielsen, Anish Karmarkar, Yves Lafon, Editors.
	World Wide Web Consortium, &draft.day; &draft.month; &draft.year;.
	This version is &dated-part1;.
	The <a href="http://www.w3.org/TR/soap12-part1/">latest version</a> is
	available at http://www.w3.org/TR/soap12-part1/.</bibl>

   <bibl key="SOAP Part 2" 
        id="W3C.soap-part2">
	<titleref href="&dated-part2;">&name-part2;</titleref>, 
	Martin Gudgin, Marc Hadley, Noah Mendelsohn, Jean-Jacques Moreau,
        Henrik Frystyk Nielsen, Anish Karmarkar, Yves Lafon, Editors. 
	World Wide Web Consortium, &draft.day; &draft.month; &draft.year;.
	This version is &dated-part2;.
	The <a href="http://www.w3.org/TR/soap12-part2/">latest version</a> is
	available at http://www.w3.org/TR/soap12-part2/.</bibl>
</blist>

      </div2>
    </div1>
    <inform-div1 id="acks">
      <head>Acknowledgements</head>

      <p>This specification is the work of the W3C XML Protocol Working Group.</p>

      <p>Participants in the Working Group are (at the time of writing, and by
      alphabetical order): &wgmb;</p>

      <p>Previous participants were: &prevwgmb;</p>

<p>The people who have contributed to discussions on
<loc xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" href="mailto:xml-dist-app@w3.org">xml-dist-app@w3.org</loc>
are also gratefully acknowledged.</p>

    </inform-div1>
  </back>
</spec>
