<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc-ext parse-xml-in-artwork="yes" ?>
<rfc xmlns:x='http://purl.org/net/xml2rfc/ext' xmlns:ed="http://greenbytes.de/2002/rfcedit" ipr="full2026" docName="draft-ietf-webdav-ordering-protocol-03" category="exp">
  <front>
    <title>WebDAV Ordered Collections Protocol</title>
		<author initials="J." surname="Slein" fullname="Judith Slein">
			<organization abbrev="Xerox">Xerox Corporation</organization>
			<address>
        <postal>
          <street>800 Phillips Road, 105-50C</street>
          <city>Webster</city><region>NY</region><code>14580</code>
        </postal>
				<email>jslein@crt.xerox.com</email>	
			</address>
		</author>
    <author initials="J." surname="Whitehead" fullname="Jim Whitehead">
      <organization abbrev="U.C. Santa Cruz">UC Santa Cruz, Dept. of Computer Science</organization>
      <address>
        <postal>
          <street>1156 High Street</street>
          <city>Santa Cruz</city>
          <region>CA</region>
          <code>95064</code>
          <country>US</country>
        </postal>
        <email>ejw@cse.ucsc.edu</email>
      </address>
    </author>
    <author initials="J." surname="Davis" fullname="Jim Davis">
			<organization abbrev="Intelligent Markets">Intelligent Markets</organization>
			<address>
        <postal>
          <street>410 Jessie Street 6th floor</street>
          <city>San Francisco</city><region>CA</region><code>94103</code>
        </postal>
        <email>jrd3@alum.mit.edu</email>
      </address>
		</author>
		<author initials="C." surname="Fay" fullname="Chuck Fay">
			<organization abbrev="FileNet">FileNet Corporation</organization>
			<address>
        <postal>
          <street>3565 Harbor Boulevard</street>
					<city>Costa Mesa</city><region>CA</region><code>92626-1420</code>
        </postal>
        <email>cfay@filenet.com</email>
			</address>
    </author>
		<author initials="J." surname="Crawford" fullname="Jason Crawford">
			<organization abbrev="IBM">IBM Research</organization>
        <address>
				  <postal>
        	  <street>P.O. Box 704</street>
            <city>Yorktown Heights</city><region>NY</region><code>10598</code>
          </postal>
	        <email>ccjason@us.ibm.com</email>
      </address>
		</author>
    <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke">
      <organization abbrev="greenbytes">greenbytes GmbH</organization>
      <address>
        <postal>
          <street>Salzmannstrasse 152</street>
          <city>Muenster</city><region>NW</region><code>48159</code>
          <country>Germany</country>
        </postal>
        <phone>+49 251 2807760</phone>
        <facsimile>+49 251 2807761</facsimile>
        <email>julian.reschke@greenbytes.de</email>
        <uri>http://greenbytes.de/tech/webdav/</uri>
      </address>
    </author>
    <date month="September" year="2002"/>
		<workgroup>WEBDAV Working Group</workgroup>
        <abstract><t>
This specification extends the WebDAV Distributed Authoring Protocol to 
support server-side ordering of collection members. Of particular 
interest are orderings that are not based on property values, and so 
cannot be achieved using a search protocol's ordering option and cannot 
be maintained automatically by the server.  Protocol elements are 
defined to let clients specify the position in the ordering of each 
collection member, as well as the semantics governing the ordering.        
        </t>
		<t>
Distribution of this document is unlimited. Please send comments to the 
Distributed Authoring and Versioning (WebDAV) working group at
<eref target="mailto:w3c-dist-auth@w3.org">w3c-dist-auth@w3.org</eref>, which
may be joined by sending a message with subject "subscribe" to
<eref target="mailto:w3c-dist-auth-request@w3.org?subject=subscribe">w3c-dist-auth-request@w3.org</eref>.
		</t><t>
Discussions of the WEBDAV working group are archived at URL: 
<eref target="http://lists.w3.org/Archives/Public/w3c-dist-auth/">http://lists.w3.org/Archives/Public/w3c-dist-auth/</eref>.               
       	</t> 
</abstract>
	</front>

	<middle>


<section title="Notational Conventions">
<t>
Since this document describes a set of extensions to the WebDAV Distributed
Authoring Protocol <xref target="RFC2518"/>, itself an extension to the 
HTTP/1.1 protocol, the augmented BNF used here to describe protocol 
elements is exactly the same as described in Section 2.1 of HTTP <xref target="RFC2616"/>.  
Since this augmented BNF uses the basic production rules provided in 
Section 2.2 of HTTP, these rules apply to this document as well.
</t>
<t>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 
document are to be interpreted as described in <xref target="RFC2119"/>.
</t>

</section>

<section title="Introduction">
<t>
This specification builds on the collection infrastructure provided by 
the WebDAV Distributed Authoring Protocol, adding support for the 
server-side ordering of collection members. 
</t>
<t>
There are many scenarios where it is useful to impose an ordering on a 
collection at the server, such as expressing a recommended access order, 
or a revision history order.  The members of a collection might 
represent the pages of a book, which need to be presented in order if 
they are to make sense.  Or an instructor might create a collection of 
course readings, which she wants to be displayed in the order they are 
to be read.
</t>
<t>
Orderings may be based on property values, but this is not always the 
case.  The resources in the collection may not have properties that can 
be used to support the desired ordering. Orderings based on properties 
can be obtained using a search protocol's ordering option, but orderings 
not based on properties cannot.  These orderings generally need to be 
maintained by a human user.  
</t>
<t>
The ordering protocol defined here focuses on support for such human-maintained
orderings.  Its protocol elements allow clients to specify 
the position of each collection member in the collection's ordering, as 
well as the semantics governing the ordering.  The protocol is designed 
to allow support to be added in the future for orderings that are 
maintained automatically by the server.
</t>
<t>
The remainder of this document is structured as follows: <xref target="SECTION.TERMINOLOGY"/>
defines terminology that will be used throughout the specification.  
<xref target="SECTION.OVERVIEW"/> provides an overview of ordered collections.
<xref target="SECTION.CREATING"/>
describes how to create an ordered collection, and
<xref target="SECTION.SETTING"/> discusses 
how to set a member's position in the ordering of a collection.
<xref target="SECTION.CHANGING"/> explains how to change a collection ordering.
<xref target="SECTION.LISTING"/> discusses 
listing the members of an ordered collection.  <xref target="SECTION.HEADERS"/>
through <xref target="SECTION.ELEMENTS"/> 
define the headers, properties, and XML elements needed to support 
ordered collections.  <xref target="SECTION.DISCOVERY"/> describes capability discovery.  
<xref target="SECTION.SECURITY"/> through <xref target="SECTION.IANA"/> discuss security, internationalization, and IANA 
considerations.  The remaining sections provide supporting information.
</t>
</section>


<section title="Terminology" anchor="SECTION.TERMINOLOGY">
<t>
The terminology used here follows that in the <xref target="RFC2518"/>.
Definitions of the terms resource, Uniform Resource Identifier (URI), and
Uniform Resource Locator (URL) are provided in <xref target="RFC2396"/>.  
</t>
<t>Ordered Collection
  <list>
    <t>
     A collection for which the results from a PROPFIND request are 
     guaranteed to be in the order specified for that collection
		</t>
  </list>
</t>
<t>Unordered Collection
  <list>
    <t>
     A collection for which the client cannot depend on the 
     repeatability of the ordering of results from a PROPFIND request
		</t>
  </list>
</t>
<t>Client-Maintained Ordering
  <list>
    <t>
     An ordering of collection members that is maintained on the server 
     based on client requests specifying the position of each 
     collection member in the ordering
		</t>
  </list>
</t>
<t>Server-Maintained Ordering
  <list>
    <t>
     An ordering of collection members that is maintained automatically 
     by the server, based on a client's choice of ordering semantics
		</t>
	</list>
