<?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 % entities SYSTEM "entitieswd.dtd" >
%entities;
<!ENTITY status "&wsfra.status;" >
<!ENTITY short-status "&wsfra.short-status;" >
 ]>

<spec w3c-doctype="&wsfra.w3c-doctype;" role="&wsfra.role;">
 <header>
  <title>&wsfra.name;</title>
  <w3c-designation>&wsfra.w3c-designation;</w3c-designation>
  <w3c-doctype>"&wsfra.w3c-doctype;</w3c-doctype>
  <pubdate>
   <day>&wsfra.day;</day>
   <month>&wsfra.month;</month>
   <year>&wsfra.year;</year>
  </pubdate>

  <publoc>
   <loc xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
         xlink:show="replace" xlink:actuate="onRequest"
         href="&wsfra.dated;">&wsfra.dated;
   </loc>
  </publoc>
<!--
  <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/&wsfra.shortname;">http://www.w3.org/TR/&wsfra.shortname;
   </loc>
  </latestloc>

  <prevlocs>
    <loc xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
         xlink:show="replace" xlink:actuate="onRequest"
         href="&prev.wsfra.dated;">&prev.wsfra.dated;
    </loc>
  </prevlocs>
-->
  <authlist>
   <author>
    <name>Doug Davis</name>
    <affiliation>IBM</affiliation>
   </author>
   <author>
    <name>Ashok Malhotra</name>
    <affiliation>Oracle</affiliation>
   </author>
   <author>
    <name>Katy Warr</name>
    <affiliation>IBM</affiliation>
   </author>
   <author>
    <name>Wu Chou</name>
    <affiliation>Avaya</affiliation>
   </author>
  </authlist>

  <status id='Status'>
   <p>This is the First Public Working Draft.</p>
   <p>
    Publication as a Working Draft does not imply endorsement by the
    W3C Membership. This is a draft document and can be updated, replaced
    or obsoleted by other documents at any time. It is inappropriate to
    cite this document as other than work in progress.
   </p>
  </status>

  <abstract>
   <p>
    This specification extends the <bibref ref="WsTransfer"/>
    specification to enable clients to retrieve and manipulate subsets
    of a WS-Transfer enabled resource without needing to include the entire
    XML representation in a message exchange.
   </p>
  </abstract>

  <langusage>
   <language id="en">English</language>
  </langusage>

  <revisiondesc>
   <p>Last Modified: $Date: 2009/09/02 17:04:41 $</p>
  </revisiondesc>
 </header>

 <body>
  <div1 id="intro">
   <head>Introduction</head>
   <p>
    This specification extends the WS-Transfer specification and defines
    a mechanism that allows clients to retrieve and manipulate subsets
    of a WS-Transfer enabled resource without needing to include the entire
    XML representation in a message exchange.
   </p>

   <p>
    This specification defines a fragment transfer mechanism, an
    extension framework for defining expression languages, and a set of
    expression languages.
   </p>

   <p>
    The fragment transfer mechanism is defined as an extension to 
    WS-Transfer.  This
    involves defining a WS-Transfer Dialect and corresponding XML elements
    that go into the SOAP Body of the Get, Put, Delete and Create  
    WS-Transfer operations. 
    This fragment transfer mechanism is designed so that it can be used 
    with any number of
    expression languages to indentify a subset of the resource the
    operation is to operate over.
   </p>

   <p>
    While other specifications can define other expression languages,
    it is RECOMMENDED that those languages
    reuse the fragment transfer framework that this specification defines.
   </p>

   <div2 id="reqs">
    <head>Requirements</head>
    <p>This specification intends to meet the following requirement:</p>
    <ulist>
     <item>
      <p>
       Provide an extension mechanism to WS-Transfer that allows for
       subsets of a resource to be retrieved and modified.
      </p>
     </item>

     <item>
      <p>
       Provide a set of expression languages that implementations
       can leverage.
      </p>
     </item>
    </ulist>
   </div2>
  </div1>

  <div1 id="Notations_and_Terminology">
   <head>Terminology and Notation</head>

   <div2 id="terminology">
    <head>Terminology</head>
    <glist>
     <gitem>
      <label>Expression</label>
      <def>
       <p>
        A Language specific set of tokens that are used refer to a location
        in a resource.
       </p>
      </def>
     </gitem>
     <gitem>
      <label>Fragment</label>
      <def>
       <p>
        A subset of a resource.
       </p>
      </def>
     </gitem>
    </glist>
   </div2>

   <div2 id="namespaces">
    <head>XML Namespaces</head>
    <p>
     The XML Namespace URI that MUST be used by implementations of this
     specification is:
    </p>

    <example>
     <eg><loc href="http://www.w3.org/2009/02/ws-fra">http://www.w3.org/2009/02/ws-fra</loc></eg>
    </example>

    <p>
     <specref ref="xmlnamespaces"/> lists XML namespaces that are 
     used in this specification. The
     choice of any namespace prefix is arbitrary and not semantically
     significant.
    </p>

    <table id="xmlnamespaces" border="1" cellpadding="5">
     <caption>
      Prefixes and XML Namespaces used in this specification.
     </caption>

     <tbody>
      <tr>
       <th align="left"> Prefix </th>
       <th align="left"> XML Namespace </th>
       <th align="left"> Specification(s) </th>
      </tr>
      <tr>
       <td> wsf </td>
       <td>
        <loc href="http://www.w3.org/2009/02/ws-fra">http://www.w3.org/2009/02/ws-fra</loc>
       </td>
       <td>
        This specification
       </td>
      </tr>
      <tr>
       <td> s </td>
       <td> Either SOAP 1.1 or 1.2 </td>
       <td> SOAP </td>
      </tr>
      <tr>
       <td> s11 </td>
       <td>
        <loc href="http://schemas.xmlsoap.org/soap/envelope/">http://schemas.xmlsoap.org/soap/envelope/</loc>
       </td>
       <td>
        <bibref ref="Soap11"/>
       </td>
      </tr>
      <tr>
       <td> s12 </td>
       <td>
        <loc href="http://www.w3.org/2003/05/soap-envelope">http://www.w3.org/2003/05/soap-envelope</loc>
       </td>
       <td>
        <bibref ref="Soap12"/>
       </td>
      </tr>
      <tr>
       <td> wsa </td>
       <td>
        <loc href="http://www.w3.org/2005/08/addressing">http://www.w3.org/2005/08/addressing</loc>
       </td>
       <td>
        <bibref ref="AddrCore"/>
       </td>
      </tr>
      <tr>
       <td> wsdl </td>
       <td>
        <loc href="http://schemas.xmlsoap.org/wsdl/">http://schemas.xmlsoap.org/wsdl/</loc>
       </td>
       <td>
        <bibref ref="Wsdl11"/>
       </td>
      </tr>
      <tr>
       <td> xs </td>
       <td>
        <loc href="http://www.w3.org/2001/XMLSchema">http://www.w3.org/2001/XMLSchema</loc>
       </td>
       <td> 
        XML Schema <bibref ref="XmlSchemaPart1"/>, <bibref ref="XmlSchemaPart2"/>
       </td>
      </tr>
      <tr>
       <td> wst </td>
       <td>
        <loc href="http://www.w3.org/2009/02/ws-tra">http://www.w3.org/2009/02/ws-tra</loc>
       </td>
       <td>
        <bibref ref="WsTransfer"/>
       </td>
      </tr>
     </tbody>
    </table>

    <p>
     The working group intends to update the value of the Web Services
     Fragment namespace URI each time a new version of this document is
     published until such time that the document reaches Candidate
     Recommendation status. Once it has reached Candidate Recommendation
     status, the working group intends to maintain the value of the
     Web Services Fragment namespace URI that was assigned in the
     Candidate Recommendation unless significant changes are made that
     impact the implementation or break post-CR implementations of the
     specification. Also see
     <loc href="http://www.w3.org/2001/tag/doc/namespaceState.html">
      http://www.w3.org/2001/tag/doc/namespaceState.html
     </loc> and
     <loc href="http://www.w3.org/2005/07/13-nsuri">
      http://www.w3.org/2005/07/13-nsuri
     </loc>.
    </p>
   </div2>

   <div2 id="conven">
    <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 the following syntax to define outlines for 
     messages:
    </p>
    <ulist>
     <item>
      <p>
       The syntax appears as an XML instance, but values in italics
       indicate data types instead of literal values.
      </p>
     </item>
     <item>
      <p>
       Characters are appended to elements and attributes to indicate
       cardinality:
      </p>
      <ulist>
       <item>
        <p> "?" (0 or 1) </p>
       </item>
       <item>
        <p> "*" (0 or more) </p>
       </item>
       <item>
        <p> "+" (1 or more) </p>
       </item>
      </ulist>
     </item>
     <item>
      <p>
       The character "|" is used to indicate a choice between
       alternatives.
      </p>
     </item>
     <item>
      <p>
       The characters "(" and ")" are used to
       indicate that contained items are to be treated as a group with 
       respect to cardinality or choice.
      </p>
     </item>
     <item>
      <p>
       The characters "[" and "]" are used to call
       out references and property names.
      </p>
     </item>
     <item>
      <p>
       Ellipsis (i.e. "...") indicate points of extensibility.
      </p>
     </item>
     <item>
      <p>
       XML namespace prefixes (see <specref ref="xmlnamespaces"/>) are used 
       to indicate the namespace of the element being defined.
      </p>
     </item>
    </ulist>

    <p>
     In addition to Message Information Header properties
     <bibref ref="AddrCore"/>,
     this specification uses the following properties to define messages:
    </p>

    <glist>
     <gitem>
      <label> <kw>[Headers]</kw> </label>
      <def>
       <p> Unordered message headers. </p>
      </def>
     </gitem>

     <gitem>
      <label> <kw>[Action]</kw> </label>
      <def>
       <p> The value to be used for the wsa:Action URI. </p>
      </def>
     </gitem>

     <gitem>
      <label> <kw>[Body]</kw> </label>
      <def>
       <p> A message body. </p>
      </def>
     </gitem>
    </glist>

    <p>
     These properties bind to a SOAP Envelope as follows:
    </p>

    <example>
     <eg>&lt;s:Envelope&gt;
  &lt;s:Header&gt;
    <kw>[Headers]</kw>
    &lt;wsa:Action&gt;<kw>[Action]</kw>&lt;/wsa:Action&gt;
    ...
  &lt;/s:Header&gt;
  &lt;s:Body&gt;<kw>[Body]</kw>&lt;/s:Body&gt;
&lt;/s:Envelope&gt;</eg>
    </example>

    <p>
     This specification can be used in terms of XML Information Set (Infoset)
     <bibref ref="XMLInfoset"/>, even though the specification uses XML 1.0
     terminology. Valid Infoset for this specification are the one
     serializable in XML 1.0, hence the use of XML 1.0.
    </p>

   </div2>

   <div2 id="extensions">
    <head>Considerations on the Use of Extensibility Points</head>

    <p>
     The elements defined in this specification MAY be extended at the
     points indicated by their outlines and schema. Implementations MAY
     add child elements and/or attributes at the indicated extension
     points but MUST NOT contradict the semantics of the parent and/or
     owner, respectively. If a receiver does not recognize an extension,
     the receiver SHOULD ignore that extension. Senders MAY indicate
     the presence of an extension that has to be understood through the use
     of a corresponding SOAP Header with a soap:mustUnderstand attribute
     with the value "1".
    </p>

    <p>
     In cases where it is either desirable or necessary for the receiver
     of a request that has been extended to indicate that it has
     recognized and accepted the semantics associated with that extension,
     it is RECOMMENDED that the receiver add a corresponding extension
     to the response message.  The definition of an extension SHOULD clearly
     specify how the extension that appears in the response correlates
     with that in the corresponding request.
    </p>

    <p>
     Extension elements and attributes MUST NOT use the Web Services
     Fragment namespace URI.
    </p>
   </div2>

   <div2 id="compliance">
    <head>Compliance</head>
        
    <p>
     An implementation is not compliant with this specification if it fails to
     satisfy one or more of the MUST or REQUIRED level requirements defined 
     herein.  A SOAP Node MUST NOT use the XML namespace identifier for this 
     specification (listed in <specref ref="namespaces"/>) within SOAP 
     Envelopes unless it is compliant with this specification. 
    </p>
        
    <p>
     Normative text within this specification takes precedence over the XML 
     Schema and WSDL descriptions, which in turn take precedence over 
     outlines, which in turn take precedence over examples. 
    </p>
        
    <p>
     All messages defined by this specification MUST be sent to a Web service 
     that is addressable by an EPR (see <bibref ref="AddrCore"></bibref>). 
    </p>

    <p>
     Unless otherwise noted, all URIs are absolute URIs and URI comparison
     MUST be performed according to <bibref ref="RFC3986"/> section 6.2.1.
    </p>
        
   </div2>
  </div1>

  <div1 id="fragments">
   <head>Fragment WS-Transfer Dialect</head>

   <p>
    This section defines the fragment transfer mechanism that the expression
    languages defined in subsequent sections will use. 
    The following sections define the expected behavior when the WS-Fragment
    Dialect is used in each of the WS-Transfer operations.
   </p>

   <p>
    Each Expression language that uses this transfer fragment mechanism 
    MUST fully define how it behaves for each operation and for the
    language specific expression constructs it supports.  For example,
    an XPath language will need to explain how a new XML element is
    inserted into an existing resource.
   </p>

   <p>
    WS-Transfer defines what the expected behavior of a resource is 
    with respect to modifications of the resource that might result in
    an invalid state or if the client does not have the authority to
    perform such operations.  This specification only extends but does
    not modify the base WS-Transfer behavior.
   </p>

   <div2 id="Get">
    <head>Get</head>
    <p>
     To retrieve a subset of a resource
     a client MUST specify the WS-Fragment URI in the wst:Get request.
    </p>
    <p>
     The Get request message MUST be of the following form:
    </p>
    <example>
     <eg><kw>[Action]</kw>
  http://www.w3.org/2009/02/ws-tra/Get

<kw>[Body]</kw>
  &lt;wst:Get Dialect="http://www.w3.org/2009/02/ws-frag" ...&gt;
    &lt;wsf:Expression Language="<emph>xs:anyURI</emph>" ...&gt;
      <emph>xs:any</emph> *
    &lt;/wsf:Expression&gt;
    <emph>xs:any</emph> *
  &lt;/wst:Get&gt;</eg>
    </example>
    <p>
     The following describes additional, normative constraints on the outline
     listed above:
    </p>
    <glist>
     <gitem>
      <label> <kw>[Body]</kw>/wst:Get@Dialect </label>
      <def>
       <p>
        This attribute MUST be set to http://www.w3.org/2009/02/ws-frag.
       </p>
      </def>
     </gitem>

     <gitem>
      <label> <kw>[Body]</kw>/wst:Get/wsf:Expression </label>
      <def>
       <p>
        This element identifies which fragment in the resource this
        operation applies to.
        The value of this element MUST conform to the syntax of the language 
        specified in Language attribute, otherwise a
        wsf:InvalidExpression fault MUST be generated.
       </p>
      </def>
     </gitem>

     <gitem>
      <label> <kw>[Body]</kw>/wst:Get/wsf:Expression@Language </label>
      <def>
       <p>
        This URI indicates which expression language will be
        used to identify the subset of the resource this operation applies
        to. A resource MUST generate a wsf:UnsupportedLanguage Fault if it
        does not support the specified Language.
       </p>
      </def>
     </gitem>
    </glist>

    <p>
     If the resource accepts a Get request, it MUST reply with a response of
     the following form:
    </p>
    <example>
     <eg><kw>[Action]</kw>
  http://www.w3.org/2009/02/ws-tra/GetResponse