</t>
<ed:ins datetime="2002-04-07" title="2002-04-07, julian.reschke@greenbytes.de">
<t>
This document uses the terms "precondition" as "postcondition" as defined in
<xref target="RFC3253"/>. Servers should report pre-/postcondition failures
as described in section 1.6 of this document.
</t>
</ed:ins>
</section>
		
<section title="Overview of Ordered Collections" anchor="SECTION.OVERVIEW">
<t>
If a collection is unordered, the client cannot depend on the 
repeatability of the ordering of results from a PROPFIND request.  By 
specifying an ordering for a collection, a client requires the server to 
follow that ordering whenever it responds to a PROPFIND request on that 
collection.
</t>
<t>
Server-side orderings may be client-maintained or server-maintained.  
For client-maintained orderings, a client must specify the ordering 
position of each of the collection's members, either when the member is 
added to the collection (using the <xref target="HEADER_POSITION">Position header</xref>) or later (using the 
<xref target="METHOD_ORDERPATCH">ORDERPATCH</xref> method).  For server-maintained orderings, the server 
automatically positions each of the collection's members according to 
the ordering semantics.  This specification supports only client-maintained
orderings, but is designed to allow future extension to 
server-maintained orderings.
</t>
<t>
A collection that supports ordering is not required to be ordered.  It 
is up to the client to decide whether a given collection is ordered and, 
if so, to specify the semantics to be used for ordering its members.  
</t>
<t>
If a collection is ordered, each of its internal member URIs MUST be in 
the ordering exactly once, and the ordering MUST NOT include any URI 
that is not an internal member of the collection. The server is 
responsible for enforcing these constraints on orderings.  The server 
MUST remove an internal member URI from the ordering when it is removed 
from the collection. The server MUST an internal member URI to the 
ordering when it is added to the collection.
</t>
<t>
Only one ordering can be attached to any collection. Multiple orderings 
of the same resources can be achieved by creating multiple collections 
referencing those resources, and attaching a different ordering to each 
collection.
</t>
<t>
An ordering is considered to be part of the state of a collection 
resource.  Consequently, the ordering is the same no matter which URI is 
used to access the collection and is protected by locks or access 
control constraints on the collection.
</t>
<ed:ins datetime="2002-04-07" title="2002-04-07, julian.reschke@greenbytes.de">
<section title="Additional Collection properties">
<section title="DAV:orderingtype (protected)">
<t>
  Indicates whether the collection is ordered and, if so, 
  uniquely identifies the semantics of the ordering being 
  used.  May also point to an explanation of the semantics in 
  human and / or machine-readable form.  At a minimum, this 
  allows human users who add members to the collection to 
  understand where to position them in the ordering.  This 
  property cannot be set using PROPPATCH.  Its value can only 
  be set by including the Ordered header with a MKCOL request 
  or by submitting an ORDERPATCH request.
</t>
<t>
  The value DAV:unordered indicates that the collection is not ordered. That
  is, the client cannot depend on the repeatability of the ordering of results
  from a PROPFIND request. 
</t>
<t>  
  The value DAV:custom indicates that the collection is 
  ordered, but the semantics governing the ordering are not 
  being advertised.
</t>
<t>  
  If the value is a DAV:href element, it 
  contains a URI that uniquely identifies the semantics of the 
  collection's ordering.
</t>
<t>
  An ordering-aware client interacting with an ordering-unaware
  server (e.g., one that is implemented only according to 
  <xref target="RFC2518"/>) SHOULD assume that if a collection does not have the 
  DAV:orderingtype property, the collection is unordered.
</t>
<figure><artwork>
&lt;!ELEMENT orderingtype (unordered | custom | href) &gt;
&lt;!ELEMENT custom EMPTY &gt;
&lt;!ELEMENT unordered EMPTY &gt;
</artwork></figure>
</section>
</section>
</ed:ins>
</section>

<section title="Creating an Ordered Collection" anchor="SECTION.CREATING">

<section title="Overview" anchor="SECTION.CREATING.OVERVIEW">
<t>
When a collection is created, the client MAY request that it be ordered 
and specify the semantics of the ordering by using the new Ordered 
header
<ed:replace datetime="2002-09-29" ed:entered-by="julian.reschke@greenbytes.de">
<ed:ins>
(defined below)
</ed:ins>
<ed:del>
(defined in <xref target="SECTION.HEADER.ORDERED"/>)
</ed:del>
</ed:replace> with a MKCOL request.   
</t>
<t>
For collections that are ordered, the client SHOULD identify the 
semantics of the ordering with a URI in the Ordered header, although the 
client MAY simply set the header value to DAV:custom to indicate that 
the collection is ordered but the semantics of the ordering are not 
being advertised. Setting the value to a URI that identifies the 
ordering semantics<ed:ins datetime="2002-04-07" title="2002-04-07, julian.reschke@greenbytes.de"> </ed:ins>
provides the information a human user or software 
package needs to insert new collection members into the ordering 
intelligently.  Although the URI in the Ordered header MAY point to a 
resource that contains a definition of the semantics of the ordering, 
clients SHOULD NOT access that resource, in order to avoid overburdening 
its server. A value of DAV:unordered in the Ordering header indicates 
that the client wants the collection to be unordered.  If the Ordered 
header is not present, the collection will be unordered.
<ed:del  datetime="2002-04-07" title="2002-04-07, julian.reschke@greenbytes.de">
Every collection that supports ordering MUST have a DAV:orderingtype 
property (defined in <xref target="SECTION.PROPERTY.ORDERINGTYPE"/>),
which indicates whether the 
collection is ordered and, if so, identifies the semantics of the 
ordering.  The server sets the initial value of this property based on 
the value of the Ordering header in the MKCOL request, if any. If the 
Ordered header is not present, the server sets the value to 
DAV:unordered. An ordering-aware client interacting with an ordering-unaware
server (e.g., one that is implemented only according to 
<xref target="RFC2518"/>) SHOULD assume that if a collection does not have the 
DAV:orderingtype property, the collection is unordered.
</ed:del>
</t>
<ed:ins datetime="2002-09-29" title="2002-09-29, julian.reschke@greenbytes.de">
<t>
  Additional Marshalling:
  <list>
<t><figure><artwork>
Ordered = "Ordered" ":" ("DAV:unordered" | "DAV:custom" | Coded-url)
</artwork></figure></t>
<t>
A value of "DAV:unordered" indicates that the collection is not ordered. A value of 
"DAV:custom" indicates that the collection is to be ordered, but the 
semantics of the ordering is not being advertised.  Any other Coded-url 
value indicates that the collection is ordered, and identifies the 
semantics of the ordering. 
</t>
  </list>
</t>
<t>
  Additional Preconditions:
  <list>
    <t>(DAV:ordered-collections-supported): the server must support ordered
    collections where the new collection is to be created.</t>
  </list>
</t>
</ed:ins>
</section>

<section title="Example: Creating an Ordered Collection">
<figure><preamble>
&gt;&gt; Request:</preamble>
<artwork>
MKCOL /theNorth/ HTTP/1.1
Host: www.server.org
Ordered: &lt;http://www.server.org/orderings/compass.html&gt;
</artwork>
</figure>
<figure><preamble>
&gt;&gt; Response:</preamble>
<artwork>
HTTP/1.1 201 Created
</artwork>
</figure>
<t>
In this example a new, ordered collection was created.  Its 
DAV:orderingtype property has as its value the URI from the Ordered 
header, http://www.server.org/orderings/compass.html.  In this case, the 
URI identifies the semantics governing a client-maintained ordering.  As 
new members are added to the collection, clients or end users can use 
the semantics to determine where to position the new members in the 
ordering.
</t> 
</section>
</section>

<section title="Setting the Position of a Collection Member" anchor="SECTION.SETTING">

<section title="Overview">