<kw>[Body]</kw>
  &lt;wst:GetResponse ...&gt;
    &lt;wsf:Value&gt; <emph>xs:any</emph> * &lt;/wsf:Value&gt;
    <emph>xs:any</emph> *
  &lt;/wst:GetResponse&gt;</eg>
    </example>

    <p>
     The following describes additional, normative constraints on the 
     outline listed above:
    </p>

    <glist>
     <gitem>
      <label> <kw>[Body]</kw>/wst:GetResponse/wsf:Value </label>
      <def>
       <p>
        This element encompasses the fragment response corresponding to the 
        wsf:Expression in the request and MUST contain the subset of the 
        resource identified by the wsf:Expression element in the
        corresponding Get request. If the
        Expression identifies non-existent data, or
        it corresponds to a fragment with no value, then this
        element MAY be empty.
       </p>
      </def>
     </gitem>
    </glist>

    <p>
     Other components of the outline above are not further constrained 
     by this specification.
    </p>
   </div2>

   <div2 id="Put">
    <head>Put</head>
    <p>
     To update a subset of a resource a client MUST specify the WS-Fragment
     URI in the wst:Put request.
    </p>
    <p>
     The Put request message MUST be of the following form:
    </p>
    <example>
     <eg><kw>[Action]</kw>
  http://www.w3.org/2009/02/ws-tra/Put

<kw>[Body]</kw>
  &lt;wst:Put Dialect="http://www.w3.org/2009/02/ws-frag" ...&gt;
    &lt;wsf:Fragment ...&gt;
      &lt;wsf:Expression Language="<emph>xs:anyURI</emph>" ...&gt;
        <emph>xs:any</emph> *
      &lt;/wsf:Expression&gt; 
      &lt;wsf:Value ...&gt;
        <emph>xs:any</emph> *
      &lt;/wsf:Value&gt; 
    &lt;/wsf:Fragment&gt;
    <emph>xs:any</emph> *
  &lt;/wst:Put&gt;</eg>
    </example>
    <p>
     The following describes additional, normative constraints on the outline
     listed above:
    </p>
    <glist>
     <gitem>
      <label> <kw>[Body]</kw>/wst:Put@Dialect </label>
      <def>
       <p>
        This attribute MUST be set to http://www.w3.org/2009/02/ws-frag.
       </p>
      </def>
     </gitem>

     <gitem>
      <label> <kw>[Body]</kw>/wst:Put/wsf:Fragment/wsf:Expression </label>
      <def>
       <p>
        This element identifies which fragment in the resource this
        operation applies to.
        The value of this element MUST conform to the syntax of the language
        specified in Language attribute, otherwise a
        wsf:InvalidExpression fault MUST be generated.
       </p>
      </def>
     </gitem>

     <gitem>
      <label> <kw>[Body]</kw>/wst:Put/wsf:Fragment/wsf:Expression@Language </label>
      <def>
       <p>
        This URI indicates which expression language will be 
        used to identify the subset of the resource this operation applies
        to. A resource MUST generate a wsf:UnsupportedLanguage Fault if it 
        does not support the specified Language.
       </p>
      </def>
     </gitem>

     <gitem>
      <label> <kw>[Body]</kw>/wst:Put/wsf:Fragment/wsf:Value </label>
      <def>
       <p>
        This element contains the fragment resource representation
        corresponding to the
        subset of the resource identified by the wsf:Expression element.
       </p>
      </def>
     </gitem>
    </glist>

    <p>
     This operation MUST be performed by removing any data that corresponds
     to the Expression element of the request and inserting the specified
     Fragment data in its place.
     If the Expression identifies non-existent data
     then this operation will not have any impact on the resource.
     In other words, to insert new information into a resource the
     wst:Create operation is to be used.
    </p>

       <p>
        Note: do we really want this?  Should the client really be forced
        to know whether or not there's data there just to add something?
        What if, instead, we just allowed it to replace the existing
        data (if any)?
       </p>

    <p>
     If the resource accepts a Put request, it MUST reply with a response of
     the following form:
    </p>
    <example>
     <eg><kw>[Action]</kw>
  http://www.w3.org/2009/02/ws-tra/PutResponse

<kw>[Body]</kw>
  &lt;wst:PutResponse ...&gt;
    <emph>xs:any</emph> *
  &lt;/wst:PutResponse&gt;</eg>
    </example>

    <p>
     There are no additional constraints beyond what WS-Transfer defines.
    </p>
   </div2>

   <div2 id="Delete">
    <head>Delete</head>
    <p>
     To delete a subset of a resource a client MUST specify the WS-Fragment
     URI in the wst:Delete request.
    </p>
    <p>
     The Delete request message MUST be of the following form:
    </p>
    <example>
     <eg><kw>[Action]</kw>
  http://www.w3.org/2009/02/ws-tra/Delete

<kw>[Body]</kw>
  &lt;wst:Delete Dialect="http://www.w3.org/2009/02/ws-frag" ...&gt;
    &lt;wsf:Expression Language="<emph>xs:anyURI</emph>" ...&gt;
      <emph>xs:any</emph> *
    &lt;/wsf:Expression&gt;
    <emph>xs:any</emph> *
  &lt;/wst:Delete&gt;</eg>
    </example>
    <p>
     The following describes additional, normative constraints on the outline
     listed above:
    </p>
    <glist>
     <gitem>
      <label> <kw>[Body]</kw>/wst:Delete@Dialect </label>
      <def>
       <p>
        This attribute MUST be set to http://www.w3.org/2009/02/ws-frag.
       </p>
      </def>
     </gitem>

     <gitem>
      <label> <kw>[Body]</kw>/wst:Delete/wsf:Expression </label>
      <def>
       <p>
        This element identifies which fragment in the resource this
        operation applies to.
        The value of this element MUST conform to the syntax of the language
        specified in Language attribute, otherwise a
        wsf:InvalidExpression fault MUST be generated.
       </p>
      </def>
     </gitem>

     <gitem>
      <label> <kw>[Body]</kw>/wst:Delete/wsf:Expression@Language </label>
      <def>
       <p>
        This URI indicates which expression language will be
        used to identify the subset of the resource this operation applies
        to. A resource MUST generate a wsf:UnsupportedLanguage Fault if it
        does not support the specified Language.
       </p>
      </def>
     </gitem>
    </glist>

    <p>
     This operation MUST be performed by removing any data that corresponds
     to the Expression element of the request.
     If the Expression identifies non-existent data
     then this operation will not have any impact on the resource and
     no fault is generated.
    </p>

    <p>
     If the resource accepts a Delete request, it MUST reply with a response of
     the following form:
    </p>
    <example>
     <eg><kw>[Action]</kw>
  http://www.w3.org/2009/02/ws-tra/DeleteResponse