<t>
When a new member is added to a collection with a client-maintained 
ordering (for example, with PUT, <ed:del datetime="2002-04-29" title="2002-09-29, julian.reschke@greenbytes.de">MKREF, </ed:del>COPY, or MKCOL), its position in 
the ordering can be set with the new Position header (defined in <xref target="HEADER_POSITION"/>).
The Position header allows the client to specify that an internal 
member URI should be first in the collection's ordering, last in the 
collection's ordering, immediately before some other internal member URI 
in the collection's ordering, or immediately after some other internal 
member URI in the collection's ordering.
</t>
<t>
If the Position request header is not used when adding a member to an 
ordered collection, then:
<list style="symbols">
<t>If the request is replacing an existing resource, the server MUST 
  preserve the present ordering.</t>
<t>If the request is adding a new internal member URI to the collection, 
  the server MUST append the new member to the end of the ordering.</t>
</list>
</t>
</section> 
  
<section title="Status Codes">
<t>
409 (Conflict): Several conditions may cause this response.  The request 
may specify a position that is before or after a URI that is not an 
internal member URI of the collection, or before or after itself.  The 
request may attempt to specify the new member's position in an unordered 
collection.
</t>
</section>

<section title="Examples: Setting the Position of a Collection Member">
<figure><preamble>
&gt;&gt; Request:</preamble>
<artwork>
COPY /~whitehead/dav/spec08.html HTTP/1.1
Host: www.ics.uci.edu
Destination: http://www.xerox.com/~slein/dav/spec08.html
Position: after requirements.html      
</artwork>
</figure>
<figure><preamble>
&gt;&gt; Response:</preamble>
<artwork>
HTTP/1.1 201 Created
</artwork>
</figure>
<t>
This request resulted in the creation of a new resource at 
www.xerox.com/~slein/dav/spec08.html.  The Position header in this 
example caused the server to set its position in the ordering of the 
/~slein/dav/ collection immediately after requirements.html.
</t>
<figure><preamble>
&gt;&gt; Request:</preamble>
<artwork>
MOVE /i-d/draft-webdav-protocol-08.txt HTTP/1.1
Host: www.ics.uci.edu
Destination: http://www.ics.uci.edu/~whitehead/dav/draft-webdav-
     protocol-08.txt
Position: first
</artwork>
</figure>
<figure><preamble>
&gt;&gt; Response:</preamble>
<artwork>
HTTP/1.1 409 Conflict
</artwork>
</figure>
<t>
In this case, the server returned a 409 (Conflict) status code because 
the /~whitehead/dav/ collection is an unordered collection.  
Consequently, the server was unable to satisfy the Position header.
</t>
</section>
</section>

<section title="Changing a Collection Ordering" anchor="SECTION.CHANGING">

<section title="ORDERPATCH Method" anchor="METHOD_ORDERPATCH">
<t>
The ORDERPATCH method is used to change the ordering semantics of a 
collection or to change the order of the collection's members in the 
ordering or both.
</t>
<t>
The ORDERPATCH method changes the ordering semantics of the collection 
identified by the Request-URI, based on the value of DAV:orderingtype 
submitted in the request entity body.  
</t>
<t>
The ORDERPATCH method alters the ordering of internal member URIs in the 
collection identified by the Request-URI, based on instructions in the 
ordermember XML elements in the request entity body. The ordermember XML 
elements identify the internal member URIs whose positions are to be 
changed, and describe their new positions in the ordering.  Each new 
position can be specified as first in the ordering, last in the 
ordering, immediately before some other internal member URI, or 
immediately after some other internal member URI.  
</t>
<t>
The server MUST apply the changes in the order they appear in the order 
XML element.  The server MUST either apply all the changes or apply none 
of them.  If any error occurs during processing, all executed changes 
MUST be undone and a proper error result returned.
</t>
<t>
If an ORDERPATCH request changes the ordering semantics, but does not 
completely specify the order of the collection members, the server MUST 
assign a position in the ordering to each collection member for which a 
position was not specified.  These server-assigned positions MUST all 
follow the last one specified by the client.  The result is that all 
members for which the client specified a position are at the beginning 
of the ordering, followed by any members for which the server assigned 
positions.
</t>
<t>
If an ORDERPATCH request does not change the ordering semantics, any 
member positions not specified in the request MUST remain unchanged.
</t>

<section title="Status Codes" anchor="SECTION.STATUS">
<t>
Since multiple changes can be requested in a single ORDERPATCH request, 
if any problems are encountered, the server MUST return a 207 (Multi-Status)
response, as defined in <xref target="RFC2518"/>.
</t>
<t>
The following are examples of response codes one would expect to be used 
in a 207 (Multi-Status) response for this method: 
</t>
<t>
200 (OK): The change in ordering was successfully made.
</t>
<t>
409 (Conflict): Several conditions may cause this response.  The request 
may specify a position that is before or after a URI that is not an 
internal member URI of the collection, or before or after itself.  The 
request may attempt to set the positions of members of an unordered 
collection.
</t>
<t>
A request to reposition a collection member at the same place in the 
ordering is not an error. 
</t>
</section>

<section title="Example: Changing a Collection Ordering">
<t>
Consider a collection /coll-1/ whose DAV:orderingtype is DAV:whim, with 
bindings ordered as follows:
</t>
<figure>
<artwork>
three.html
four.html
one.html
two.html
</artwork>
</figure>

<figure><preamble>
&gt;&gt; Request:</preamble>
<artwork>
ORDERPATCH /coll-1/ HTTP/1.1
Host: www.myserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: xxx

&lt;?xml version="1.0" ?&gt;
&lt;d:order xmlns:d="DAV:"&gt;
   &lt;d:orderingtype&gt;
      &lt;d:href&gt;http://www.myserver.com/inorder.ord&lt;/d:href&gt;
   &lt;/d:orderingtype&gt;
   &lt;d:ordermember&gt;
      &lt;d:href&gt;two.html&lt;/d:href&gt;
      &lt;d:position&gt; 
         &lt;d:first/&gt;
      &lt;/d:position&gt;
   &lt;/d:ordermember&gt;
   &lt;d:ordermember&gt;
      &lt;d:href&gt;one.html&lt;/d:href&gt;
      &lt;d:position&gt;
         &lt;d:first/&gt;
      &lt;/d:position&gt;
   &lt;/d:ordermember&gt;
   &lt;d:ordermember&gt;
      &lt;d:href&gt;three.html&lt;/d:href&gt;
      &lt;d:position&gt;
         &lt;d:last/&gt;
      &lt;/d:position&gt;
   &lt;/d:ordermember&gt;
   &lt;d:ordermember&gt;
      &lt;d:href&gt;four.html&lt;/d:href&gt;
      &lt;d:position&gt;
         &lt;d:last/&gt;
      &lt;/d:position&gt;
   &lt;/d:ordermember&gt;
&lt;/d:order&gt;
</artwork></figure>

<figure><preamble>
&gt;&gt; Response:</preamble>
<artwork>
HTTP/1.1 200 OK
</artwork>
</figure>
<t>
In this example, after the request has been processed, the collection's 
ordering semantics are identified by the URI 
http://www.myserver.com/inorder.ord. The value of the collection's 
DAV:orderingtype property has been set to this URI. The request also 
contains instructions for changing the positions of the collection's 
internal member URIs in the ordering to comply with the new ordering 
semantics.  If href elements are relative URIs, as in this example, they 
are interpreted relative to the collection whose ordering is being 
modified.  The DAV:ordermember elements are required to be processed in 
the order they appear in the request.  Consequently, two.html is moved 
to the beginning of the ordering, and then one.html is moved to the 
beginning of the ordering.  Then three.html is moved to the end of the 
ordering, and finally four.html is moved to the end of the ordering. 
After the request has been processed, the collection's ordering is as 
follows:
</t>
<figure>
<artwork>
one.html
two.html
three.html
four.html
</artwork>
</figure>
</section>