<kw>[Body]</kw>
  &lt;wst:DeleteResponse ...&gt;
    <emph>xs:any</emph> *
  &lt;/wst:DeleteResponse&gt;</eg>
    </example>

    <p>
     There are no additional constraints beyond what WS-Transfer defines.
    </p>
   </div2>

   <div2 id="Create">
    <head>Create</head>
    <p>
     To insert data into an existing resource a client MUST specify the
     WS-Fragment URI in the wst:Delete request.
    </p>
    <p>
     The Create request message MUST be of the following form:
    </p>
    <example>
     <eg><kw>[Action]</kw>
  http://www.w3.org/2009/02/ws-tra/Create

<kw>[Body]</kw>
  &lt;wst:Create Dialect="http://www.w3.org/2009/02/ws-frag" ...&gt;
    &lt;wsf:Fragment ...&gt;
      &lt;wsf:Expression Language="<emph>xs:anyURI</emph>" ...&gt;
        <emph>xs:any</emph> *
      &lt;/wsf:Expression&gt; 
      &lt;wsf:Value ...&gt;
        <emph>xs:any</emph> *
      &lt;/wsf:Value&gt; 
    &lt;/wsf:Fragment&gt;
    <emph>xs:any</emph> *
  &lt;/wst:Create&gt;</eg>
    </example>
    <p>
     The following describes additional, normative constraints on the outline
     listed above:
    </p>
    <glist>
     <gitem>
      <label> <kw>[Body]</kw>/wst:Create@Dialect </label>
      <def>
       <p>
        This attribute MUST be set to http://www.w3.org/2009/02/ws-frag.
       </p>
      </def>
     </gitem>

     <gitem>
      <label> <kw>[Body]</kw>/wst:Create/wsf:Fragment/wsf:Expression </label>
      <def>
       <p>
        This element identifies which fragment in the resource this
        operation applies to.
        The value of this element MUST conform to the syntax of the language
        specified in Language attribute, otherwise a
        wsf:InvalidExpression fault MUST be generated.
       </p>
       <p>
        This element identifies the fragment in the resource as it
        appears after successful processing of the current fragment.
       </p>
      </def>
     </gitem>

     <gitem>
      <label> <kw>[Body]</kw>/wst:Create/wsf:Fragment/wsf:Expression@Language </label>
      <def>
       <p>
        This URI indicates which expression language will be
        used to identify the subset of the resource this operation applies
        to. A resource MUST generate a wsf:UnsupportedLanguage Fault if it
        does not support the specified Language.
       </p>
      </def>
     </gitem>

     <gitem>
      <label> <kw>[Body]</kw>/wst:Create/wsf:Fragment/wsf:Value </label>
      <def>
       <p>
        This element encompasses the fragment corresponding to the
        subset of the resource indentified by the wsf:Expression element.
       </p>
      </def>
     </gitem>
    </glist>

    <p>
     This operation MUST be performed by inserting new data within the
     Fragment element into the resource as specified by the Expression
     element. If data is already present and would result in the resource
     being left in an invalid state then a wst:InvalidRepresentation
     fault MUST be generated.
    </p>

    <p>
     If the resource accepts a Create request, it MUST reply with a response of
     the following form:
    </p>
    <example>
     <eg><kw>[Action]</kw>
  http://www.w3.org/2009/02/ws-tra/CreateResponse

<kw>[Body]</kw>
  &lt;wst:CreateResponse ...&gt;
    &lt;wst:ResourceCreated> <emph>endpoint-reference</emph> &lt;/wst:ResourceCreated>
    <emph>xs:any</emph> *
  &lt;/wst:CreateResponse&gt;</eg>
    </example>

    <p>
     There are no additional constraints beyond what WS-Transfer defines.
    </p>
   </div2>

  </div1>

  <div1>
   <head>Examples</head>
   <div2>
    <head>Examples</head>

    <p>
     In the following examples, and Expression Language definitions,
     the following representation of a resource is used for
     informational purposes:
    </p>

    <example>
     <eg>&lt;ab:AddressBook xmlns:ab="http://example.com/address"&gt;
  &lt;ab:owner&gt;Me&lt;/owner&gt;
  &lt;ab:size&gt;2&lt;/size&gt;
  &lt;ab:contact&gt;
    &lt;ab:name&gt;Joe Brown&lt;/name&gt;
    &lt;ab:address&gt;123 Main Street&lt;/address&gt;
    &lt;ab:city&gt;AnyTown&lt;/city&gt;
    &lt;ab:state&gt;CA&lt;/state&gt;
    &lt;ab:zip&gt;90210&lt;/zip&gt;
    &lt;ab:email&gt;joe@example.com&lt;/email&gt;
  &lt;/ab:contact&gt;
  &lt;ab:contact&gt;
    &lt;ab:name&gt;Mary Smith&lt;/name&gt;
    &lt;ab:address&gt;345 South Pine&lt;/address&gt;
    &lt;ab:city&gt;AnyTown&lt;/city&gt;
    &lt;ab:state&gt;CA&lt;/state&gt;
    &lt;ab:zip&gt;90210&lt;/zip&gt;
    &lt;ab:email&gt;mary@example.com&lt;/email&gt;
  &lt;/ab:contact&gt;
&lt;/ab:AddressBook&gt;</eg>
    </example>

    <p>
     The following shows a sample SOAP envelope containing a Get 
     request:
    </p>

    <example>
     <eg>&lt;s:Envelope  
    xmlns:s="http://www.w3.org/2003/05/soap-envelope" 
    xmlns:wsa="http://www.w3.org/2005/08/addressing" 
    xmlns:ex="http://www.example.com/" &gt;
  &lt;s:Header&gt;
    &lt;wsa:To&gt;http://www.example.org/resourceABC&lt;/wsa:To&gt;
    &lt;wsa:Action&gt;
      http://www.w3.org/2009/02/ws-tra/Get
    &lt;/wsa:Action&gt;
    &lt;wsa:MessageID&gt;
      uuid:00000000-0000-0000-C000-000000000046
    &lt;/wsa:MessageID&gt;
  &lt;/s:Header&gt;
  &lt;s:Body&gt;
    &lt;wst:Get&gt;
      &lt;wsf:Expression Language=".../ws-frag/QName"&gt;
        ab:contact
      &lt;/wsf:Expression&gt;
    &lt;/wst:Get&gt;
  &lt;/s:Body&gt;
&lt;/s:Envelope&gt;</eg>
    </example>

    <p>
     The following shows the corresponding response message:
    </p>
    <example>
     <eg>&lt;s:Envelope  
    xmlns:s="http://www.w3.org/2003/05/soap-envelope" 
    xmlns:wsa="http://www.w3.org/2005/08/addressing" 
    xmlns:ex="http://www.example.com/" &gt;
  &lt;s:Header&gt;
    &lt;wsa:Action&gt;
      http://www.w3.org/2009/02/ws-tra/GetResponse
    &lt;/wsa:Action&gt;
    &lt;wsa:MessageID&gt;
      uuid:0000010e-0000-0000-C000-000000000047
    &lt;/wsa:MessageID&gt;
    &lt;wsa:RelatesTo&gt;
      uuid:00000000-0000-0000-C000-000000000046
    &lt;/wsa:RelatesTo&gt;
  &lt;/s:Header&gt;
  &lt;s:Body&gt;
    &lt;wst:GetResponse&gt;
      &lt;wsf:Value&gt;
        &lt;ab:contact&gt;
          &lt;ab:name&gt;Joe Brown&lt;/name&gt;
          &lt;ab:address&gt;123 Main Street&lt;/address&gt;
          &lt;ab:city&gt;AnyTown&lt;/city&gt;
          &lt;ab:state&gt;CA&lt;/state&gt;
          &lt;ab:zip&gt;90210&lt;/zip&gt;
          &lt;ab:email&gt;joe@example.com&lt;/email&gt;
        &lt;/ab:contact&gt;
        &lt;ab:contact&gt;
          &lt;ab:name&gt;Mary Smith&lt;/name&gt;
          &lt;ab:address&gt;345 South Pine&lt;/address&gt;
          &lt;ab:city&gt;AnyTown&lt;/city&gt;
          &lt;ab:state&gt;CA&lt;/state&gt;
          &lt;ab:zip&gt;90210&lt;/zip&gt;
          &lt;ab:email&gt;mary@example.com&lt;/email&gt;
        &lt;/ab:contact&gt;
      &lt;/wsf:Value&gt;
    &lt;/wst:GetResponse&gt;
  &lt;/s:Body&gt;