<section title="Example: Failure of an ORDERPATCH Request">
<t>
Consider a collection /coll-1/ with members ordered as follows:
</t>
<figure>
<artwork>
nunavut.map
nunavut.img
baffin.map
baffin.desc
baffin.img
iqaluit.map
nunavut.desc
iqaluit.img
iqaluit.desc
</artwork>
</figure>

<figure><preamble>
&gt;&gt; Request:</preamble>
<artwork>
ORDERPATCH /coll-1/ HTTP/1.1
Host: www.nunanet.com
Content-Type: text/xml; charset="utf-8"
Content-Length: xxx

&lt;?xml version="1.0" ?&gt;
&lt;d:order xmlns:d="DAV:"&gt;
   &lt;d:ordermember&gt;
      &lt;d:href&gt;nunavut.desc&lt;/d:href&gt;
      &lt;d:position&gt; 
         &lt;d:after&gt;
            &lt;d:segment&gt;nunavut.map&lt;/d:segment&gt;
         &lt;/d:after&gt;
      &lt;/d:position&gt;
   &lt;/d:ordermember&gt;
   &lt;d:ordermember&gt;
      &lt;d:href&gt;iqaluit.map&lt;/d:href&gt;
      &lt;d:position&gt;
         &lt;d:after&gt;
            &lt;d:segment&gt;pangnirtung.img&lt;/d:segment&gt;
         &lt;/d:after&gt;
      &lt;/d:position&gt;
   &lt;/d:ordermember&gt;
&lt;/d:order&gt;
</artwork>
</figure>

<figure><preamble>
&gt;&gt; Response:</preamble>
<artwork>
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxx

&lt;?xml version="1.0" ?&gt;
&lt;d:multistatus xmlns:d="DAV:"&gt;
   &lt;d:response&gt;
      &lt;d:href&gt;http://www.nunanet.com/coll-1/nunavut.desc&lt;/d:href&gt;
      &lt;d:status&gt;HTTP/1.1 424 Failed Dependency&lt;/d:status&gt;
   &lt;/d:response&gt;
   &lt;d:response&gt;
      &lt;d:href&gt;http://www.nunanet.com/coll-1/iqaluit.map&lt;/d:href&gt;
      &lt;d:status&gt;HTTP/1.1 409 Conflict&lt;/d:status&gt;
      &lt;d:responsedescription&gt;pangnirtung.img is not a collection   
                member.&lt;/d:responsedescription&gt;
   &lt;/d:response&gt;
&lt;/d:multistatus&gt;
</artwork>
</figure>
<t>
In this example, the client attempted to position iqaluit.map after a 
URI that is not an internal member of the collection /coll-1/.  The 
server responded to this client error with a 409 (Conflict) status code.  
Because ORDERPATCH is an atomic method, the request to reposition 
nunavut.desc (which would otherwise have succeeded) failed with a 424 
(Failed Dependency) status code.
</t>
</section>
</section>
</section>

<section title="Listing the Members of an Ordered Collection" anchor="SECTION.LISTING">
<t>
A PROPFIND request is used to retrieve a listing of the members of an 
ordered collection, just as it is used to retrieve a listing of the 
members of an unordered collection.  
</t>
<t>
However, when responding to a PROPFIND on an ordered collection, the 
server MUST order the response elements according to the ordering 
defined on the collection. If a collection is unordered, the client 
cannot depend on the repeatability of the ordering of results from a 
PROPFIND request.
</t>
<t>
In a response to a PROPFIND with Depth: infinity, members of different 
collections may be interleaved.  That is, the server is not required to 
do a breadth-first traversal.  The only requirement is that the members 
of any ordered collection appear in the order defined for the 
collection.  Thus for the hierarchy illustrated in the following figure, 
where collection A is an ordered collection with the ordering B C D,
</t>
<figure>
<artwork>
                    A
                   /|\
                  / | \
                 B  C  D
                /  /|\
               E  F G H
</artwork>
</figure>
<t>
it would be acceptable for the server to return response elements in the 
order A B E C F G H D.  In this response, B, C, and D appear in the 
correct order, separated by members of other collections.  Clients can 
use a series of Depth: 1 PROPFIND requests to avoid the complexity of 
processing Depth: infinity responses based on depth-first traversals.
</t>

<section title="Example: PROPFIND on an Ordered Collection">
<t>
Suppose a PROPFIND request is submitted to /MyCollection/, which has its 
members ordered as follows.
</t>
<figure>
<artwork>
/MyCollection/
   lakehazen.html
   siorapaluk.html
   iqaluit.html
   newyork.html
</artwork></figure>




<figure><preamble>
&gt;&gt; Request:</preamble>
<artwork>
PROPFIND /MyCollection/ HTTP/1.1
Host: www.svr.com
Depth: 1
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx

&lt;?xml version="1.0" ?&gt;
&lt;D:propfind xmlns:D="DAV:"&gt;
  &lt;D:prop xmlns:J="http://www.svr.com/jsprops/"&gt;
    &lt;D:orderingtype/&gt;
    &lt;D:resourcetype/&gt;
    &lt;J:latitude/&gt;
 &lt;/D:prop&gt;
&lt;/D:propfind&gt;
</artwork></figure>





<figure><preamble>
&gt;&gt; Response:</preamble>
<artwork>
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx

&lt;?xml version="1.0" ?&gt;
&lt;D:multistatus xmlns:D="DAV:"
               xmlns:J="http:www.svr.com/jsprops/"&gt;
   &lt;D:response&gt;
      &lt;D:href&gt;http://www.svr.com/MyCollection/&lt;/D:href&gt;
      &lt;D:propstat&gt;
         &lt;D:prop&gt;
            &lt;D:orderingtype&gt;&lt;D:custom/&gt;&lt;/D:orderingtype&gt;
            &lt;D:resourcetype&gt;&lt;D:collection/&gt;&lt;/D:resourcetype&gt;
         &lt;/D:prop&gt;
         &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
      &lt;/D:propstat&gt;
      &lt;D:propstat&gt;
         &lt;D:prop&gt;
            &lt;J:latitude/&gt;
         &lt;/D:prop&gt;
         &lt;D:status&gt;HTTP/1.1 404 Not Found&lt;/D:status&gt;
      &lt;/D:propstat&gt;
   &lt;/D:response&gt;
   &lt;D:response&gt;
      &lt;D:href&gt;http://www.svr.com/MyCollection/lakehazen.html&lt;/D:href&gt;
      &lt;D:propstat&gt;
         &lt;D:prop&gt;
            &lt;D:resourcetype/&gt;
            &lt;J:latitude&gt;82N&lt;/J:latitude&gt;
         &lt;/D:prop&gt;
         &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
      &lt;/D:propstat&gt;
      &lt;D:propstat&gt;
         &lt;D:prop&gt;
            &lt;D:orderingtype/&gt;
         &lt;/D:prop&gt;
         &lt;D:status&gt;HTTP/1.1 404 Not Found&lt;/D:status&gt;
      &lt;/D:propstat&gt;
   &lt;/D:response&gt;
   &lt;D:response&gt;
      &lt;D:href
      &gt;http://www.svr.com/MyCollection/siorapaluk.html&lt;/D:href&gt;
      &lt;D:propstat&gt;
         &lt;D:prop&gt;
            &lt;D:resourcetype/&gt;
            &lt;J:latitude&gt;78N&lt;/J:latitude&gt;
         &lt;/D:prop&gt;
         &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
      &lt;/D:propstat&gt;
      &lt;D:propstat&gt;
         &lt;D:prop&gt;
            &lt;D:orderingtype/&gt;
         &lt;/D:prop&gt;
         &lt;D:status&gt;HTTP/1.1 404 Not Found&lt;/D:status&gt;
      &lt;/D:propstat&gt;
   &lt;/D:response&gt;
   &lt;D:response&gt;
      &lt;D:href&gt;http://www.svr.com/MyCollection/iqaluit.html&lt;/D:href&gt;
      &lt;D:propstat&gt;
         &lt;D:prop&gt;
            &lt;D:resourcetype/&gt;
            &lt;J:latitude&gt;62N&lt;/J:latitude&gt;
         &lt;/D:prop&gt;
         &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
      &lt;/D:propstat&gt;
      &lt;D:propstat&gt;
         &lt;D:prop&gt;
            &lt;D:orderingtype/&gt;
         &lt;/D:prop&gt;
         &lt;D:status&gt;HTTP/1.1 404 Not Found&lt;/D:status&gt;
      &lt;/D:propstat&gt;
   &lt;/D:response&gt;
   &lt;D:response&gt;
      &lt;D:href&gt;http://www.svr.com/MyCollection/newyork.html&lt;/D:href&gt;
      &lt;D:propstat&gt;
         &lt;D:prop&gt;
            &lt;D:resourcetype/&gt;
            &lt;J:latitude&gt;45N&lt;/J:latitude&gt;
         &lt;/D:prop&gt;
         &lt;D:status&gt;HTTP/1.1 200 OK&lt;/D:status&gt;
      &lt;D:propstat&gt;
         &lt;D:prop&gt;
            &lt;D:orderingtype/&gt;
         &lt;/D:prop&gt;
         &lt;D:status&gt;HTTP/1.1 404 Not Found&lt;/D:status&gt;
      &lt;/D:propstat&gt;
      &lt;/D:propstat&gt;
   &lt;/D:response&gt;