&lt;/s:Envelope&gt;</eg>
    </example>

   </div2>
  </div1>

  <div1 id="QName">
   <head>QName Expression Language</head>
   <p>
    The QName expression language is a syntax for expressions that 
    uses a single QName to reference the immediate children of the root 
    element of 
    the resource representation.  The expression MUST evaluate to zero or 
    more elements, each including the element name, any attributes 
    and its entire content.
    This language can be implemented as a precise subset of the XPath language.
   </p>

   <p>
    The QName language MUST be indicated by using the URI:
   </p>
   <example>
    <eg><loc href="http://www.w3.org/2009/02/ws-fra/QName">http://www.w3.org/2009/02/ws-fra/QName</loc></eg>
   </example>

   <div2 id="QName_Get">
    <head>Get</head>
    <p>
     When used in a Get request message, the expression identifies
     which immediate children of the root element to return. If the
     QName matches more than one element then all of those elements
     are returned.  If the QName doesn't match any element then 
     an empty Fragment element is returned.
    </p>
   </div2>

   <div2 id="QName_Put">
    <head>Put</head>
    <p>
     When used in a Put request message. the expression identifies
     which immediate children of the root element to replace. If the
     QName matches more than one element then all of those elements
     are deleted and the children Fragment elements are inserted in their
     place.
    </p>
   </div2>

   <div2 id="QName_Delete">
    <head>Delete</head>
    <p>
     When used in a Delete request message. the expression identifies
     which immediate children of the root element to remove. If the
     QName matches more than one element then all of those elements
     are deleted.  If the QName doesn't match any element then this
     operation will have no impact on the resource.
    </p>
   </div2>

   <div2 id="QName_Create">
    <head>Create</head>
    <p>
     When used in a Create request message. the children Fragment elements
     are inserted as children of the root element. If the expression
     identifies an existing element then the new elements are inserted
     after them.
    </p>
   </div2>
  </div1>

  <div1 id="XPathL1">
   <head>XPath Level 1 Expression Language</head>

   <p>
    The XPath Level 1 expression language uses an XPath to
    reference specific fragments of the resource representation. The XPath is
    logically applied to the XML representation of the resource and the 
    resulting
    node-set is the resource fragment which is the subject of the message
    containing the expression. 
    This language is useful for resources with limited XPath processing
    capability which do not need to support returning values computed from
    their resource representation.
   </p>

   <p>
    XPath Level 1 is a subset of the abbreviated relative syntax
    of XPath 1.0, and is used to identify or select a node within a resource
    representation or fragment. It is identified by the following URI:
   </p>

   <example>
    <eg>http://www.w3.org/2009/02/ws-fra/XPath-Level-1</eg>
   </example>

   <p>
    An XPath Level 1 expression is an expression whose context is:
   </p>
    
   <ulist>
    <item>
     <p>
      Context Node: the root element of the XML representation of the resource
     </p>
    </item>
    <item> <p> Context Position: 1 </p> </item>
    <item> <p> Context Size: 1 </p> </item>
    <item> <p> Variable Binding: None </p> </item>
    <item> <p> Node Tests: NameTest and the text NodeType </p> </item>
    <item> <p> Function Libraries: None </p> </item>
    <item>
     <p>
      Namespace Declarations: Any namespace declarations in-scope where the
      XPath expression appears
     </p>
    </item>
   </ulist>
   <p>
    An implementation that uses the XPath Level 1 language MUST support the
    expressions whose syntax is described by the following BNF. It MAY
    support additional expressions defined by XPath 1.0.
    The following XPath Level 1 grammar is LL(1), and the
    nonterminal productions are in angle brackets. Terminal symbols are
    either literals, or in UPPERCASE:
   </p>
   
   <example>
    <eg>(01) &lt;xpath> ::=  &lt;context> &lt;node_sequence&gt;;
(02)
(03) &lt;context> ::= '/' | &lt;&gt;;
(04)
(05) &lt;node_sequence&gt; ::=
(06)    &lt;element> &lt;optional_collection_operator> &lt;more&gt;;
(07)
(08) &lt;optional_collection_operator> ::= '[' &lt;array_location&gt; ']';
(09) &lt;optional_collection_operator> ::= &lt;&gt;;
(10)
(11) &lt;more> ::= '/' &lt;follower> | &lt;&gt;;
(12)
(13) &lt;follower&gt; ::=
(14)     &lt;attribute> | &lt;text_function> | &lt;node_sequence&gt;;
(15)
(16) &lt;element>        ::= &lt;qualified_name&gt;;
(17) &lt;attribute>      ::= '@' &lt;qualified_name&gt;;
(18)
(19) &lt;qualified_name> ::= &lt;name> &lt;qname_follower&gt;;
(20) &lt;qname_follower> ::= ':' &lt;name&gt; | &lt;&gt;;
(21) &lt;text_function&gt;  ::= "text()" ;
(22) &lt;array_location&gt; ::= NONZERO_DECIMAL_UNSIGNED_INTEGER;
(23) &lt;name&gt;           ::= XML_TOKEN;</eg>
   </example>
   
   <p>
    The terminal tokens which require further lexical
    specification are NONZERO_DECIMAL_UNSIGNED_INTEGER, whose values are in the
    subrange (1...4294967295), and XML_TOKEN whose values are equivalent to 
    those for the XML Schema type <emph>xs:token</emph>. This grammar 
    is small enough
    that it can be easily implemented in resource-constrained implementations.
   </p>
    
   <p>
    The following comments on the grammar will clarify certain
    constructs within the BNF.
   </p>
   
   <p>
    Most of the examples assume the following XML sample acting
    as a "resource" document:
   </p>
    
   <example>
    <eg>(01) &lt;a&gt;
(02)   &lt;b&gt;
(03)     &lt;c d="30"&gt; 20 &lt;/c&gt;
(04)   &lt;/b&gt;
(05)   &lt;e&gt;
(06)     &lt;f/&gt;
(07)     &lt;f/&gt;
(08)   &lt;/e&gt;
(09) &lt;/a&gt;</eg>
   </example>
   
   <p>
    The context and document root node need
    clarification. XPath Level 1 assumes that the root is the root
    node of the resource document, not the SOAP envelope or any other wrapper
    element which might contain the resource.
   </p>
   
   <p>
    Further, the default context is the root element and the
    context position is 1.
   </p>
   
   <p>
    In view of this, the / operator selects the containing root,
    and the only valid operand which can follow it is the outermost element 
    of the resource:
   </p>
    
   <example>
    <eg>(01) /a</eg>
   </example>
    
   <p>The following paths are equivalent:</p>
    
   <example>
    <eg>(01) /a/b