&lt;/D:multistatus&gt;
</artwork>
</figure>


<t>
In this example, the server responded with a list of the collection 
members in the order defined for the collection.  
</t>

</section>
</section>

<section title="Headers" anchor="SECTION.HEADERS">
<ed:del datetime="2002-09-29" title="2002-09-29, julian.reschke@greenbytes.de">
<section title="Ordered Entity Header" anchor="SECTION.HEADER.ORDERED">
<figure><artwork>
Ordered = "Ordered" ":" ("DAV:unordered" | "DAV:custom" | Coded-url)
</artwork></figure>
<t>
The Ordered header may be used with MKCOL to request that the new 
collection be ordered and to specify its ordering semantics.  A value of 
"DAV:unordered" indicates that the collection is not ordered. A value of 
"DAV:custom" indicates that the collection is to be ordered, but the 
semantics of the ordering is not being advertised.  Any other Coded-url 
value indicates that the collection is ordered, and identifies the 
semantics of the ordering. 
</t>
</section>
</ed:del>

<section title="Position Request Header" anchor="HEADER_POSITION">
<figure><artwork>
Position = "Position" ":" ("first" | "last" | 
                           (("before" | "after") segment))
</artwork></figure>
<t>
segment is defined in Section 3.3 of <xref target="RFC2396"/>.
</t>
<t>
The Position header may be used with any method that adds a member to an 
ordered collection, to tell the server where in the collection ordering 
to position the new member being added to the collection.  Examples of 
methods that add members to collections are BIND, PUT, COPY, MOVE, etc.
</t>
<t>
The segment is interpreted relative to the collection to which the new 
member is being added. 
</t>
<t>
The server MUST insert the new member into the ordering at the location 
specified in the Position header, if one is present (and if the 
collection is ordered). 
</t>
<t>
The "first" keyword indicates the new member is put in the beginning 
position in the collection's ordering, while "last" indicates the new 
member is put in the final position in the collection's ordering.  The 
"before" keyword indicates the new member is added to the collection's 
ordering immediately prior to the position of the member identified in 
the segment. Likewise, the "after" keyword indicates the new member is 
added to the collection's ordering immediately following the position of 
the member identified in the segment.
</t>
<t>
If the request is replacing an existing resource, and the Position 
header is present, the server MUST remove the internal member URI from 
its previous position, and then insert it at the requested position.
</t>
<t>
If an attempt is made to use the Position header on a collection that is 
unordered, the server MUST fail the request with a 409 (Conflict) status 
code.
</t>

</section>
</section>

<ed:del datetime="2002-04-07" title="2002-04-07, julian.reschke@greenbytes.de">
<section title="Properties">

<section title="orderingtype Property" anchor="SECTION.PROPERTY.ORDERINGTYPE">
<t>
<list style="hanging">
<t hangText="Name:">orderingtype</t>
<t hangText="Namespace:">DAV:</t>
<t hangText="Purpose:">
		    Indicates whether the collection is ordered and, if so, 
            uniquely identifies the semantics of the ordering being 
            used.  May also point to an explanation of the semantics in 
            human and / or machine-readable form.  At a minimum, this 
            allows human users who add members to the collection to 
            understand where to position them in the ordering.  This 
            property cannot be set using PROPPATCH.  Its value can only 
            be set by including the Ordered header with a MKCOL request 
            or by submitting an ORDERPATCH request.</t>
<t hangText="Value:">
		    The value unordered indicates that the collection is not 
            ordered. The value custom indicates that the collection is 
            ordered, but the semantics governing the ordering are not 
            being advertised.  If the value is an href element, it 
            contains a URI that uniquely identifies the semantics of the 
            collection's ordering.</t>
</list>

<figure><artwork>
&lt;!ELEMENT orderingtype (unordered | custom | href) &gt;
</artwork></figure>
</t>
</section>
</section>
</ed:del>

<section title="XML Elements" anchor="SECTION.ELEMENTS">

<ed:del  datetime="2002-04-07" title="2002-04-07, julian.reschke@greenbytes.de">
<section title="unordered XML Element" anchor="ELEMENT_unordered">
<t>
<list style="hanging">
<t hangText="Name:">unordered</t>
<t hangText="Namespace:">DAV:</t>
<t hangText="Purpose:">
		    A value of the DAV:orderingtype property that indicates that 
            the collection is not ordered.  That is, the client cannot 
            depend on the repeatability of the ordering of results from 
            a PROPFIND request.</t>
</list>

<figure><artwork>
&lt;!ELEMENT unordered EMPTY &gt;
</artwork></figure>
</t>
</section>

<section title="custom XML Element" anchor="ELEMENT_custom">
<t>
<list style="hanging">
<t hangText="Name:">custom</t>
<t hangText="Namespace:">DAV:</t>
<t hangText="Purpose:">
			A value of the DAV:orderingtype property that indicates that 
            the collection is ordered, but the semantics of the ordering 
            are not being advertised.</t> 
</list>

<figure><artwork>
&lt;!ELEMENT custom EMPTY &gt;
</artwork></figure>
</t>
</section>
</ed:del>

<section title="order XML Element" anchor="ELEMENT_order">
<t>
<list style="hanging">
<t hangText="Name:">order</t>
<t hangText="Namespace:">DAV:</t>
<t hangText="Purpose:">
			For use with the new ORDERPATCH method.  Describes a change 
            to be made in a collection's ordering semantics or in the 
            positions of its members in the ordering or both.</t>
<t hangText="Value:">
	 	    An optional identifier of an ordering semantics for the 
            collection, followed by a list of changes to be made in the 
            positions of the members in the collection's ordering.</t>
</list>

<figure><artwork>
&lt;!ELEMENT order (orderingtype?, ordermember*) &gt;
</artwork></figure>
</t>
</section>

<section title="ordermember XML Element" anchor="ELEMENT_ordermember">
<t>
<list style="hanging">
<t hangText="Name:">ordermember</t>
<t hangText="Namespace:">DAV:</t>
<t hangText="Purpose:">
			Occurs in the order XML element, and describes the new 
            position of a single internal member URI in the collection's 
            ordering.</t>
<t hangText="Value:">
			An href containing a member's path segment, and a 
            description of its new position in the ordering.  The href 
            XML element is defined in <xref target="RFC2518"/>, Section 11.3.</t>
</list>

<figure><artwork>
&lt;!ELEMENT ordermember (href, position) &gt;
</artwork></figure>
</t>
</section>

<section title="position XML Element" anchor="ELEMENT_position">
<t>
<list style="hanging">
<t hangText="Name:">position</t>
<t hangText="Namespace:">DAV:</t>
<t hangText="Purpose:">
			Occurs in the ordermember XML element.  Describes the new 
            position in a collection's ordering of one of the members it 
            contains.</t>
<t hangText="Value:">
			The new position can be described as first in the 
            collection's ordering, last in the collection's ordering, 
            immediately before some other collection member, or 
            immediately after some other collection member.</t>
</list>

<figure><artwork>
&lt;!ELEMENT position (first | last | before | after)&gt;
</artwork></figure>
</t>
</section>

<section title="first XML Element" anchor="ELEMENT_first">
<t>
<list style="hanging">
<t hangText="Name:">first</t>
<t hangText="Namespace:">DAV:</t>
<t hangText="Purpose:">
			Occurs in the position XML element.  Specifies that the 
            member should be placed first in the collection's ordering.</t>
</list>

<figure><artwork>
&lt;!ELEMENT first EMPTY &gt;
</artwork></figure>
</t>
</section>

<section title="last XML Element" anchor="ELEMENT_last">
<t>
<list style="hanging">
<t hangText="Name:">last</t>
<t hangText="Namespace:">DAV:</t>
<t hangText="Purpose:">
			Occurs in the position XML element.  Specifies that the 
            member should be placed last in the collection's ordering.</t>
</list>

<figure><artwork>
&lt;!ELEMENT last EMPTY &gt;
</artwork></figure>
</t>
</section>

<section title="before XML Element" anchor="ELEMENT_before">
<t>
<list style="hanging">
<t hangText="Name:">before</t>
<t hangText="Namespace:">DAV:</t>
<t hangText="Purpose:">
			Occurs in the position XML element.  Specifies that the 
            member should be placed immediately before the member in the 
            enclosed segment XML element in the collection's ordering.</t>
<t hangText="Value:">
			URI (relative to the parent collection) of the member 
            it precedes in the ordering</t>
</list>

<figure><artwork>
&lt;!ELEMENT before segment &gt;
</artwork></figure>
</t>
</section>

<section title="after XML Element" anchor="ELEMENT_after">
<t>
<list style="hanging">
<t hangText="Name:">after</t>
<t hangText="Namespace:">DAV:</t>
<t hangText="Purpose:">
			Occurs in the position XML element.  Specifies that the 
            member should be placed immediately after the member in the 
            enclosed segment XML element in the collection's ordering.</t>
<t hangText="Value:">
			URI (relative to the parent collection) of the member 
            it follows in the ordering</t>
</list>

<figure><artwork>
&lt;!ELEMENT after segment &gt;
</artwork></figure>
</t>
</section>

<section title="segment XML Element" anchor="ELEMENT_segment">
<t>
<list style="hanging">
<t hangText="Name:">segment</t>
<t hangText="Namespace:">DAV:</t>
<t hangText="Purpose:">
			Identifies a member of a collection, used in the DAV:before 
            and DAV:after elements, to define one member's position in 
            a collection ordering relative to another member of the 
            collection.</t>
<t hangText="Value:">
			segment   ; as defined in section 3.3 of <xref target="RFC2396"/>.</t>
</list>