(02) b</eg>
   </example>
    
   <p>
    Note that because the context node is the root element, a
    relative path selects a matching child element.
   </p>
    
   <p>
    The &lt;node_sequence&gt; production provides the recursive
    behavior for the XPath:
   </p>
    
   <example>
    <eg>(01) /a/b/c
(02) b/c</eg>
   </example>
   
   <p>
    It also provides for selecting specific repeated elements
    through the &lt;optional_collection_operator&gt; production:
   </p>
    
   <example>
    <eg>(01) /a/e/f[2]</eg>
   </example>
    
   <p>
    The collection operator only takes unsigned nonzero values,
    as defined above for NONZERO_DECIMAL_UNSIGNED_INTEGER. Thus, [1] is the
    first of a repeating series of elements.
   </p>
    
   <p>
    The &lt;qualified_name&gt; production allows the XML naming
    tokens to be either namespace-qualified or unqualified:
   </p>
   
   <example>
    <eg>(01) /ns1:a/ns2:b/c</eg>
   </example>
    
   <p>
    The namespace bindings are evaluated against any namespace
    declarations that are in scope where the XPath appears within the SOAP
    message.
   </p>
    
   <p>
    NOTE: If the element name is unqualified, i.e. appears
    without a namespace prefix, then the element name MUST be matched against a
    matching element name in the resource document, regardless of namespace
    bindings that are in effect, including default bindings. This allows
    implementations to simply match element names in the majority of cases.
    If namespace bindings are significant for all elements, then qualified 
    names MUST be used.
   </p>
    
   <p>
    The &lt;follower&gt; production allows for special-casing of
    the final tokens of the XPath allowing it to end in either an attribute
    or text.
   </p>
    
   <p>
    The text() NodeTest MAY be applied as a final token to the
    selected element. This NodeTest selects any text nodes that are
    children of the selected element. If the element only contains text
    content, the
    return value will be a node-set containing a single text node.
   </p>
   
   <example>
    <eg>(01) b/c/text()</eg>
   </example>
    
   <p>
    The above expression would return a node-set containing a
    single text node with the value <emph>20 </emph>as its result. This text 
    node would then be serialized into the following XML representation:
   </p>
   
   <example>
    <eg>(01) &lt;wsf:TextNode&gt;20&lt;/wsf:TextNode&gt;</eg>
   </example>
   
   <p>
    If accessed, attributes MUST be the final token in the path
    and they MAY be namespace-qualified or unqualified names, as required:
   </p>
   
   <example>
    <eg>(01) /a/b/c/@d</eg>
   </example>
   
   <p>
    The above expression would return a node-set containing a
    single attribute node with the value <emph>d="30"</emph> as its result. 
    This attribute node would then be serialized into the following XML
    representation:
   </p>
    
   <example>
    <eg>(01) &lt;wsf:AttributeNode name="d"&gt;30&lt;/wsf:AttributeNode&gt;</eg>
   </example>
    
   <p>
    Selection of an element returns the element and its entire
    content. The path <emph>/a/b </emph>executed against the sample XML 
    returns a
    node-set containing a single element node which serializes directly:
   </p>
   
   <example>
    <eg>(01) &lt;b&gt; &lt;c d="30"&gt; 20 &lt;/c&gt; &lt;/b&gt;</eg>
   </example>
   
   <p>
    In the event that there is more than one node which would
    match the XPath, the implementation SHOULD select or return the first node
    only. This allows simple implementations to avoid the overhead of
    checking the remainder of the resource document for a possible match.
   </p>
  
   <p>
    Conformant implementations MAY supply additional functions
    and capabilities, but MUST adhere to the minimum behavior described above.
   </p>
     
   <p>
    Expressions in this language MUST NOT evaluate to more than a
    single node. The XPath Level 1 language does not support computed values. 
    Text and attribute nodes MUST be serialized using the same serialization 
    as for the XPath 1.0 language.
   </p>
  </div1>

  <div1 id="XPath10">
   <head>XPath 1.0 Expression Language</head>

   <p>
    The XPath 1.0 expression language uses an XPath to reference specific
    fragments of the resource representation. The XPath is logically 
    applied to the XML representation of the resource and the result of 
    the XPath is returned as the value for that expression. The XPath 1.0 
    language supports a
    wider set of XPath function libraries than the XPath Level 1 language.
    This language is
    useful for resources with full XPath processing capability or which 
    need to support returning values computed from their resource 
    representation.
   </p>
   
   <p>
    An XPath 1.0 expression is an expression whose context is:
   </p>
   
   <ulist>
    <item>
     <p>
      Context Node: the root element of the XML representation of the resource
     </p>
    </item>
    <item> <p>Context Position: 1</p> </item>
    <item> <p>Context Size: 1</p> </item>
    <item> <p>Variable Binding: None</p> </item>
    <item> <p>Function Libraries: Core function library</p> </item>
    <item>
     <p>
      Namespace Declarations: Any namespace declarations in-scope where 
      the XPath expression appears
     </p>
    </item>
   </ulist>
   
   <p>
    The XPath 1.0 language can
    define references to any element, attribute or value in the resource
    representation and can also be used to compute values from the resource
    representation.
   </p>
   
   <p>The XPath 1.0 language MUST be indicated by using the URI:</p>
   <example>
     <eg><loc href="http://www.w3.org/2009/02/ws-fra/XPath">http://www.w3.org/2009/02/ws-fra/XPath</loc></eg>
   </example>
    
   <p>
    Implementations that support the full XPath 1.0 language MUST
    support the XPath Level 1 language.
   </p>
    
   <p>
    Note that the expression MAY evaluate to one of four
    possible types: a node-set, a Boolean, a number or a string. The 
    latter three types are the results of evaluating a computed expression. 
    They are serialized
    by performing the following conversion and then wrapping the result in 
    the wsf:Value element:
   </p>
   <ulist>
    <item> <p>Boolean - converted to an xs:boolean</p> </item>
    <item> <p>string - convert to an xs:string</p> </item>
    <item> <p>number - convert to an xs:double</p> </item>
   </ulist>
   
   <p>
    A node-set is zero or more elements, attributes or text
    values of elements. A node-set is serialized into XML by 
    concatenating each
    node and enclosing it in the wsf:Value wrapper XML element for which 
    schema
    validation is suppressed. Element nodes in a node-set are serialized 
    directly
    into their XML representation. For attributes and text nodes in the 
    node-set,
    a wrapper element is used to enclose these values to distinguish them from
    other such nodes in the serialized result.
   </p>
   
   <p>
    Attribute nodes in XPath are represented in the following form:
   </p>
   
   <example>
    <eg>name="value"</eg>
   </example>
    
   <p>
    Serialization of an attribute node separates the name from
    the value using the following element:
   </p>

   <example>
    <eg>(01) &lt;wsf:AttributeNode name="<emph>attribute name</emph>">
(02)   <emph>attribute value</emph>
(03) &lt;/wsf:AttributeNode&gt;</eg>
   </example>
    
   <p>
    The following describes additional constraints on the outline 
    listed above:
   </p>
   
   <glist>
    <gitem>
     <label> wsf:AttributeNode </label>
     <def>
      <p>
       This element is used to serialize an attribute node in a
       node-set and MUST contain the value portion of the attribute node.
      </p>
     </def>
    </gitem>

    <gitem>
     <label> wsf:AttributeNode/@name </label>
     <def>
      <p>
       This attribute MUST be the name portion of the attribute node.
      </p>
     </def>
    </gitem>
   </glist>
   
   <p>
    Text nodes are serialized in the following form:
   </p>

   <example>
    <eg>(01) &lt;wsf:TextNode&gt;
(02)   <emph>text value</emph>
(03) &lt;/wsf:TextNode&gt;</eg>
   </example>
    
   <p>
    The following describes additional constraints on the
    outline listed above:
   </p>
    
   <p>wsf:TextNode</p>
    
   <p>
    This element is used to serialize a text node in a node-set
    and MUST contain the text value.
   </p>
    
   <p>Given the following XML as an example document.</p>
    
   <example>
    <eg>(01) &lt;a xmlns="example"&gt;
(02)   &lt;b&gt;1&lt;/b&gt;
(03)   &lt;c x="y"&gt;2&lt;/c&gt;
(04) &lt;/a&gt;</eg>
   </example>
    
   <p>
    The result of the XPath "/a/b | /a/b/text() | /a/c/@x" would
    be serialized as the following:
   </p>
   
   <example>
    <eg>(01) &lt;wsf:Value&gt;
(02)   &lt;b&gt;1&lt;/b&gt;
(03)   &lt;wsf:TextNode&gt;1&lt;/wsf:TextNode&gt;
(04)   &lt;wsf:AttributeNode name="x"&gt;y&lt;/wsf:AttributeNode&gt;
(05) &lt;/wsf:Value&gt;</eg>
   </example>
    
   <p>The nodes in the node-set MAY be serialized in any order.</p>
    
   <p>
    The WS-Fragment global element definition wsf:NodeSet can also be
    used as the wrapper element when serializing these node-sets outside of
    a WS-RT result.
   </p>
    
   <p>
    An XPath 1.0 expression MAY evaluate to multiple nodes;
    because of this the XPath 1.0 language MUST NOT be used with a "Put" or
    "Create" operation.
   </p>
  </div1>

  <div1 id="Faults">
   <head>Faults</head>
   <p>
    All fault messages defined in this specification MUST be sent
    according to the rules and usage described in
    <bibref ref="WSABinding"/>
    Section 6 for encoding SOAP 1.1 and SOAP 1.2 faults.
    The <kw>[Action]</kw> property below MUST be used for faults
    defined in this specification:
   </p>

   <example>
    <eg>http://www.w3.org/2009/02/ws-fra/fault</eg>
   </example>

   <p>
    The definitions of faults in this section use the following properties:
   </p>
    
   <p>
    <kw>[Code]</kw> The fault code.<phrase/>
    <kw>[Subcode]</kw> The fault subcode.<phrase/>
    <kw>[Reason]</kw> The English language reason element.<phrase/>
    <kw>[Detail]</kw> The detail element. If absent, no detail element 
    is defined for the fault.<phrase/>
   </p>
    
   <p>
    For SOAP 1.2, the <kw>[Code]</kw> property MUST be either
    "Sender" or "Receiver". These properties are serialized
    into text XML as follows:
   </p>
   
   <table id="soapver" border="1">
    <tbody>
     <tr>
      <th> SOAP Version </th>
      <th> Sender </th>
      <th> Receiver </th>
     </tr>
     <tr>
      <td> SOAP 1.2 </td>
      <td> s12:Sender </td>
      <td> s12:Receiver </td>
     </tr>
    </tbody>
   </table>
    
   <p>The properties above bind to a SOAP 1.2 fault as follows:</p>
   <example>
    <eg>&lt;s12:Envelope&gt;
   &lt;s12:Header&gt;
     &lt;wsa:Action&gt; <kw>[Action]</kw> &lt;/wsa:Action&gt;
     &lt;!-- Headers elided for brevity. --&gt;
   &lt;/s12:Header&gt;
   &lt;s12:Body&gt;
     &lt;s12:Fault&gt;
       &lt;s12:Code&gt;
         &lt;s12:Value&gt;<kw>[Code]</kw>&lt;/s12:Value&gt;
         &lt;s12:Subcode&gt;
           &lt;s12:Value&gt;<kw>[Subcode]</kw>&lt;/s12:Value&gt;
         &lt;/s12:Subcode&gt;
       &lt;/s12:Code&gt;
       &lt;s12:Reason&gt;
         &lt;s12:Text xml:lang="en"&gt;<kw>[Reason]</kw>&lt;/s12:Text&gt;
       &lt;/s12:Reason&gt;
       &lt;s12:Detail&gt;
         <kw>[Detail]</kw>
         ...
       &lt;/s12:Detail&gt;
     &lt;/s12:Fault&gt;
   &lt;/s12:Body&gt;
 &lt;/s12:Envelope&gt;</eg>
   </example>
    
   <p>The properties bind to a SOAP 1.1 fault as follows:</p>
   <example>
     <eg>&lt;s11:Envelope&gt;
   &lt;s11:Body&gt;
     &lt;s11:Fault&gt;
       &lt;faultcode&gt;<kw>[Subcode]</kw>&lt;/faultcode&gt;
       &lt;faultstring xml:lang="en"&gt;<kw>[Reason]</kw>&lt;/faultstring&gt;
       &lt;detail&gt;
         <kw>[Detail]</kw>
         ...
       &lt;/detail&gt;
     &lt;/s11:Fault&gt;
   &lt;/s11:Body&gt;
 &lt;/s11:Envelope&gt;</eg>
   </example>

   <div2 id="UnsupportedLanguage">
    <head>UnsupportedLanguage</head>
    <p>
     This fault is generated when a service detects an unknown Language 
     URI in a request message. 
    </p>
    <table id="Table3" border="1" cellpadding="5">
     <tbody>
      <tr>
       <th align="left"><kw>[Code]</kw></th>
       <td>s:Sender</td>
      </tr>
      <tr>
       <th align="left"><kw>[Subcode]</kw></th>
       <td>wst:UnknownLanguage</td>
      </tr>
      <tr>
       <th align="left"><kw>[Reason]</kw></th>
       <td>
        The specified Language URI is not known.
       </td>
      </tr>
      <tr>
       <th align="left"><kw>[Detail]</kw></th>
       <td><emph>The unknown URI if specified</emph></td>
      </tr>
     </tbody>
    </table>
   </div2>

  </div1>

  <div1 id="policy">
   <head>WS-Fragment Policy Assertion(s)</head>

   <p>
    An endpoint MAY indicate that it supports WS-Fragment, or its features,
    by including the WS-Fragment Policy assertion(s) within its WSDL. By
    doing so the endpoint is indicating that the corresponding WS-Fragment
    operations are supported by that endpoint even though they do not
    explicitly appear in its WSDL.
   </p>
  </div1>

  <div1 id="acks">
   <head>Acknowledgements</head>
   <p>
    This specification has been developed as a result of joint
    work with many individuals and teams, including: 
     Ashok Malhotra (Oracle Corp.),
     Asir Vedamuthu (Microsoft Corp.),
     Bob Freund (Hitachi, Ltd.),
     Doug Davis (IBM),
     Fred Maciel (Hitachi, Ltd.),
     Geoff Bullen (Microsoft Corp.),
     Gilbert Pilz (Oracle Corp.),
     Greg Carpenter (Microsoft Corp.),
     Jeff Mischkinsky (Oracle Corp.),
     Katy Warr (IBM),
     Li Li (Avaya Communications),
     Mark Little (Red Hat),
     Prasad Yendluri (Software AG),
     Ram Jeyaraman (Microsoft Corp.),
     Sreedhara Narayanaswamy (CA),
     Sumeet Vij (Software AG),
     Vikas Varma (Software AG),
     Wu Chou (Avaya Communications),
     Yves Lafon (W3C)
   </p>
  </div1>

  <div1 id="refs">
   <head>References</head>
   <blist>
    <bibl key="RFC 2119" id="Rfc2119" 
          href="http://www.ietf.org/rfc/rfc2119.txt">
     <titleref>
      Key words for use in RFCs to Indicate Requirement Levels
     </titleref>
     , S. Bradner, Harvard University, March 1997.
    </bibl>

    <bibl id="RFC3986" key="RFC 3986"
          href="http://www.ietf.org/rfc/rfc3986.txt">
     <titleref>
      Uniform Resource Identifier (URI): Generic Syntax
     </titleref>
     , T. Berners-Lee, W3C/MIT, January 2005.
    </bibl>

    <bibl key="SOAP 1.1" id="Soap11" 
          href="http://www.w3.org/TR/2000/NOTE-SOAP-20000508/">
     <titleref>
      Simple Object Access Protocol (SOAP) 1.1
     </titleref>
     , D. Box, et al, May 2000.
    </bibl>

    <bibl key="SOAP 1.2" id="Soap12" href="http://www.w3.org/TR/soap12-part1/">
     <titleref>
      SOAP Version 1.2 Part 1: Messaging Framework
     </titleref>
     , M. Gudgin, et al, June 2003.
    </bibl>

    <bibl key="WS-Addressing" id="AddrCore"
          href="http://www.w3.org/2005/08/addressing/">
     <titleref>
      W3C Recommendation, "Web Services Addressing 1.0 (WS-Addressing)"
     </titleref>
     , May 2006.
    </bibl>

    <bibl key="WS-Addressing 1.0 SOAP Binding" id="WSABinding"
          href="http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509">
     <titleref>
      W3C Recommendation, "Web Services Addressing 1.0 - SOAP Binding"
     </titleref>
     , May 2006.
    </bibl>

    <bibl key="WS-Policy" id="WsPolicy" href="http://www.w3.org/TR/ws-policy/">
     <titleref>
      W3C Recommendation, "Web Services Policy 1.5 - Framework"
     </titleref>
     , September 2007.
    </bibl>

    <bibl key="WS-Transfer" id="WsTransfer" 
          href="http://www.w3.org/2009/02/ws-tra">
     <titleref>
      W3C Working Group Draft, "Web Services Transfer"
     </titleref>
     , July 2009.
    </bibl>

    <bibl key="WSDL 1.1" id="Wsdl11" 
          href="http://www.w3.org/TR/2001/NOTE-wsdl-20010315">
     <titleref>
      Web Services Description Language (WSDL) 1.1
     </titleref>
     , E. Christensen, et al, March 2001.
    </bibl>

    <bibl key="XML Infoset" id="XMLInfoSet" 
          href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/">
     <titleref>
      J. Cowan, et al, "XML Information Set"
     </titleref>
     , February 2004.
    </bibl>

    <bibl key="XML Schema, Part 1" id="XmlSchemaPart1" 
          href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/">
     <titleref>
      XML Schema Part 1: Structures
     </titleref>
     , H. Thompson, et al, October 2004.
    </bibl>

    <bibl key="XML Schema, Part 2" id="XmlSchemaPart2" 
          href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">
     <titleref>
      XML Schema Part 2: Datatypes
     </titleref>
     , James Clark, et al, November 1999.
    </bibl>

   </blist>
  </div1>
 </body>

 <back>
  <div1 id="Appendix_I__E2_80_93_XSD">
   <head>XML Schema</head>

   <p>
    A normative copy of the XML Schema <bibref ref='XmlSchemaPart1'/>,
    <bibref ref='XmlSchemaPart2'/> description for this specification can be
    retrieved from the following address:
   </p>
    
   <example>
    <eg><loc href='http://www.w3.org/2009/02/ws-fra/fragment.xsd'>http://www.w3.org/2009/02/ws-fra/fragment.xsd</loc></eg>
   </example>
    
   <p>
    A non-normative copy of the XML schema is listed below for convenience.
   </p>

   <example>
    <eg>&lt;xs:schema 
  targetNamespace="http://www.w3.org/2009/02/ws-fra"
  xmlns:tns="http://www.w3.org/2009/02/ws-fra"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:wsa="http://www.w3.org/2005/08/addressing"
  elementFormDefault="qualified"
  blockDefault="#all" &gt;
 