<figure><artwork>
&lt;!ELEMENT segment (#PCDATA)&gt;
</artwork></figure>
</t>
</section>

</section>


<section title="Capability Discovery" anchor="SECTION.DISCOVERY">
<t>
Sections 9.1 and 15 of <xref target="RFC2518"/> describe the use of compliance classes 
with the DAV header in responses to OPTIONS, to indicate which parts of 
the Web Distributed Authoring protocols the resource supports. This 
specification defines an OPTIONAL extension to <xref target="RFC2518"/>.  It defines a 
new compliance class, called orderedcoll, for use with the DAV header in 
responses to OPTIONS requests.  If a collection resource does support 
ordering, its response to an OPTIONS request may indicate that it does, 
by listing the new ORDERPATCH method as one it supports, and by listing 
the new orderedcoll compliance class in the DAV header.
</t>
<t>
When responding to an OPTIONS request, only a collection or a null 
resource can include orderedcoll in the value of the DAV header.  By 
including orderedcoll, the resource indicates that its internal member 
URIs can be ordered.  It implies nothing about whether any collections 
identified by its internal member URIs can be ordered.
</t>

<t>
Furthermore, RFC 3253 <xref target="RFC3253"/> introduces the live properties
DAV:supported-method-set (section 3.1.3) and DAV:supported-live-property-set
(section 3.1.4). Servers MUST support these properties as defined in RFC 3253.
</t>


<section title="Example: Using OPTIONS for the Discovery of Support for Ordering">

<figure><preamble>
&gt;&gt; Request:</preamble>
<artwork>
OPTIONS /somecollection/ HTTP/1.1
HOST: somehost.org
</artwork></figure>

<figure><preamble>
&gt;&gt; Response:</preamble>
<artwork>
HTTP/1.1 200 OK
Date: Tue, 20 Jan 1998 20:52:29 GMT
Connection: close
Accept-Ranges: none
Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, COPY, MOVE,
MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, ORDERPATCH
DAV: 1, 2, orderedcoll
</artwork></figure>
<t>
The DAV header in the response indicates that the resource 
/somecollection/ is level 1 and level 2 compliant, as defined in 
<xref target="RFC2518"/>.  In addition, /somecollection/ supports ordering.  The Allow 
header indicates that ORDERPATCH requests can be submitted to 
/somecollection/.
</t>
</section>


<section title="Example: Using Live Properties for the Discovery of Ordering">
<figure><preamble>
&gt;&gt; Request:</preamble>
<artwork>PROPFIND /somecollection HTTP/1.1
Host: somehost.org
Depth: 0
Content-Type: text/xml; charset="utf-8"
Content-Length: xxx

&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
&lt;propfind xmlns="DAV:"&gt;
  &lt;prop&gt;
    &lt;supported-live-property-set/&gt;
    &lt;supported-method-set/&gt;
  &lt;/prop&gt;
&lt;/propfind&gt;
</artwork></figure>
<figure><preamble>
&gt;&gt; Response:</preamble>
<artwork>HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxx

&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;multistatus xmlns="DAV:"&gt;
  &lt;response&gt;
    &lt;href&gt;http://somehost.org/somecollection&lt;/href&gt;
    &lt;propstat&gt;
      &lt;prop&gt;
        &lt;supported-live-property-set&gt;
          &lt;supported-live-property&gt;
            &lt;prop&gt;&lt;orderingtype/&gt;&lt;/prop&gt;
          &lt;/supported-live-property&gt;
          ... other live properties omitted for brevity ...
        &lt;/supported-live-property-set&gt;
        &lt;supported-method-set&gt;
          &lt;supported-method name="COPY" /&gt;
          &lt;supported-method name="DELETE" /&gt;
          &lt;supported-method name="GET" /&gt;
          &lt;supported-method name="HEAD" /&gt;
          &lt;supported-method name="LOCK" /&gt;
          &lt;supported-method name="MKCOL" /&gt;
          &lt;supported-method name="MOVE" /&gt;
          &lt;supported-method name="OPTIONS" /&gt;
          &lt;supported-method name="ORDERPATCH" /&gt;
          &lt;supported-method name="POST" /&gt;
          &lt;supported-method name="PROPFIND" /&gt;
          &lt;supported-method name="PROPPATCH" /&gt;
          &lt;supported-method name="PUT" /&gt;
          &lt;supported-method name="TRACE" /&gt;
          &lt;supported-method name="UNLOCK" /&gt;
        &lt;/supported-method-set&gt;
      &lt;/prop&gt;
      &lt;status&gt;HTTP/1.1 200 OK&lt;/status&gt;
    &lt;/propstat&gt;
  &lt;/response&gt;
&lt;/multistatus&gt;
</artwork></figure>
<t>
  Note that actual responses MUST contain a complete list of supported live
  properties.
</t>
</section>


</section>

<section title="Security Considerations" anchor="SECTION.SECURITY">
<t>
This section is provided to make WebDAV applications aware of the 
security implications of this protocol. 
</t>
<t>
All of the security considerations of HTTP/1.1 and the WebDAV 
Distributed Authoring Protocol specification also apply to this protocol 
specification.  In addition, ordered collections introduce a new 
security concern.  This issue is detailed here.
</t>

<section title="Denial of Service and DAV:orderingtype">
<t>
There may be some risk of denial of service at sites that are advertised 
in the DAV:orderingtype property of collections.  However, it is 
anticipated that widely-deployed applications will use hard-coded values 
for frequently-used ordering semantics rather than looking up the 
semantics at the location specified by DAV:orderingtype.  This risk will 
be further reduced if clients observe the recommendation of <xref target="SECTION.CREATING.OVERVIEW"/> 
that they not send requests to the URI in DAV:orderingtype.
</t>
</section>
</section>

<section title="Internationalization Considerations">
<t>
This specification follows the practices of <xref target="RFC2518"/> in encoding all 
human-readable content using <xref target="XML"/> and in the treatment of names.  
Consequently, this specification complies with the IETF Character Set 
Policy <xref target="RFC2277"/>.
</t>
<t>
WebDAV applications MUST support the character set tagging, character 
set encoding, and the language tagging functionality of the XML 
specification.  This constraint ensures that the human-readable content 
of this specification complies with <xref target="RFC2277"/>.
</t>
<t>
As in <xref target="RFC2518"/>, names in this specification fall into three categories: 
names of protocol elements such as methods and headers, names of XML 
elements, and names of properties.  Naming of protocol elements follows 
the precedent of HTTP, using English names encoded in USASCII for 
methods and headers.  The names of XML elements used in this 
specification are English names encoded in UTF-8.
</t>
<t>
For error reporting, <xref target="RFC2518"/> follows the convention of HTTP/1.1 status 
codes, including with each status code a short, English description of 
the code (e.g., 423 Locked).  Internationalized applications will ignore 
this message, and display an appropriate message in the user's language 
and character set.
</t>
<t>
This specification introduces no new strings that are displayed to users 
as part of normal, error-free operation of the protocol.
</t>
<t>
For rationales for these decisions and advice for application 
implementors, see <xref target="RFC2518"/>.
</t>
</section>


<section title="IANA Considerations" anchor="SECTION.IANA">
<t>
This document uses the namespaces defined by <xref target="RFC2518"/> for properties and 
XML elements.  All other IANA considerations mentioned in <xref target="RFC2518"/> also 
apply to this document.
</t>
</section>

<section title="Copyright">
<t>
To be supplied by the RFC Editor.
</t>
</section>

<section title="Intellectual Property">
<t>
To be supplied by the RFC Editor.
</t>
</section>

<section title="Acknowledgements">
<t>
This draft has benefited from thoughtful discussion by Jim Amsden, Steve 
Carter, Tyson Chihaya, <ed:ins datetime="2002-09-28" title="2002-08-29, julian.reschke@greenbytes.de">Geoff Clemm, </ed:ins>Ken Coar, Ellis Cohen, Bruce Cragun, Spencer 
Dawkins, Mark Day, Rajiv Dulepet, David Durand, Roy Fielding, Yaron 
Goland, Fred Hitt, Alex Hopmann, Marcus Jager, Chris Kaler, Manoj 
Kasichainula, Rohit Khare, Daniel LaLiberte, Lisa Lippert, Steve Martin, 
Larry Masinter, Jeff McAffer, Surendra Koduru Reddy, Max Rible, Sam 
Ruby, Bradley Sergeant, Nick Shelness, John Stracke, John Tigue, John 
Turner, Kevin Wiggen, and others.
</t>
</section>

    </middle>
	<back>

<references title="Normative References">
	
<reference anchor="RFC2277">

<front>
<title abbrev="Charset Policy">IETF Policy on Character Sets and Languages</title>
<author initials="H.T." surname="Alvestrand" fullname="Harald Tveit Alvestrand">
<organization>UNINETT</organization>
<address>
<postal>
<street>P.O.Box 6883 Elgeseter</street>
<street>N-7002 TRONDHEIM</street>
<country>NORWAY</country></postal>
<phone>+47 73 59 70 94</phone>
<email>Harald.T.Alvestrand@uninett.no</email></address></author>
<date month="January" year="1998"/>
<area>Applications</area>
<keyword>Internet Engineering Task Force</keyword>
<keyword>character encoding</keyword></front>

<seriesInfo name="BCP" value="18"/>
<seriesInfo name="RFC" value="2277"/>
</reference>

<reference anchor="RFC2396">

<front>
<title abbrev="URI Generic Syntax">Uniform Resource Identifiers (URI): Generic Syntax</title>
<author initials="T." surname="Berners-Lee" fullname="Tim Berners-Lee">
<organization>World Wide Web Consortium</organization>
<address>
<postal>
<street>MIT Laboratory for Computer Science, NE43-356</street>
<street>545 Technology Square</street>
<city>Cambridge</city>
<region>MA</region>
<code>02139</code></postal>
<facsimile>+1(617)258-8682</facsimile>
<email>timbl@w3.org</email></address></author>
<author initials="R.T." surname="Fielding" fullname="Roy T. Fielding">
<organization>Department of Information and Computer Science</organization>
<address>
<postal>
<street>University of California, Irvine</street>
<city>Irvine</city>
<region>CA</region>
<code>92697-3425</code></postal>
<facsimile>+1(949)824-1715</facsimile>
<email>fielding@ics.uci.edu</email></address></author>
<author initials="L." surname="Masinter" fullname="Larry Masinter">
<organization>Xerox PARC</organization>
<address>
<postal>
<street>3333 Coyote Hill Road</street>
<city>Palo Alto</city>
<region>CA</region>
<code>94034</code></postal>
<facsimile>+1(415)812-4333</facsimile>
<email>masinter@parc.xerox.com</email></address></author>
<date month="August" year="1998"/>
<area>Applications</area>
<keyword>uniform resource</keyword>
<keyword>URI</keyword>
<abstract>
<t>

   A Uniform Resource Identifier (URI) is a compact string of characters

   for identifying an abstract or physical resource.  This document

   defines the generic syntax of URI, including both absolute and

   relative forms, and guidelines for their use; it revises and replaces

   the generic definitions in RFC 1738 and RFC 1808.
</t>
<t>



   This document defines a grammar that is a superset of all valid URI,

   such that an implementation can parse the common components of a URI

   reference without knowing the scheme-specific requirements of every

   possible identifier type.  This document does not define a generative

   grammar for URI; that task will be performed by the individual

   specifications of each URI scheme.
</t></abstract>
<note title="IESG Note">
<t>

   This paper describes a "superset" of operations that can be applied

   to URI.  It consists of both a grammar and a description of basic

   functionality for URI.  To understand what is a valid URI, both the

   grammar and the associated description have to be studied.  Some of

   the functionality described is not applicable to all URI schemes, and

   some operations are only possible when certain media types are

   retrieved using the URI, regardless of the scheme used.
</t></note></front>

<seriesInfo name="RFC" value="2396"/>
</reference>

<reference anchor="RFC2119">

<front>
<title abbrev="RFC Key Words">Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials="S." surname="Bradner" fullname="Scott Bradner">
<organization>Harvard University</organization>
<address>
<postal>
<street>1350 Mass. Ave.</street>
<street>Cambridge</street>
<street>MA 02138</street></postal>
<phone>- +1 617 495 3864</phone>
<email>-</email></address></author>
<date month="March" year="1997"/>
<area>General</area>
<keyword>keyword</keyword>
<abstract>
<t>
   In many standards track documents several words are used to signify
   the requirements in the specification.  These words are often
   capitalized.  This document defines these words as they should be
   interpreted in IETF documents.  Authors who follow these guidelines
   should incorporate this phrase near the beginning of their document:

<list>
<t>
      The key words "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.
</t></list></t>
<t>
   Note that the force of these words is modified by the requirement
   level of the document in which they are used.
</t></abstract></front>

<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="2119"/>
</reference>

<reference anchor="XML" target="http://www.w3.org/TR/1998/REC-xml-19980210">
<front>
<title>Extensible Markup Language (XML) 1.0</title>
<author>
<organization abbrev="W3C">World Wide Web Consortium</organization>
<address>
<postal>
<street>MIT Laboratory for Computer Science</street>
<street>545 Technology Square</street>
<city>Cambridge</city> <region>MA</region> <code>02139</code>
<country>US</country>
</postal>
<phone>+ 1 617 253 2613</phone>
<facsimile>+ 1 617 258 5999</facsimile>
<email>timbl@w3.org</email>
<uri>http://www.w3c.org</uri>
</address>
</author>
<date month="February" year="1998"/>
</front>
<seriesInfo name="W3C" value="XML"/>
</reference>

<reference anchor="RFC2616">

<front>
<title>Hypertext Transfer Protocol -- HTTP/1.1</title>
<author initials="R." surname="Fielding" fullname="R. Fielding">
  <organization>University of California, Irvine</organization>
  <address><email>fielding@ics.uci.edu</email></address>
</author>
<author initials="J." surname="Gettys" fullname="J. Gettys">
  <organization>W3C</organization>
  <address><email>jg@w3.org</email></address>
</author>
<author initials="J." surname="Mogul" fullname="J. Mogul">
  <organization>Compaq Computer Corporation</organization>
  <address><email>mogul@wrl.dec.com</email></address>
</author>
<author initials="H." surname="Frystyk" fullname="H. Frystyk">
  <organization>MIT Laboratory for Computer Science</organization>
  <address><email>frystyk@w3.org</email></address>
</author>
<author initials="L." surname="Masinter" fullname="L. Masinter">
  <organization>Xerox Corporation</organization>
  <address><email>masinter@parc.xerox.com</email></address>
</author>
<author initials="P." surname="Leach" fullname="P. Leach">
  <organization>Microsoft Corporation</organization>
  <address><email>paulle@microsoft.com</email></address>
</author>
<author initials="T." surname="Berners-Lee" fullname="T. Berners-Lee">
  <organization>W3C</organization>
  <address><email>timbl@w3.org</email></address>
</author>
<date month="June" year="1999"/></front>

<seriesInfo name="RFC" value="2616"/>
</reference>

<reference anchor="RFC2518">

<front>
<title>HTTP Extensions for Distributed Authoring -- WEBDAV</title>
<author initials="Y." surname="Goland" fullname="Y. Goland">
  <organization>Microsoft Corporation</organization>
  <address><email>yarong@microsoft.com</email></address>
</author>
<author initials="E." surname="Whitehead" fullname="E. J. Whitehead, Jr.">
  <organization abbrev="UC Irvine">Dept. Of Information and Computer Science, University of California, Irvine</organization>
	<address><email>ejw@ics.uci.edu</email></address>
</author>
<author initials="A." surname="Faizi" fullname="A. Faizi">
  <organization abbrev="Netscape">Netscape</organization>
  <address><email>asad@netscape.com</email></address>
</author>
<author initials="S.R." surname="Carter" fullname="S. R. Carter">
  <organization abbrev="Novell">Novell</organization>
  <address><email>srcarter@novell.com</email></address>
</author>
<author initials="D." surname="Jensen" fullname="D. Jensen">
  <organization abbrev="Novell">Novell</organization>
  <address><email>dcjensen@novell.com</email></address>
</author>
<date month="February" year="1999"/></front>

<seriesInfo name="RFC" value="2518"/>
</reference>

<reference anchor="RFC3253">

<front>
<title>Versioning Extensions to WebDAV</title>
<author initials="G." surname="Clemm" fullname="G. Clemm">
  <organization>Rational Software</organization>
  <address><email>geoffrey.clemm@rational.com</email></address>
</author>
<author initials="J." surname="Amsden" fullname="J. Amsden">
  <organization>IBM</organization>
  <address><email>jamsden@us.ibm.com</email></address>
</author>
<author initials="T." surname="Ellison" fullname="T. Ellison">
  <organization>IBM</organization>
  <address><email>tim_ellison@uk.ibm.com</email></address>
</author>
<author initials="C." surname="Kaler" fullname="C. Kaler">
  <organization>Microsoft</organization>
  <address><email>ckaler@microsoft.com</email></address>
</author>
<author initials="J." surname="Whitehead" fullname="J. Whitehead">
  <organization>UC Santa Cruz, Dept. of Computer Science</organization>
  <address><email>ejw@cse.ucsc.edu</email></address>
</author>
<date month="March" year="2002"/></front>

<seriesInfo name="RFC" value="3253"/>
</reference>

</references>

<section title="Extensions to the WebDAV Document Type Definition">

<figure><artwork>
&lt;!--============= XML Elements from Section 11 ================--&gt;
&lt;!ELEMENT unordered EMPTY &gt;
&lt;!ELEMENT custom EMPTY &gt;
&lt;!ELEMENT order (orderingtype?, ordermember*) &gt;
&lt;!ELEMENT ordermember (href, position) &gt;
&lt;!ELEMENT position (first | last | before | after)&gt;
&lt;!ELEMENT first EMPTY &gt;
&lt;!ELEMENT last EMPTY &gt;
&lt;!ELEMENT before segment &gt;
&lt;!ELEMENT after segment &gt;
&lt;!ELEMENT segment (#PCDATA)&gt;
&lt;!--============= Property Elements from Section 10 =============--&gt;
&lt;!ELEMENT orderingtype (unordered | custom | href) &gt;
</artwork></figure>
    
</section>

<section title="Change Log">
<ed:del datetime="2002-03-29" title="2002-03-29, julian.reschke@greenbytes.de">
<section title="Since draft-ietf-webdav-ordering-protocol-02">
<t>
Updated contact information for all previous authors.<vspace/>
Specify charset when using text/xml media type.<vspace/>
Made sure artwork fits into 72 columns.<vspace/>
Removed "Public" header from OPTIONS example.<vspace/>
Added Julian Reschke to list of authors.<vspace/>
Fixed broken XML in PROPFIND example and added DAV:orderingtype to list
of requested properties.<vspace/>
Added support for DAV:supported-live-property-set and DAV:supported-method-set
as mandatory features.
</t>
</section>
</ed:del>
<ed:ins datetime="2002-03-29" title="2002-03-29, julian.reschke@greenbytes.de">
<section title="Since draft-ietf-webdav-ordering-protocol dated December 1999">
<t>
Updated contact information for all previous authors.<vspace/>
Specify charset when using text/xml media type.<vspace/>
Made sure artwork fits into 72 columns.<vspace/>
Removed "Public" header from OPTIONS example.<vspace/>
Added Julian Reschke to list of authors.<vspace/>
Fixed broken XML in PROPFIND example and added DAV:orderingtype to list
of requested properties.<vspace/>
Added support for DAV:supported-live-property-set and DAV:supported-method-set
as mandatory features.
</t>
</section>
</ed:ins>
<ed:ins datetime="2002-09-28" title="2002-08-29, julian.reschke@greenbytes.de">
<section title="Since draft-ietf-webdav-ordering-protocol-02">
<t>
Updated change log to refer to expired draft version as "December 1999" version.<vspace/>
Started rewrite marshalling in RFC3253-style and added precondition and postcondition
definitions.<vspace/>
On his request, removed Geoff Clemm's name from the author list (moved to
Acknowledgments).<vspace/>
Renamed "References" to "Normative References".<vspace/>
Removed reference to "MKREF" method.
</t>
</section>
</ed:ins>

</section>

    </back>

</rfc>