&lt;/xs:schema&gt;  </eg>
   </example>
  </div1>

  <div1 id="Appendix_II__E2_80_93_WSDL">
   <head>WSDL</head>
   <p>
    A normative copy of the WSDL <bibref ref="Wsdl11"/> description
    for this specification can be retrieved from the following address:
   </p>
   <example>
    <eg><loc href="http://www.w3.org/2009/02/ws-fra/fragment.wsdl">http://www.w3.org/2009/02/ws-fra/fragment.wsdl</loc></eg>
   </example>

   <p>
    A non-normative copy of the WSDL description is listed below for
    convenience.
   </p>
   <example>
    <eg>&lt;wsdl:definitions 
 targetNamespace="http://www.w3.org/2009/02/ws-fra" 
 xmlns:tns="http://www.w3.org/2009/02/ws-fra" 
 xmlns:wsa="http://www.w3.org/2005/08/addressing"
 xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
 xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;
 
&lt;/wsdl:definitions&gt;</eg>
   </example>
  </div1>

  <div1 id="ChangeLog">
   <head>Change Log</head>
 
   <table border="1">
    <tbody>
     <tr>
      <th> Data </th>
      <th> Author </th>
      <th> Description </th>
     </tr>
     <tr>
      <td> 2009/08/01 </td>
      <td> DD </td>
      <td> Initial draft </td>
     </tr>
     <tr>
      <td> 2009/08/18 </td>
      <td> DD </td>
      <td> Added resolution of issue 
       <loc href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=7206">7206</loc>
      </td>
     </tr>
     <tr>
      <td> 2009/08/18 </td>
      <td> DD </td>
      <td> Added resolution of issue 
       <loc href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=7197">7197</loc>
      </td>
     </tr>
     <tr>
      <td> 2009/08/18 </td>
      <td> DD </td>
      <td> Added resolution of issue 
       <loc href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=7270">7270</loc>
      </td>
     </tr>
     <tr>
      <td> 2009/09/01 </td>
      <td> DD </td>
      <td> Added resolution of issue 
       <loc href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=6700">6700</loc>
      </td>
     </tr>
     <tr>
      <td> 2009/09/02 </td>
      <td> DD </td>
      <td> Added resolution of issue 
       <loc href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=6694">6694</loc>
      </td>
     </tr>
    </tbody>
   </table>
  </div1>

  <div1 id="Questions">
   <head>Open Questions and Actions</head>
   <p>
    Ram - If the expression resolves to a non-existent node should it fault
      or do nothing?
   </p>
   <p>
    Ram - should we allow for the creation with default value? This is, 
      allow 0 or 1 value elements on the Create.
   </p>
   <p>
    Ram - add an invalidExpression, NonExistentNode fault.
   </p>

   <p>
    Ram - add a general fault to indicate that a fragment message is invalid.
   </p>

   <p>
    Dug - on put - Should the client really be forced to know whether or not 
    there's data there just to add something? What if, instead, we just 
    allowed it to replace the existing data (if any)? 
   </p>

   <p>
    Ram - should we make the new bits <kw>bold</kw> so that people
    can see what's new from base Transfer?
   </p>
  </div1>
 </back>
</spec>

