draft-ietf-webdav-ordering-protocol-02.txt | draft-ietf-webdav-ordering-protocol-03.txt | |||
---|---|---|---|---|
WEBDAV Working Group J. Slein, Xerox | ||||
INTERNET DRAFT E.J. Whitehead Jr., UC Irvine | Network Working Group J. Slein | |||
<draft-ietf-webdav-ordering-protocol-02.txt> J. Davis, CourseNet | Internet Draft Xerox | |||
G. Clemm, Rational | Expires: March 2003 J. Whitehead | |||
C. Fay, FileNet | U.C. Santa Cruz | |||
J. Crawford, IBM | J. Davis | |||
December 20, 1999 | Intelligent Markets | |||
Expires June 20, 2000 | C. Fay | |||
FileNet | ||||
J. Crawford | ||||
IBM | ||||
J. F. Reschke | ||||
greenbytes | ||||
September 2002 | ||||
WebDAV Ordered Collections Protocol | WebDAV Ordered Collections Protocol | |||
draft-ietf-webdav-ordering-protocol-03 | ||||
Status of this Memo | Status of this Memo | |||
This document is an Internet-Draft and is in full conformance with all | This document is an Internet-Draft and is in full conformance with | |||
provisions of Section 10 of RFC2026. Internet-Drafts are working | all provisions of Section 10 of RFC2026. Internet-Drafts are working | |||
documents of the Internet Engineering Task Force (IETF), its areas, and | documents of the Internet Engineering Task Force (IETF), its areas, | |||
its working groups. Note that other groups may also distribute working | and its working groups. Note that other groups may also distribute | |||
documents as Internet-Drafts. | working documents as Internet-Drafts. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference material | time. It is inappropriate to use Internet-Drafts as reference | |||
or to cite them other than as "work in progress". | material or to cite them other than as "work in progress". | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
Distribution of this document is unlimited. Please send comments to the | This Internet-Draft will expire in March 2003. | |||
Distributed Authoring and Versioning (WebDAV) working group at <w3c- | ||||
dist-auth@w3.org>, which may be joined by sending a message with subject | ||||
"subscribe" to <w3c-dist-auth-request@w3.org>. | ||||
Discussions of the WEBDAV working group are archived at URL: | Copyright Notice | |||
<http://lists.w3.org/Archives/Public/w3c-dist-auth/>. | ||||
Copyright (C) The Internet Society (2002). All Rights Reserved. | ||||
Abstract | Abstract | |||
This specification extends the WebDAV Distributed Authoring Protocol to | This specification extends the WebDAV Distributed Authoring Protocol | |||
support server-side ordering of collection members. Of particular | to support server-side ordering of collection members. Of particular | |||
interest are orderings that are not based on property values, and so | interest are orderings that are not based on property values, and so | |||
cannot be achieved using a search protocol's ordering option and cannot | cannot be achieved using a search protocol's ordering option and | |||
be maintained automatically by the server. Protocol elements are | cannot be maintained automatically by the server. Protocol elements | |||
defined to let clients specify the position in the ordering of each | are defined to let clients specify the position in the ordering of | |||
collection member, as well as the semantics governing the ordering. | each collection member, as well as the semantics governing the | |||
ordering. | ||||
Table of Contents | Distribution of this document is unlimited. Please send comments to | |||
the Distributed Authoring and Versioning (WebDAV) working group at | ||||
w3c-dist-auth@w3.org, which may be joined by sending a message with | ||||
subject "subscribe" to w3c-dist-auth-request@w3.org. | ||||
1 Notational Conventions.......................................2 | Discussions of the WEBDAV working group are archived at URL: | |||
2 Introduction.................................................2 | http://lists.w3.org/Archives/Public/w3c-dist-auth/. | |||
3 Terminology..................................................3 | ||||
4 Overview of Ordered Collections..............................4 | ||||
5 Creating an Ordered Collection...............................4 | ||||
5.1 Overview.....................................................4 | ||||
5.2 Example: Creating an Ordered Collection......................5 | ||||
6 Setting the Position of a Collection Member..................5 | ||||
6.1 Overview.....................................................5 | ||||
6.2 Status Codes.................................................6 | ||||
6.3 Examples: Setting the Position of a Collection Member........6 | ||||
7 Changing a Collection Ordering...............................6 | Table of Contents | |||
7.1 ORDERPATCH Method............................................6 | ||||
7.1.1 Status Codes.................................................7 | Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
7.1.2 Example: Changing a Collection Ordering......................7 | Table of Contents . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
7.1.3 Example: Failure of an ORDERPATCH Request....................9 | 1 Notational Conventions . . . . . . . . . . . . . . . . . . . . 5 | |||
8 Listing the Members of an Ordered Collection................10 | 2 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
8.1 Example: PROPFIND on an Ordered Collection..................11 | 3 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
9 Headers.....................................................12 | 4 Overview of Ordered Collections . . . . . . . . . . . . . . . . 8 | |||
9.1 Ordered Entity Header.......................................12 | 4.1 Additional Collection properties . . . . . . . . . . . . . 8 | |||
9.2 Position Request Header.....................................13 | 4.1.1 DAV:orderingtype (protected) . . . . . . . . . . . . . 9 | |||
10 Properties..................................................13 | 5 Creating an Ordered Collection . . . . . . . . . . . . . . . . 10 | |||
10.1 orderingtype Property.......................................13 | 5.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
11 XML Elements................................................14 | 5.2 Example: Creating an Ordered Collection . . . . . . . . . . 11 | |||
11.1 unordered XML Element.......................................14 | 6 Setting the Position of a Collection Member . . . . . . . . . . 12 | |||
11.2 custom XML Element..........................................14 | 6.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
11.3 order XML Element...........................................14 | 6.2 Status Codes . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
11.4 ordermember XML Element.....................................14 | 6.3 Examples: Setting the Position of a Collection Member . . . 12 | |||
11.5 position XML Element........................................15 | 7 Changing a Collection Ordering . . . . . . . . . . . . . . . . 14 | |||
11.6 first XML Element...........................................15 | 7.1 ORDERPATCH Method . . . . . . . . . . . . . . . . . . . . . 14 | |||
11.7 last XML Element............................................15 | 7.1.1 Status Codes . . . . . . . . . . . . . . . . . . . . . 14 | |||
11.8 before XML Element..........................................15 | 7.1.2 Example: Changing a Collection Ordering . . . . . . . . 15 | |||
11.9 after XML Element...........................................15 | 7.1.3 Example: Failure of an ORDERPATCH Request . . . . . . . 17 | |||
11.10 segment XML Element.........................................16 | 8 Listing the Members of an Ordered Collection . . . . . . . . . 19 | |||
12 Capability Discovery........................................16 | 8.1 Example: PROPFIND on an Ordered Collection . . . . . . . . 19 | |||
12.1 Example: Discovery of Support for Ordering..................16 | 9 Headers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
13 Security Considerations.....................................17 | 9.1 Position Request Header . . . . . . . . . . . . . . . . . . 23 | |||
13.1 Denial of Service and DAV:orderingtype......................17 | 10 XML Elements . . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
14 Internationalization Considerations.........................17 | 10.1 order XML Element . . . . . . . . . . . . . . . . . . . . 24 | |||
15 IANA Considerations.........................................18 | 10.2 ordermember XML Element . . . . . . . . . . . . . . . . . 24 | |||
16 Copyright...................................................18 | 10.3 position XML Element . . . . . . . . . . . . . . . . . . . 25 | |||
17 Intellectual Property.......................................18 | 10.4 first XML Element . . . . . . . . . . . . . . . . . . . . 25 | |||
18 Acknowledgements............................................18 | 10.5 last XML Element . . . . . . . . . . . . . . . . . . . . . 25 | |||
19 References..................................................18 | 10.6 before XML Element . . . . . . . . . . . . . . . . . . . . 26 | |||
20 Authors' Addresses..........................................18 | 10.7 after XML Element . . . . . . . . . . . . . . . . . . . . 26 | |||
21 Appendices..................................................19 | 10.8 segment XML Element . . . . . . . . . . . . . . . . . . . 27 | |||
21.1 Appendix 1: Extensions to the WebDAV Document Type | 11 Capability Discovery . . . . . . . . . . . . . . . . . . . . . 28 | |||
Definition..................................................19 | 11.1 Example: Using OPTIONS for the Discovery of Support for | |||
Ordering . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
11.2 Example: Using Live Properties for the Discovery of | ||||
Ordering . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 | ||||
12 Security Considerations . . . . . . . . . . . . . . . . . . . 31 | ||||
12.1 Denial of Service and DAV:orderingtype . . . . . . . . . . 31 | ||||
13 Internationalization Considerations . . . . . . . . . . . . . 32 | ||||
14 IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 | ||||
15 Copyright . . . . . . . . . . . . . . . . . . . . . . . . . . 34 | ||||
16 Intellectual Property . . . . . . . . . . . . . . . . . . . . 35 | ||||
17 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 36 | ||||
Normative References . . . . . . . . . . . . . . . . . . . . . . 37 | ||||
Author's Addresses . . . . . . . . . . . . . . . . . . . . . . . 37 | ||||
A Extensions to the WebDAV Document Type Definition . . . . . . . 39 | ||||
B Change Log . . . . . . . . . . . . . . . . . . . . . . . . . . 40 | ||||
B.1 Since draft-ietf-webdav-ordering-protocol dated December | ||||
1999 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 | ||||
B.2 Since draft-ietf-webdav-ordering-protocol-02 . . . . . . . 40 | ||||
1 Notational Conventions | 1 Notational Conventions | |||
Since this document describes a set of extensions to the WebDAV | Since this document describes a set of extensions to the WebDAV | |||
Distributed Authoring Protocol [WebDAV], itself an extension to the | Distributed Authoring Protocol [RFC2518], itself an extension to the | |||
HTTP/1.1 protocol, the augmented BNF used here to describe protocol | 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]. | elements is exactly the same as described in Section 2.1 of HTTP | |||
Since this augmented BNF uses the basic production rules provided in | [RFC2616]. Since this augmented BNF uses the basic production rules | |||
Section 2.2 of [HTTP], these rules apply to this document as well. | provided in Section 2.2 of HTTP, these rules apply to this document | |||
as well. | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
2 Introduction | 2 Introduction | |||
This specification builds on the collection infrastructure provided by | This specification builds on the collection infrastructure provided | |||
the WebDAV Distributed Authoring Protocol, adding support for the | by the WebDAV Distributed Authoring Protocol, adding support for the | |||
server-side ordering of collection members. | server-side ordering of collection members. | |||
There are many scenarios where it is useful to impose an ordering on a | There are many scenarios where it is useful to impose an ordering on | |||
collection at the server, such as expressing a recommended access order, | a collection at the server, such as expressing a recommended access | |||
or a revision history order. The members of a collection might | 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 | 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 | 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 | course readings, which she wants to be displayed in the order they | |||
to be read. | are to be read. | |||
Orderings may be based on property values, but this is not always the | 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 | case. The resources in the collection may not have properties that | |||
be used to support the desired ordering. Orderings based on properties | can be used to support the desired ordering. Orderings based on | |||
can be obtained using a search protocol's ordering option, but orderings | properties can be obtained using a search protocol's ordering option, | |||
not based on properties cannot. These orderings generally need to be | but orderings not based on properties cannot. These orderings | |||
maintained by a human user. | generally need to be maintained by a human user. | |||
The ordering protocol defined here focuses on support for such human- | The ordering protocol defined here focuses on support for such human- | |||
maintained orderings. Its protocol elements allow clients to specify | maintained orderings. Its protocol elements allow clients to specify | |||
the position of each collection member in the collection's ordering, as | the position of each collection member in the collection's ordering, | |||
well as the semantics governing the ordering. The protocol is designed | as well as the semantics governing the ordering. The protocol is | |||
to allow support to be added in the future for orderings that are | designed to allow support to be added in the future for orderings | |||
maintained automatically by the server. | that are maintained automatically by the server. | |||
The remainder of this document is structured as follows: Section 3 | The remainder of this document is structured as follows: Section 3 | |||
defines terminology that will be used throughout the specification. | defines terminology that will be used throughout the specification. | |||
Section 4 provides an overview of ordered collections. Section 5 | Section 4 provides an overview of ordered collections. Section 5 | |||
describes how to create an ordered collection, and Section 6 discusses | describes how to create an ordered collection, and Section 6 | |||
how to set a member's position in the ordering of a collection. Section | discusses how to set a member's position in the ordering of a | |||
7 explains how to change a collection ordering. Section 8 discusses | collection. Section 7 explains how to change a collection ordering. | |||
listing the members of an ordered collection. Sections 9 through 11 | Section 8 discusses listing the members of an ordered collection. | |||
define the headers, properties, and XML elements needed to support | Section 9 through Section 10 define the headers, properties, and XML | |||
ordered collections. Section 12 describes capability discovery. | elements needed to support ordered collections. Section 11 describes | |||
Sections 13 through 15 discuss security, internationalization, and IANA | capability discovery. Section 12 through Section 14 discuss security, | |||
considerations. The remaining sections provide supporting information. | internationalization, and IANA considerations. The remaining sections | |||
provide supporting information. | ||||
3 Terminology | 3 Terminology | |||
The terminology used here follows that in the WebDAV Distributed | The terminology used here follows that in the [RFC2518]. Definitions | |||
Authoring Protocol specification [WebDAV]. Definitions of the terms | of the terms resource, Uniform Resource Identifier (URI), and Uniform | |||
resource, Uniform Resource Identifier (URI), and Uniform Resource | Resource Locator (URL) are provided in [RFC2396]. | |||
Locator (URL) are provided in [URI]. | ||||
Ordered Collection | Ordered Collection | |||
A collection for which the results from a PROPFIND request are | A collection for which the results from a PROPFIND request are | |||
guaranteed to be in the order specified for that collection | guaranteed to be in the order specified for that collection | |||
Unordered Collection | Unordered Collection | |||
A collection for which the client cannot depend on the | A collection for which the client cannot depend on the | |||
repeatability of the ordering of results from a PROPFIND request | repeatability of the ordering of results from a PROPFIND request | |||
Client-Maintained Ordering | Client-Maintained Ordering | |||
An ordering of collection members that is maintained on the server | An ordering of collection members that is maintained on the server | |||
based on client requests specifying the position of each | based on client requests specifying the position of each | |||
collection member in the ordering | collection member in the ordering | |||
Server-Maintained Ordering | Server-Maintained Ordering | |||
An ordering of collection members that is maintained automatically | An ordering of collection members that is maintained automatically | |||
by the server, based on a client's choice of ordering semantics | by the server, based on a client's choice of ordering semantics | |||
This document uses the terms "precondition" as "postcondition" as | ||||
defined in [RFC3253]. Servers should report pre-/postcondition | ||||
failures as described in section 1.6 of this document. | ||||
4 Overview of Ordered Collections | 4 Overview of Ordered Collections | |||
If a collection is unordered, the client cannot depend on the | If a collection is unordered, the client cannot depend on the | |||
repeatability of the ordering of results from a PROPFIND request. By | repeatability of the ordering of results from a PROPFIND request. By | |||
specifying an ordering for a collection, a client requires the server to | specifying an ordering for a collection, a client requires the server | |||
follow that ordering whenever it responds to a PROPFIND request on that | to follow that ordering whenever it responds to a PROPFIND request on | |||
collection. | that collection. | |||
Server-side orderings may be client-maintained or server-maintained. | Server-side orderings may be client-maintained or server-maintained. | |||
For client-maintained orderings, a client must specify the ordering | For client-maintained orderings, a client must specify the ordering | |||
position of each of the collection's members, either when the member is | position of each of the collection's members, either when the member | |||
added to the collection (using the Position header) or later (using the | is added to the collection (using the Position header) or later | |||
ORDERPATCH method). For server-maintained orderings, the server | (using the ORDERPATCH method). For server-maintained orderings, the | |||
automatically positions each of the collection's members according to | server automatically positions each of the collection's members | |||
the ordering semantics. This specification supports only client- | according to the ordering semantics. This specification supports only | |||
maintained orderings, but is designed to allow future extension to | client-maintained orderings, but is designed to allow future | |||
server-maintained orderings. | extension to server-maintained orderings. | |||
A collection that supports ordering is not required to be ordered. It | 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, | is up to the client to decide whether a given collection is ordered | |||
if so, to specify the semantics to be used for ordering its members. | and, if so, to specify the semantics to be used for ordering its | |||
members. | ||||
If a collection is ordered, each of its internal member URIs MUST be in | If a collection is ordered, each of its internal member URIs MUST be | |||
the ordering exactly once, and the ordering MUST NOT include any URI | in the ordering exactly once, and the ordering MUST NOT include any | |||
that is not an internal member of the collection. The server is | URI that is not an internal member of the collection. The server is | |||
responsible for enforcing these constraints on orderings. The server | responsible for enforcing these constraints on orderings. The server | |||
MUST remove an internal member URI from the ordering when it is removed | MUST remove an internal member URI from the ordering when it is | |||
from the collection. The server MUST an internal member URI to the | removed from the collection. The server MUST an internal member URI | |||
ordering when it is added to the collection. | to the ordering when it is added to the collection. | |||
Only one ordering can be attached to any collection. Multiple orderings | Only one ordering can be attached to any collection. Multiple | |||
of the same resources can be achieved by creating multiple collections | orderings of the same resources can be achieved by creating multiple | |||
referencing those resources, and attaching a different ordering to each | collections referencing those resources, and attaching a different | |||
collection. | ordering to each collection. | |||
An ordering is considered to be part of the state of a collection | 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 | resource. Consequently, the ordering is the same no matter which URI | |||
used to access the collection and is protected by locks or access | is used to access the collection and is protected by locks or access | |||
control constraints on the collection. | control constraints on the collection. | |||
4.1 Additional Collection properties | ||||
4.1.1 DAV:orderingtype (protected) | ||||
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. | ||||
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. | ||||
The value DAV:custom indicates that the collection is ordered, but | ||||
the semantics governing the ordering are not being advertised. | ||||
If the value is a DAV:href element, it contains a URI that uniquely | ||||
identifies the semantics of the collection's ordering. | ||||
An ordering-aware client interacting with an ordering-unaware server | ||||
(e.g., one that is implemented only according to [RFC2518]) SHOULD | ||||
assume that if a collection does not have the DAV:orderingtype | ||||
property, the collection is unordered. | ||||
<!ELEMENT orderingtype (unordered | custom | href) > | ||||
<!ELEMENT custom EMPTY > | ||||
<!ELEMENT unordered EMPTY > | ||||
5 Creating an Ordered Collection | 5 Creating an Ordered Collection | |||
5.1 Overview | 5.1 Overview | |||
When a collection is created, the client MAY request that it be ordered | When a collection is created, the client MAY request that it be | |||
and specify the semantics of the ordering by using the new Ordered | ordered and specify the semantics of the ordering by using the new | |||
header (defined in Section 9.1) with a MKCOL request. | Ordered header (defined below) with a MKCOL request. | |||
For collections that are ordered, the client SHOULD identify the | For collections that are ordered, the client SHOULD identify the | |||
semantics of the ordering with a URI in the Ordered header, although 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 | ||||
client MAY simply set the header value to DAV:custom to indicate that | that the collection is ordered but the semantics of the ordering are | |||
the collection is ordered but the semantics of the ordering are not | not being advertised. Setting the value to a URI that identifies the | |||
being advertised. Setting the value to a URI that identifies the | ||||
ordering semanticsprovides the information a human user or software | ordering semanticsprovides the information a human user or software | |||
package needs to insert new collection members into the ordering | package needs to insert new collection members into the ordering | |||
intelligently. Although the URI in the Ordered header MAY point to a | intelligently. Although the URI in the Ordered header MAY point to a | |||
resource that contains a definition of the semantics of the ordering, | resource that contains a definition of the semantics of the ordering, | |||
clients SHOULD NOT access that resource, in order to avoid overburdening | clients SHOULD NOT access that resource, in order to avoid | |||
its server. A value of DAV:unordered in the Ordering header indicates | overburdening its server. A value of DAV:unordered in the Ordering | |||
that the client wants the collection to be unordered. If the Ordered | header indicates that the client wants the collection to be | |||
header is not present, the collection will be unordered. | unordered. If the Ordered header is not present, the collection will | |||
Every collection that supports ordering MUST have a DAV:orderingtype | be unordered. | |||
property (defined in Section 10.1), which indicates whether the | ||||
collection is ordered and, if so, identifies the semantics of the | Additional Marshalling: | |||
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 = "Ordered" ":" ("DAV:unordered" | "DAV:custom" | Coded-url) | |||
Ordered header is not present, the server sets the value to | ||||
DAV:unordered. An ordering-aware client interacting with an ordering- | A value of "DAV:unordered" indicates that the collection is not | |||
unaware server (e.g., one that is implemented only according to | ordered. A value of "DAV:custom" indicates that the collection is | |||
[WebDAV]) SHOULD assume that if a collection does not have the | to be ordered, but the semantics of the ordering is not being | |||
DAV:orderingtype property, the collection is unordered. | advertised. Any other Coded-url value indicates that the | |||
collection is ordered, and identifies the semantics of the | ||||
ordering. | ||||
Additional Preconditions: | ||||
(DAV:ordered-collections-supported): the server must support | ||||
ordered collections where the new collection is to be created. | ||||
5.2 Example: Creating an Ordered Collection | 5.2 Example: Creating an Ordered Collection | |||
>> Request: | >> Request: | |||
MKCOL /theNorth/ HTTP/1.1 | MKCOL /theNorth/ HTTP/1.1 | |||
Host: www.server.org | Host: www.server.org | |||
Ordered: <http://www.server.org/orderings/compass.html> | Ordered: <http://www.server.org/orderings/compass.html> | |||
>> Response: | >> Response: | |||
HTTP/1.1 201 Created | HTTP/1.1 201 Created | |||
In this example a new, ordered collection was created. Its | In this example a new, ordered collection was created. Its | |||
DAV:orderingtype property has as its value the URI from the Ordered | DAV:orderingtype property has as its value the URI from the Ordered | |||
header, http://www.server.org/orderings/compass.html. In this case, the | header, http://www.server.org/orderings/compass.html. In this case, | |||
URI identifies the semantics governing a client-maintained ordering. As | the URI identifies the semantics governing a client-maintained | |||
new members are added to the collection, clients or end users can use | ordering. As new members are added to the collection, clients or end | |||
the semantics to determine where to position the new members in the | users can use the semantics to determine where to position the new | |||
ordering. | members in the ordering. | |||
6 Setting the Position of a Collection Member | 6 Setting the Position of a Collection Member | |||
6.1 Overview | 6.1 Overview | |||
When a new member is added to a collection with a client-maintained | When a new member is added to a collection with a client-maintained | |||
ordering (for example, with PUT, MKREF, COPY, or MKCOL), its position in | ordering (for example, with PUT, COPY, or MKCOL), its position in the | |||
the ordering can be set with the new Position header (defined in Section | ordering can be set with the new Position header (defined in Section | |||
9.2). The Position header allows the client to specify that an internal | 9.1). The Position header allows the client to specify that an | |||
member URI should be first in the collection's ordering, last in the | internal member URI should be first in the collection's ordering, | |||
collection's ordering, immediately before some other internal member URI | last in the collection's ordering, immediately before some other | |||
in the collection's ordering, or immediately after some other internal | internal member URI in the collection's ordering, or immediately | |||
member URI in the collection's ordering. | after some other internal member URI in the collection's ordering. | |||
If the Position request header is not used when adding a member to an | If the Position request header is not used when adding a member to an | |||
ordered collection, then: | ordered collection, then: | |||
o If the request is replacing an existing resource, the server MUST | o If the request is replacing an existing resource, the server MUST | |||
preserve the present ordering. | preserve the present ordering. | |||
o If the request is adding a new internal member URI to the collection, | o If the request is adding a new internal member URI to the | |||
the server MUST append the new member to the end of the ordering. | collection, the server MUST append the new member to the end of | |||
the ordering. | ||||
6.2 Status Codes | 6.2 Status Codes | |||
409 (Conflict): Several conditions may cause this response. The request | 409 (Conflict): Several conditions may cause this response. The | |||
may specify a position that is before or after a URI that is not an | request may specify a position that is before or after a URI that is | |||
internal member URI of the collection, or before or after itself. The | not an internal member URI of the collection, or before or after | |||
request may attempt to specify the new member's position in an unordered | itself. The request may attempt to specify the new member's position | |||
collection. | in an unordered collection. | |||
6.3 Examples: Setting the Position of a Collection Member | 6.3 Examples: Setting the Position of a Collection Member | |||
>> Request: | >> Request: | |||
COPY /~whitehead/dav/spec08.html HTTP/1.1 | COPY /~whitehead/dav/spec08.html HTTP/1.1 | |||
Host: www.ics.uci.edu | Host: www.ics.uci.edu | |||
Destination: http://www.xerox.com/~slein/dav/spec08.html | Destination: http://www.xerox.com/~slein/dav/spec08.html | |||
Position: after requirements.html | Position: after requirements.html | |||
>> Response: | >> Response: | |||
HTTP/1.1 201 Created | HTTP/1.1 201 Created | |||
This request resulted in the creation of a new resource at | This request resulted in the creation of a new resource at | |||
www.xerox.com/~slein/dav/spec08.html. The Position header in this | 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 | example caused the server to set its position in the ordering of the | |||
/~slein/dav/ collection immediately after requirements.html. | /~slein/dav/ collection immediately after requirements.html. | |||
>> Request: | >> Request: | |||
skipping to change at line 332 | skipping to change at page 13, line 25 | |||
MOVE /i-d/draft-webdav-protocol-08.txt HTTP/1.1 | MOVE /i-d/draft-webdav-protocol-08.txt HTTP/1.1 | |||
Host: www.ics.uci.edu | Host: www.ics.uci.edu | |||
Destination: http://www.ics.uci.edu/~whitehead/dav/draft-webdav- | Destination: http://www.ics.uci.edu/~whitehead/dav/draft-webdav- | |||
protocol-08.txt | protocol-08.txt | |||
Position: first | Position: first | |||
>> Response: | >> Response: | |||
HTTP/1.1 409 Conflict | HTTP/1.1 409 Conflict | |||
In this case, the server returned a 409 (Conflict) status code because | In this case, the server returned a 409 (Conflict) status code | |||
the /~whitehead/dav/ collection is an unordered collection. | because the /~whitehead/dav/ collection is an unordered collection. | |||
Consequently, the server was unable to satisfy the Position header. | Consequently, the server was unable to satisfy the Position header. | |||
7 Changing a Collection Ordering | 7 Changing a Collection Ordering | |||
7.1 ORDERPATCH Method | 7.1 ORDERPATCH Method | |||
The ORDERPATCH method is used to change the ordering semantics of a | 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 | collection or to change the order of the collection's members in the | |||
ordering or both. | ordering or both. | |||
The ORDERPATCH method changes the ordering semantics of the collection | The ORDERPATCH method changes the ordering semantics of the | |||
identified by the Request-URI, based on the value of DAV:orderingtype | collection identified by the Request-URI, based on the value of | |||
submitted in the request entity body. | DAV:orderingtype submitted in the request entity body. | |||
The ORDERPATCH method alters the ordering of internal member URIs in the | The ORDERPATCH method alters the ordering of internal member URIs in | |||
collection identified by the Request-URI, based on instructions in the | the collection identified by the Request-URI, based on instructions | |||
ordermember XML elements in the request entity body. The ordermember XML | in the ordermember XML elements in the request entity body. The | |||
elements identify the internal member URIs whose positions are to be | ordermember XML elements identify the internal member URIs whose | |||
changed, and describe their new positions in the ordering. Each new | positions are to be changed, and describe their new positions in the | |||
position can be specified as first in the ordering, last in the | ordering. Each new position can be specified as first in the | |||
ordering, immediately before some other internal member URI, or | ordering, last in the ordering, immediately before some other | |||
immediately after some other internal member URI. | internal member URI, or immediately after some other internal member | |||
URI. | ||||
The server MUST apply the changes in the order they appear in the order | The server MUST apply the changes in the order they appear in the | |||
XML element. The server MUST either apply all the changes or apply none | order XML element. The server MUST either apply all the changes or | |||
of them. If any error occurs during processing, all executed changes | apply none of them. If any error occurs during processing, all | |||
MUST be undone and a proper error result returned. | executed changes MUST be undone and a proper error result returned. | |||
If an ORDERPATCH request changes the ordering semantics, but does not | If an ORDERPATCH request changes the ordering semantics, but does not | |||
completely specify the order of the collection members, the server MUST | completely specify the order of the collection members, the server | |||
assign a position in the ordering to each collection member for which a | MUST assign a position in the ordering to each collection member for | |||
position was not specified. These server-assigned positions MUST all | which a position was not specified. These server-assigned positions | |||
follow the last one specified by the client. The result is that all | MUST all follow the last one specified by the client. The result is | |||
members for which the client specified a position are at the beginning | that all members for which the client specified a position are at the | |||
of the ordering, followed by any members for which the server assigned | beginning of the ordering, followed by any members for which the | |||
positions. | server assigned positions. | |||
If an ORDERPATCH request does not change the ordering semantics, any | If an ORDERPATCH request does not change the ordering semantics, any | |||
member positions not specified in the request MUST remain unchanged. | member positions not specified in the request MUST remain unchanged. | |||
7.1.1 Status Codes | 7.1.1 Status Codes | |||
Since multiple changes can be requested in a single ORDERPATCH request, | Since multiple changes can be requested in a single ORDERPATCH | |||
if any problems are encountered, the server MUST return a 207 (Multi- | request, if any problems are encountered, the server MUST return a | |||
Status) response, as defined in [WebDAV]. | 207 (Multi-Status) response, as defined in [RFC2518]. | |||
The following are examples of response codes one would expect to be used | The following are examples of response codes one would expect to be | |||
in a 207 (Multi-Status) response for this method: | used in a 207 (Multi-Status) response for this method: | |||
200 (OK): The change in ordering was successfully made. | 200 (OK): The change in ordering was successfully made. | |||
409 (Conflict): Several conditions may cause this response. The request | 409 (Conflict): Several conditions may cause this response. The | |||
may specify a position that is before or after a URI that is not an | request may specify a position that is before or after a URI that is | |||
internal member URI of the collection, or before or after itself. The | not an internal member URI of the collection, or before or after | |||
request may attempt to set the positions of members of an unordered | itself. The request may attempt to set the positions of members of an | |||
collection. | unordered collection. | |||
A request to reposition a collection member at the same place in the | A request to reposition a collection member at the same place in the | |||
ordering is not an error. | ordering is not an error. | |||
7.1.2 Example: Changing a Collection Ordering | 7.1.2 Example: Changing a Collection Ordering | |||
Consider a collection /coll-1/ whose DAV:orderingtype is DAV:whim, with | Consider a collection /coll-1/ whose DAV:orderingtype is DAV:whim, | |||
bindings ordered as follows: | with bindings ordered as follows: | |||
three.html | three.html | |||
four.html | four.html | |||
one.html | one.html | |||
two.html | two.html | |||
>> Request: | >> Request: | |||
ORDERPATCH /coll-1/ HTTP/1.1 | ORDERPATCH /coll-1/ HTTP/1.1 | |||
Host: www.myserver.com | Host: www.myserver.com | |||
Content-Type: text/xml | Content-Type: text/xml; charset="utf-8" | |||
Content-Length: xxx | Content-Length: xxx | |||
<?xml version="1.0" ?> | <?xml version="1.0" ?> | |||
<d:order xmlns:d="DAV:"> | <d:order xmlns:d="DAV:"> | |||
<d:orderingtype> | <d:orderingtype> | |||
<d:href>http://www.myserver.com/inorder.ord</d:href> | <d:href>http://www.myserver.com/inorder.ord</d:href> | |||
</d:orderingtype> | </d:orderingtype> | |||
<d:ordermember> | <d:ordermember> | |||
<d:href>two.html</d:href> | <d:href>two.html</d:href> | |||
<d:position> | <d:position> | |||
skipping to change at line 446 | skipping to change at page 16, line 29 | |||
<d:position> | <d:position> | |||
<d:last/> | <d:last/> | |||
</d:position> | </d:position> | |||
</d:ordermember> | </d:ordermember> | |||
</d:order> | </d:order> | |||
>> Response: | >> Response: | |||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
In this example, after the request has been processed, the collection's | In this example, after the request has been processed, the | |||
ordering semantics are identified by the URI | collection's ordering semantics are identified by the URI | |||
http://www.myserver.com/inorder.ord. The value of the collection's | http://www.myserver.com/inorder.ord. The value of the collection's | |||
DAV:orderingtype property has been set to this URI. The request also | DAV:orderingtype property has been set to this URI. The request also | |||
contains instructions for changing the positions of the collection's | contains instructions for changing the positions of the collection's | |||
internal member URIs in the ordering to comply with the new ordering | internal member URIs in the ordering to comply with the new ordering | |||
semantics. If href elements are relative URIs, as in this example, they | semantics. If href elements are relative URIs, as in this example, | |||
are interpreted relative to the collection whose ordering is being | they are interpreted relative to the collection whose ordering is | |||
modified. The DAV:ordermember elements are required to be processed in | being modified. The DAV:ordermember elements are required to be | |||
the order they appear in the request. Consequently, two.html is moved | processed in the order they appear in the request. Consequently, | |||
to the beginning of the ordering, and then one.html is moved to the | two.html is moved to the beginning of the ordering, and then one.html | |||
beginning of the ordering. Then three.html is moved to the end of the | is moved to the beginning of the ordering. Then three.html is moved | |||
ordering, and finally four.html is moved to the end of the ordering. | to the end of the ordering, and finally four.html is moved to the end | |||
After the request has been processed, the collection's ordering is as | of the ordering. After the request has been processed, the | |||
follows: | collection's ordering is as follows: | |||
one.html | one.html | |||
two.html | two.html | |||
three.html | three.html | |||
four.html | four.html | |||
7.1.3 Example: Failure of an ORDERPATCH Request | 7.1.3 Example: Failure of an ORDERPATCH Request | |||
Consider a collection /coll-1/ with members ordered as follows: | Consider a collection /coll-1/ with members ordered as follows: | |||
skipping to change at line 486 | skipping to change at page 17, line 28 | |||
baffin.img | baffin.img | |||
iqaluit.map | iqaluit.map | |||
nunavut.desc | nunavut.desc | |||
iqaluit.img | iqaluit.img | |||
iqaluit.desc | iqaluit.desc | |||
>> Request: | >> Request: | |||
ORDERPATCH /coll-1/ HTTP/1.1 | ORDERPATCH /coll-1/ HTTP/1.1 | |||
Host: www.nunanet.com | Host: www.nunanet.com | |||
Content-Type: text/xml | Content-Type: text/xml; charset="utf-8" | |||
Content-Length: xxx | Content-Length: xxx | |||
<?xml version="1.0" ?> | <?xml version="1.0" ?> | |||
<d:order xmlns:d="DAV:"> | <d:order xmlns:d="DAV:"> | |||
<d:ordermember> | <d:ordermember> | |||
<d:href>nunavut.desc</d:href> | <d:href>nunavut.desc</d:href> | |||
<d:position> | <d:position> | |||
<d:after> | <d:after> | |||
<d:segment>nunavut.map</d:segment> | <d:segment>nunavut.map</d:segment> | |||
</d:after> | </d:after> | |||
skipping to change at line 512 | skipping to change at page 18, line 14 | |||
<d:after> | <d:after> | |||
<d:segment>pangnirtung.img</d:segment> | <d:segment>pangnirtung.img</d:segment> | |||
</d:after> | </d:after> | |||
</d:position> | </d:position> | |||
</d:ordermember> | </d:ordermember> | |||
</d:order> | </d:order> | |||
>> Response: | >> Response: | |||
HTTP/1.1 207 Multi-Status | HTTP/1.1 207 Multi-Status | |||
Content-Type: text/xml | Content-Type: text/xml; charset="utf-8" | |||
Content-Length: xxx | Content-Length: xxx | |||
<?xml version="1.0" ?> | <?xml version="1.0" ?> | |||
<d:multistatus xmlns:d="DAV:"> | <d:multistatus xmlns:d="DAV:"> | |||
<d:response> | <d:response> | |||
<d:href>http://www.nunanet.com/coll-1/nunavut.desc</d:href> | <d:href>http://www.nunanet.com/coll-1/nunavut.desc</d:href> | |||
<d:status>HTTP/1.1 424 Failed Dependency</d:status> | <d:status>HTTP/1.1 424 Failed Dependency</d:status> | |||
</d:response> | </d:response> | |||
<d:response> | <d:response> | |||
<d:href>http://www.nunanet.com/coll-1/iqaluit.map</d:href> | <d:href>http://www.nunanet.com/coll-1/iqaluit.map</d:href> | |||
<d:status>HTTP/1.1 409 Conflict</d:status> | <d:status>HTTP/1.1 409 Conflict</d:status> | |||
<d:responsedescription>pangnirtung.img is not a collection | <d:responsedescription>pangnirtung.img is not a collection | |||
member.</d:responsedescription> | member.</d:responsedescription> | |||
</d:response> | </d:response> | |||
</d:multistatus> | </d:multistatus> | |||
In this example, the client attempted to position iqaluit.map after a | 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 | 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. | server responded to this client error with a 409 (Conflict) status | |||
Because ORDERPATCH is an atomic method, the request to reposition | code. Because ORDERPATCH is an atomic method, the request to | |||
nunavut.desc (which would otherwise have succeeded) failed with a 424 | reposition nunavut.desc (which would otherwise have succeeded) failed | |||
(Failed Dependency) status code. | with a 424 (Failed Dependency) status code. | |||
8 Listing the Members of an Ordered Collection | 8 Listing the Members of an Ordered Collection | |||
A PROPFIND request is used to retrieve a listing of the members of an | 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 | ordered collection, just as it is used to retrieve a listing of the | |||
members of an unordered collection. | members of an unordered collection. | |||
However, when responding to a PROPFIND on an ordered collection, the | However, when responding to a PROPFIND on an ordered collection, the | |||
server MUST order the response elements according to the ordering | server MUST order the response elements according to the ordering | |||
defined on the collection. If a collection is unordered, the client | defined on the collection. If a collection is unordered, the client | |||
cannot depend on the repeatability of the ordering of results from a | cannot depend on the repeatability of the ordering of results from a | |||
PROPFIND request. | PROPFIND request. | |||
In a response to a PROPFIND with Depth: infinity, members of different | In a response to a PROPFIND with Depth: infinity, members of | |||
collections may be interleaved. That is, the server is not required to | different collections may be interleaved. That is, the server is not | |||
do a breadth-first traversal. The only requirement is that the members | required to do a breadth-first traversal. The only requirement is | |||
of any ordered collection appear in the order defined for the | that the members of any ordered collection appear in the order | |||
collection. Thus for the hierarchy illustrated in the following figure, | defined for the collection. Thus for the hierarchy illustrated in the | |||
where collection A is an ordered collection with the ordering B C D, | following figure, where collection A is an ordered collection with | |||
the ordering B C D, | ||||
A | A | |||
/|\ | /|\ | |||
/ | \ | / | \ | |||
B C D | B C D | |||
/ /|\ | / /|\ | |||
E F G H | E F G H | |||
it would be acceptable for the server to return response elements in the | it would be acceptable for the server to return response elements in | |||
order A B E C F G H D. In this response, B, C, and D appear in the | the order A B E C F G H D. In this response, B, C, and D appear in | |||
correct order, separated by members of other collections. Clients can | the correct order, separated by members of other collections. Clients | |||
use a series of Depth: 1 PROPFIND requests to avoid the complexity of | can use a series of Depth: 1 PROPFIND requests to avoid the | |||
processing Depth: infinity responses based on depth-first traversals. | complexity of processing Depth: infinity responses based on depth- | |||
first traversals. | ||||
8.1 Example: PROPFIND on an Ordered Collection | 8.1 Example: PROPFIND on an Ordered Collection | |||
Suppose a PROPFIND request is submitted to /MyCollection/, which has its | Suppose a PROPFIND request is submitted to /MyCollection/, which has | |||
members ordered as follows. | its members ordered as follows. | |||
/MyCollection/ | /MyCollection/ | |||
lakehazen.html | lakehazen.html | |||
siorapaluk.html | siorapaluk.html | |||
iqaluit.html | iqaluit.html | |||
newyork.html | newyork.html | |||
>> Request: | >> Request: | |||
PROPFIND /MyCollection/ HTTP/1.1 | PROPFIND /MyCollection/ HTTP/1.1 | |||
Host: www.svr.com | Host: www.svr.com | |||
Depth: 1 | Depth: 1 | |||
Content-Type: text/xml | Content-Type: text/xml; charset="utf-8" | |||
Content-Length: xxxx | Content-Length: xxxx | |||
<?xml version="1.0" ?> | <?xml version="1.0" ?> | |||
<D:propfind xmlns:D="DAV:"> | <D:propfind xmlns:D="DAV:"> | |||
<D:prop xmlns:J=http://www.svr.com/jsprops/> | <D:prop xmlns:J="http://www.svr.com/jsprops/"> | |||
<D:orderingtype/> | ||||
<D:resourcetype/> | <D:resourcetype/> | |||
<J:latitude/> | <J:latitude/> | |||
</D:prop> | </D:prop> | |||
</D:propfind> | </D:propfind> | |||
>> Response: | >> Response: | |||
HTTP/1.1 207 Multi-Status | HTTP/1.1 207 Multi-Status | |||
Content-Type: text/xml | Content-Type: text/xml; charset="utf-8" | |||
Content-Length: xxxx | Content-Length: xxxx | |||
<?xml version="1.0" ?> | <?xml version="1.0" ?> | |||
<D:multistatus xmlns:D="DAV:" | <D:multistatus xmlns:D="DAV:" | |||
xmlns:J="http:www.svr.com/jsprops/"> | xmlns:J="http:www.svr.com/jsprops/"> | |||
<D:response> | <D:response> | |||
<D:href>http://www.svr.com/MyCollection/</D:href> | <D:href>http://www.svr.com/MyCollection/</D:href> | |||
<D:propstat> | <D:propstat> | |||
<D:prop> | <D:prop> | |||
<D:orderingtype><D:custom/></D:orderingtype> | ||||
<D:resourcetype><D:collection/></D:resourcetype> | <D:resourcetype><D:collection/></D:resourcetype> | |||
</D:prop> | </D:prop> | |||
<D:status>HTTP/1.1 200 OK</D:status> | <D:status>HTTP/1.1 200 OK</D:status> | |||
</D:propstat> | </D:propstat> | |||
<D:propstat> | <D:propstat> | |||
<D:prop> | <D:prop> | |||
<J:latitude/> | <J:latitude/> | |||
</D:prop> | </D:prop> | |||
<D:status>HTTP/1.1 404 Not Found</D:status> | <D:status>HTTP/1.1 404 Not Found</D:status> | |||
</D:propstat> | </D:propstat> | |||
</D:response> | </D:response> | |||
<D:response> | <D:response> | |||
<D:href>http://www.svr.com/MyCollection/lakehazen.html</D:href> | <D:href>http://www.svr.com/MyCollection/lakehazen.html</D:href> | |||
<D:propstat> | <D:propstat> | |||
<D:prop> | <D:prop> | |||
<D:resourcetype/> | <D:resourcetype/> | |||
<J:latitude>82N</J:latitude> | <J:latitude>82N</J:latitude> | |||
</D:prop> | </D:prop> | |||
<D:status>HTTP/1.1 200 OK</D:status> | <D:status>HTTP/1.1 200 OK</D:status> | |||
</D:propstat> | </D:propstat> | |||
<D:propstat> | ||||
<D:prop> | ||||
<D:orderingtype/> | ||||
</D:prop> | ||||
<D:status>HTTP/1.1 404 Not Found</D:status> | ||||
</D:propstat> | ||||
</D:response> | </D:response> | |||
<D:response> | <D:response> | |||
<D:href>http://www.svr.com/MyCollection/siorapaluk.html</D:href> | <D:href | |||
>http://www.svr.com/MyCollection/siorapaluk.html</D:href> | ||||
<D:propstat> | <D:propstat> | |||
<D:prop> | <D:prop> | |||
<D:resourcetype/> | <D:resourcetype/> | |||
<J:latitude>78N</J:latitude> | <J:latitude>78N</J:latitude> | |||
</D:prop> | </D:prop> | |||
<D:status>HTTP/1.1 200 OK</D:status> | <D:status>HTTP/1.1 200 OK</D:status> | |||
</D:propstat> | </D:propstat> | |||
<D:propstat> | ||||
<D:prop> | ||||
<D:orderingtype/> | ||||
</D:prop> | ||||
<D:status>HTTP/1.1 404 Not Found</D:status> | ||||
</D:propstat> | ||||
</D:response> | </D:response> | |||
<D:response> | <D:response> | |||
<D:href>http://www.svr.com/MyCollection/iqaluit.html</D:href> | <D:href>http://www.svr.com/MyCollection/iqaluit.html</D:href> | |||
<D:propstat> | <D:propstat> | |||
<D:prop> | <D:prop> | |||
<D:resourcetype/> | <D:resourcetype/> | |||
<J:latitude>62N</J:latitude> | <J:latitude>62N</J:latitude> | |||
</D:prop> | </D:prop> | |||
<D:status>HTTP/1.1 200 OK</D:status> | <D:status>HTTP/1.1 200 OK</D:status> | |||
</D:propstat> | </D:propstat> | |||
<D:propstat> | ||||
<D:prop> | ||||
<D:orderingtype/> | ||||
</D:prop> | ||||
<D:status>HTTP/1.1 404 Not Found</D:status> | ||||
</D:propstat> | ||||
</D:response> | </D:response> | |||
<D:response> | <D:response> | |||
<D:href>http://www.svr.com/MyCollection/newyork.html</D:href> | <D:href>http://www.svr.com/MyCollection/newyork.html</D:href> | |||
<D:propstat> | <D:propstat> | |||
<D:prop> | <D:prop> | |||
<D:resourcetype/> | <D:resourcetype/> | |||
<J:latitude>45N</J:latitude> | <J:latitude>45N</J:latitude> | |||
</D:prop> | </D:prop> | |||
<D:status>HTTP/1.1 200 OK</D:status> | <D:status>HTTP/1.1 200 OK</D:status> | |||
<D:propstat> | ||||
<D:prop> | ||||
<D:orderingtype/> | ||||
</D:prop> | ||||
<D:status>HTTP/1.1 404 Not Found</D:status> | ||||
</D:propstat> | ||||
</D:propstat> | </D:propstat> | |||
</D:response> | </D:response> | |||
</D:multistatus> | </D:multistatus> | |||
In this example, the server responded with a list of the collection | In this example, the server responded with a list of the collection | |||
members in the order defined for the collection. | members in the order defined for the collection. | |||
9 Headers | 9 Headers | |||
9.1 Ordered Entity Header | 9.1 Position Request Header | |||
Ordered = "Ordered" ":" ("DAV:unordered" | "DAV:custom" | Coded-url) | ||||
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. | ||||
9.2 Position Request Header | ||||
Position = "Position" ":" ("first" | "last" | | Position = "Position" ":" ("first" | "last" | | |||
(("before" | "after") segment)) | (("before" | "after") segment)) | |||
segment is defined in Section 3.3 of [URI]. | ||||
The Position header may be used with any method that adds a member to an | segment is defined in Section 3.3 of [RFC2396]. | |||
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. | ||||
The segment is interpreted relative to the collection to which the new | The Position header may be used with any method that adds a member to | |||
member is being added. | 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. | ||||
The server MUST insert the new member into the ordering at the location | The segment is interpreted relative to the collection to which the | |||
specified in the Position header, if one is present (and if the | new member is being added. | |||
collection is ordered). | ||||
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). | ||||
The "first" keyword indicates the new member is put in the beginning | The "first" keyword indicates the new member is put in the beginning | |||
position in the collection's ordering, while "last" indicates the new | position in the collection's ordering, while "last" indicates the new | |||
member is put in the final position in the collection's ordering. The | 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 | "before" keyword indicates the new member is added to the | |||
ordering immediately prior to the position of the member identified in | collection's ordering immediately prior to the position of the member | |||
the segment. Likewise, the "after" keyword indicates the new member is | identified in the segment. Likewise, the "after" keyword indicates | |||
added to the collection's ordering immediately following the position of | the new member is added to the collection's ordering immediately | |||
the member identified in the segment. | following the position of the member identified in the segment. | |||
If the request is replacing an existing resource, and the Position | If the request is replacing an existing resource, and the Position | |||
header is present, the server MUST remove the internal member URI from | header is present, the server MUST remove the internal member URI | |||
its previous position, and then insert it at the requested position. | from its previous position, and then insert it at the requested | |||
position. | ||||
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. | ||||
10 Properties | ||||
10.1 orderingtype Property | ||||
Name: orderingtype | ||||
Namespace: DAV: | ||||
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. | ||||
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. | ||||
<!ELEMENT orderingtype (unordered | custom | href) > | ||||
11 XML Elements | ||||
11.1 unordered XML Element | ||||
Name: unordered | ||||
Namespace: DAV: | ||||
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. | ||||
<!ELEMENT unordered EMPTY > | ||||
11.2 custom XML Element | ||||
Name: custom | If an attempt is made to use the Position header on a collection that | |||
Namespace: DAV: | is unordered, the server MUST fail the request with a 409 (Conflict) | |||
Purpose: A value of the DAV:orderingtype property that indicates that | status code. | |||
the collection is ordered, but the semantics of the ordering | ||||
are not being advertised. | ||||
<!ELEMENT custom EMPTY > | 10 XML Elements | |||
11.3 order XML Element | 10.1 order XML Element | |||
Name: order | Name: order | |||
Namespace: DAV: | Namespace: DAV: | |||
Purpose: For use with the new ORDERPATCH method. Describes a change | Purpose: For use with the new ORDERPATCH method. Describes a change | |||
to be made in a collection's ordering semantics or in the | to be made in a collection's ordering semantics or in the | |||
positions of its members in the ordering or both. | positions of its members in the ordering or both. | |||
Value: An optional identifier of an ordering semantics for the | Value: An optional identifier of an ordering semantics for the | |||
collection, followed by a list of changes to be made in the | collection, followed by a list of changes to be made in | |||
positions of the members in the collection's ordering. | the positions of the members in the collection's ordering. | |||
<!ELEMENT order (orderingtype?, ordermember*) > | <!ELEMENT order (orderingtype?, ordermember*) > | |||
11.4 ordermember XML Element | 10.2 ordermember XML Element | |||
Name: ordermember | Name: ordermember | |||
Namespace: DAV: | Namespace: DAV: | |||
Purpose: Occurs in the order XML element, and describes the new | Purpose: Occurs in the order XML element, and describes the new | |||
position of a single internal member URI in the collection's | position of a single internal member URI in the | |||
ordering. | collection's ordering. | |||
Value: An href containing a member's path segment, and a | Value: An href containing a member's path segment, and a | |||
description of its new position in the ordering. The href | description of its new position in the ordering. The href | |||
XML element is defined in [WebDAV], Section 11.3. | XML element is defined in [RFC2518], Section 11.3. | |||
<!ELEMENT ordermember (href, position) > | <!ELEMENT ordermember (href, position) > | |||
11.5 position XML Element | 10.3 position XML Element | |||
Name: position | Name: position | |||
Namespace: DAV: | Namespace: DAV: | |||
Purpose: Occurs in the ordermember XML element. Describes the new | Purpose: Occurs in the ordermember XML element. Describes the new | |||
position in a collection's ordering of one of the members it | position in a collection's ordering of one of the members | |||
contains. | it contains. | |||
Value: The new position can be described as first in the | Value: The new position can be described as first in the | |||
collection's ordering, last in the collection's ordering, | collection's ordering, last in the collection's ordering, | |||
immediately before some other collection member, or | immediately before some other collection member, or | |||
immediately after some other collection member. | immediately after some other collection member. | |||
<!ELEMENT position (first | last | before | after)> | <!ELEMENT position (first | last | before | after)> | |||
11.6 first XML Element | 10.4 first XML Element | |||
Name: first | Name: first | |||
Namespace: DAV: | Namespace: DAV: | |||
Purpose: Occurs in the position XML element. Specifies that the | Purpose: Occurs in the position XML element. Specifies that the | |||
member should be placed first in the collection's ordering. | member should be placed first in the collection's | |||
ordering. | ||||
<!ELEMENT first EMPTY > | <!ELEMENT first EMPTY > | |||
11.7 last XML Element | 10.5 last XML Element | |||
Name: last | Name: last | |||
Namespace: DAV: | Namespace: DAV: | |||
Purpose: Occurs in the position XML element. Specifies that the | Purpose: Occurs in the position XML element. Specifies that the | |||
member should be placed last in the collection's ordering. | member should be placed last in the collection's ordering. | |||
<!ELEMENT last EMPTY > | <!ELEMENT last EMPTY > | |||
11.8 before XML Element | 10.6 before XML Element | |||
Name: before | Name: before | |||
Namespace: DAV: | Namespace: DAV: | |||
Purpose: Occurs in the position XML element. Specifies that the | Purpose: Occurs in the position XML element. Specifies that the | |||
member should be placed immediately before the member in the | member should be placed immediately before the member in | |||
enclosed segment XML element in the collection's ordering. | the enclosed segment XML element in the collection's | |||
Value: URI (relative to the parent collection) of the member | ordering. | |||
it precedes in the ordering | Value: URI (relative to the parent collection) of the member it | |||
precedes in the ordering | ||||
<!ELEMENT before segment > | <!ELEMENT before segment > | |||
11.9 after XML Element | 10.7 after XML Element | |||
Name: after | Name: after | |||
Namespace: DAV: | Namespace: DAV: | |||
Purpose: Occurs in the position XML element. Specifies that the | Purpose: Occurs in the position XML element. Specifies that the | |||
member should be placed immediately after the member in the | member should be placed immediately after the member in | |||
enclosed segment XML element in the collection's ordering. | the enclosed segment XML element in the collection's | |||
Value: URI (relative to the parent collection) of the member | ordering. | |||
it follows in the ordering | ||||
Value: URI (relative to the parent collection) of the member it | ||||
follows in the ordering | ||||
<!ELEMENT after segment > | <!ELEMENT after segment > | |||
11.10 segment XML Element | 10.8 segment XML Element | |||
Name: segment | Name: segment | |||
Namespace: DAV: | Namespace: DAV: | |||
Purpose: Identifies a member of a collection, used in the DAV:before | Purpose: Identifies a member of a collection, used in the | |||
and DAV:after elements, to define one member's position in | DAV:before and DAV:after elements, to define one member's | |||
a collection ordering relative to another member of the | position in a collection ordering relative to another | |||
collection. | member of the collection. | |||
Value: segment ; as defined in section 3.3 of [URI]. | Value: segment ; as defined in section 3.3 of [RFC2396]. | |||
<!ELEMENT segment (#PCDATA)> | <!ELEMENT segment (#PCDATA)> | |||
12 Capability Discovery | 11 Capability Discovery | |||
Sections 9.1 and 15 of [WebDAV] describe the use of compliance classes | Sections 9.1 and 15 of [RFC2518] describe the use of compliance | |||
with the DAV header in responses to OPTIONS, to indicate which parts of | classes with the DAV header in responses to OPTIONS, to indicate | |||
the Web Distributed Authoring protocols the resource supports. This | which parts of the Web Distributed Authoring protocols the resource | |||
specification defines an OPTIONAL extension to [WebDAV]. It defines a | supports. This specification defines an OPTIONAL extension to | |||
new compliance class, called orderedcoll, for use with the DAV header in | [RFC2518]. It defines a new compliance class, called orderedcoll, for | |||
responses to OPTIONS requests. If a collection resource does support | use with the DAV header in responses to OPTIONS requests. If a | |||
ordering, its response to an OPTIONS request may indicate that it does, | collection resource does support ordering, its response to an OPTIONS | |||
by listing the new ORDERPATCH method as one it supports, and by listing | request may indicate that it does, by listing the new ORDERPATCH | |||
the new orderedcoll compliance class in the DAV header. | method as one it supports, and by listing the new orderedcoll | |||
compliance class in the DAV header. | ||||
When responding to an OPTIONS request, only a collection or a null | When responding to an OPTIONS request, only a collection or a null | |||
resource can include orderedcoll in the value of the DAV header. By | resource can include orderedcoll in the value of the DAV header. By | |||
including orderedcoll, the resource indicates that its internal member | including orderedcoll, the resource indicates that its internal | |||
URIs can be ordered. It implies nothing about whether any collections | member URIs can be ordered. It implies nothing about whether any | |||
identified by its internal member URIs can be ordered. | collections identified by its internal member URIs can be ordered. | |||
12.1 Example: Discovery of Support for Ordering | Furthermore, RFC 3253 [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. | ||||
11.1 Example: Using OPTIONS for the Discovery of Support for Ordering | ||||
>> Request: | >> Request: | |||
OPTIONS /somecollection/ HTTP/1.1 | OPTIONS /somecollection/ HTTP/1.1 | |||
HOST: somehost.org | HOST: somehost.org | |||
>> Response: | >> Response: | |||
HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
Date: Tue, 20 Jan 1998 20:52:29 GMT | Date: Tue, 20 Jan 1998 20:52:29 GMT | |||
Connection: close | Connection: close | |||
Accept-Ranges: none | Accept-Ranges: none | |||
Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, COPY, MOVE, MKCOL, | Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, COPY, MOVE, | |||
PROPFIND, PROPPATCH, LOCK, UNLOCK, ORDERPATCH | MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, ORDERPATCH | |||
Public: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, COPY, MOVE, MKCOL, | ||||
PROPFIND, PROPPATCH, LOCK, UNLOCK, BIND, MKREF, ORDERPATCH | ||||
DAV: 1, 2, orderedcoll | DAV: 1, 2, orderedcoll | |||
The DAV header in the response indicates that the resource | The DAV header in the response indicates that the resource | |||
/somecollection/ is level 1 and level 2 compliant, as defined in | /somecollection/ is level 1 and level 2 compliant, as defined in | |||
[WebDAV]. In addition, /somecollection/ supports ordering. The Allow | [RFC2518]. In addition, /somecollection/ supports ordering. The Allow | |||
header indicates that ORDERPATCH requests can be submitted to | header indicates that ORDERPATCH requests can be submitted to | |||
/somecollection/. The Public header shows that other Request-URIs on | /somecollection/. | |||
the server support additional methods. | ||||
13 Security Considerations | 11.2 Example: Using Live Properties for the Discovery of Ordering | |||
>> Request: | ||||
PROPFIND /somecollection HTTP/1.1 | ||||
Host: somehost.org | ||||
Depth: 0 | ||||
Content-Type: text/xml; charset="utf-8" | ||||
Content-Length: xxx | ||||
<?xml version="1.0" encoding="UTF-8" ?> | ||||
<propfind xmlns="DAV:"> | ||||
<prop> | ||||
<supported-live-property-set/> | ||||
<supported-method-set/> | ||||
</prop> | ||||
</propfind> | ||||
>> Response: | ||||
HTTP/1.1 207 Multi-Status | ||||
Content-Type: text/xml; charset="utf-8" | ||||
Content-Length: xxx | ||||
<?xml version="1.0" encoding="utf-8" ?> | ||||
<multistatus xmlns="DAV:"> | ||||
<response> | ||||
<href>http://somehost.org/somecollection</href> | ||||
<propstat> | ||||
<prop> | ||||
<supported-live-property-set> | ||||
<supported-live-property> | ||||
<prop><orderingtype/></prop> | ||||
</supported-live-property> | ||||
... other live properties omitted for brevity ... | ||||
</supported-live-property-set> | ||||
<supported-method-set> | ||||
<supported-method name="COPY" /> | ||||
<supported-method name="DELETE" /> | ||||
<supported-method name="GET" /> | ||||
<supported-method name="HEAD" /> | ||||
<supported-method name="LOCK" /> | ||||
<supported-method name="MKCOL" /> | ||||
<supported-method name="MOVE" /> | ||||
<supported-method name="OPTIONS" /> | ||||
<supported-method name="ORDERPATCH" /> | ||||
<supported-method name="POST" /> | ||||
<supported-method name="PROPFIND" /> | ||||
<supported-method name="PROPPATCH" /> | ||||
<supported-method name="PUT" /> | ||||
<supported-method name="TRACE" /> | ||||
<supported-method name="UNLOCK" /> | ||||
</supported-method-set> | ||||
</prop> | ||||
<status>HTTP/1.1 200 OK</status> | ||||
</propstat> | ||||
</response> | ||||
</multistatus> | ||||
Note that actual responses MUST contain a complete list of supported | ||||
live properties. | ||||
12 Security Considerations | ||||
This section is provided to make WebDAV applications aware of the | This section is provided to make WebDAV applications aware of the | |||
security implications of this protocol. | security implications of this protocol. | |||
All of the security considerations of HTTP/1.1 and the WebDAV | All of the security considerations of HTTP/1.1 and the WebDAV | |||
Distributed Authoring Protocol specification also apply to this protocol | Distributed Authoring Protocol specification also apply to this | |||
specification. In addition, ordered collections introduce a new | protocol specification. In addition, ordered collections introduce a | |||
security concern. This issue is detailed here. | new security concern. This issue is detailed here. | |||
13.1 Denial of Service and DAV:orderingtype | 12.1 Denial of Service and DAV:orderingtype | |||
There may be some risk of denial of service at sites that are advertised | There may be some risk of denial of service at sites that are | |||
in the DAV:orderingtype property of collections. However, it is | advertised in the DAV:orderingtype property of collections. However, | |||
anticipated that widely-deployed applications will use hard-coded values | it is anticipated that widely-deployed applications will use hard- | |||
for frequently-used ordering semantics rather than looking up the | coded values for frequently-used ordering semantics rather than | |||
semantics at the location specified by DAV:orderingtype. This risk will | looking up the semantics at the location specified by | |||
be further reduced if clients observe the recommendation of Section 5.1 | DAV:orderingtype. This risk will be further reduced if clients | |||
that they not send requests to the URI in DAV:orderingtype. | observe the recommendation of Section 5.1 that they not send requests | |||
to the URI in DAV:orderingtype. | ||||
14 Internationalization Considerations | 13 Internationalization Considerations | |||
This specification follows the practices of [WebDAV] in encoding all | This specification follows the practices of [RFC2518] in encoding all | |||
human-readable content using XML [XML] and in the treatment of names. | human-readable content using [XML] and in the treatment of names. | |||
Consequently, this specification complies with the IETF Character Set | Consequently, this specification complies with the IETF Character Set | |||
Policy [RFC2277]. | Policy [RFC2277]. | |||
WebDAV applications MUST support the character set tagging, character | WebDAV applications MUST support the character set tagging, character | |||
set encoding, and the language tagging functionality of the XML | set encoding, and the language tagging functionality of the XML | |||
specification. This constraint ensures that the human-readable content | specification. This constraint ensures that the human-readable | |||
of this specification complies with [RFC2277]. | content of this specification complies with [RFC2277]. | |||
As in [WebDAV}, names in this specification fall into three categories: | As in [RFC2518], names in this specification fall into three | |||
names of protocol elements such as methods and headers, names of XML | categories: names of protocol elements such as methods and headers, | |||
elements, and names of properties. Naming of protocol elements follows | names of XML elements, and names of properties. Naming of protocol | |||
the precedent of HTTP, using English names encoded in USASCII for | elements follows the precedent of HTTP, using English names encoded | |||
methods and headers. The names of XML elements used in this | in USASCII for methods and headers. The names of XML elements used in | |||
specification are English names encoded in UTF-8. | this specification are English names encoded in UTF-8. | |||
For error reporting, [WebDAV] follows the convention of HTTP/1.1 status | For error reporting, [RFC2518] follows the convention of HTTP/1.1 | |||
codes, including with each status code a short, English description of | status codes, including with each status code a short, English | |||
the code (e.g., 423 Locked). Internationalized applications will ignore | description of the code (e.g., 423 Locked). Internationalized | |||
this message, and display an appropriate message in the user's language | applications will ignore this message, and display an appropriate | |||
and character set. | message in the user's language and character set. | |||
This specification introduces no new strings that are displayed to users | This specification introduces no new strings that are displayed to | |||
as part of normal, error-free operation of the protocol. | users as part of normal, error-free operation of the protocol. | |||
For rationales for these decisions and advice for application | For rationales for these decisions and advice for application | |||
implementors, see [WebDAV]. | implementors, see [RFC2518]. | |||
15 IANA Considerations | 14 IANA Considerations | |||
This document uses the namespaces defined by [WebDAV] for properties and | This document uses the namespaces defined by [RFC2518] for properties | |||
XML elements. All other IANA considerations mentioned in [WebDAV] also | and XML elements. All other IANA considerations mentioned in | |||
apply to this document. | [RFC2518] also apply to this document. | |||
16 Copyright | 15 Copyright | |||
To be supplied by the RFC Editor. | To be supplied by the RFC Editor. | |||
17 Intellectual Property | 16 Intellectual Property | |||
To be supplied by the RFC Editor. | To be supplied by the RFC Editor. | |||
18 Acknowledgements | 17 Acknowledgements | |||
This draft has benefited from thoughtful discussion by Jim Amsden, Steve | This draft has benefited from thoughtful discussion by Jim Amsden, | |||
Carter, Tyson Chihaya, Ken Coar, Ellis Cohen, Bruce Cragun, Spencer | Steve Carter, Tyson Chihaya, Geoff Clemm, Ken Coar, Ellis Cohen, | |||
Dawkins, Mark Day, Rajiv Dulepet, David Durand, Roy Fielding, Yaron | Bruce Cragun, Spencer Dawkins, Mark Day, Rajiv Dulepet, David Durand, | |||
Goland, Fred Hitt, Alex Hopmann, Marcus Jager, Chris Kaler, Manoj | Roy Fielding, Yaron Goland, Fred Hitt, Alex Hopmann, Marcus Jager, | |||
Kasichainula, Rohit Khare, Daniel LaLiberte, Lisa Lippert, Steve Martin, | Chris Kaler, Manoj Kasichainula, Rohit Khare, Daniel LaLiberte, Lisa | |||
Larry Masinter, Jeff McAffer, Surendra Koduru Reddy, Max Rible, Sam | Lippert, Steve Martin, Larry Masinter, Jeff McAffer, Surendra Koduru | |||
Ruby, Bradley Sergeant, Nick Shelness, John Stracke, John Tigue, John | Reddy, Max Rible, Sam Ruby, Bradley Sergeant, Nick Shelness, John | |||
Turner, Kevin Wiggen, and others. | Stracke, John Tigue, John Turner, Kevin Wiggen, and others. | |||
19 References | Normative References | |||
[RFC2277] H.T. Alvestrand, "IETF Policy on Character Sets and | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Languages." RFC 2277, BCP 18. Uninett. January, 1998. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[URI] T. Berners-Lee, R. Fielding, L. Masinter, "Uniform Resource | [RFC2277] Alvestrand, H.T., "IETF Policy on Character Sets and | |||
Identifiers (URI): Generic Syntax." RFC 2396. MIT/LCS, U.C. Irvine, | Languages", BCP 18, RFC 2277, January 1998. | |||
Xerox. August, 1998. | ||||
[RFC2119] S. Bradner, "Key words for use in RFCs to Indicate Requirement | [RFC2396] Berners-Lee, T., Fielding, R.T. and Masinter, L., "Uniform | |||
Levels." RFC 2119, BCP 14. Harvard University. March, 1997. | Resource Identifiers (URI): Generic Syntax", RFC 2396, | |||
August 1998. | ||||
[XML] T. Bray, J. Paoli, C.M. Sperberg-McQueen, "Extensible Markup | [RFC2518] Goland, Y., Whitehead, E., Faizi, A., Carter, S.R. and | |||
Language (XML)." World Wide Web Consortium Recommendation REC-xml- | Jensen, D., "HTTP Extensions for Distributed Authoring -- | |||
19980210. http://www.w3.org/TR/1998/REC-xml-19980210. | WEBDAV", RFC 2518, February 1999. | |||
[HTTP] R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |||
Leach, T. Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1." RFC | Masinter, L., Leach, P. and Berners-Lee, T., "Hypertext | |||
2616. UC Irvine, Compaq, W3C, Xerox, Microsoft. June, 1999. | Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | |||
[WebDAV] Y. Y. Goland, E. J. Whitehead, Jr., A. Faizi, S. R. Carter, D. | [RFC3253] Clemm, G., Amsden, J., Ellison, T., Kaler, C. and | |||
Jensen, "HTTP Extensions for Distributed Authoring - WebDAV." RFC 2518. | Whitehead, J., "Versioning Extensions to WebDAV", RFC | |||
Microsoft, U.C. Irvine, Netscape, Novell. February, 1999. | 3253, March 2002. | |||
20 Authors' Addresses | [XML] World Wide Web Consortium, "Extensible Markup Language | |||
(XML) 1.0", W3C XML, February 1998. | ||||
J. Slein | Author's Addresses | |||
Judith Slein | ||||
Xerox Corporation | Xerox Corporation | |||
800 Phillips Road, 105-50C | 800 Phillips Road, 105-50C | |||
Webster, NY 14580 | Webster, NY 14580 | |||
Email: jslein@crt.xerox.com | ||||
E. J. Whitehead, Jr. | EMail: jslein@crt.xerox.com | |||
Dept. of Information and Computer Science | ||||
University of California, Irvine | ||||
Irvine, CA 92697-3425 | ||||
Email: ejw@ics.uci.edu | ||||
J. Davis | Jim Whitehead | |||
CourseNet Systems | UC Santa Cruz, Dept. of Computer Science | |||
170 Capp Street | 1156 High Street | |||
San Francisco, CA 94110 | Santa Cruz, CA 95064 | |||
Email: jrd3@alum.mit.edu | US | |||
G. Clemm | EMail: ejw@cse.ucsc.edu | |||
Rational Software Corporation | Jim Davis | |||
20 Maguire Road | Intelligent Markets | |||
Lexington, MA 02173-3104 | 410 Jessie Street 6th floor | |||
Email: gclemm@rational.com | San Francisco, CA 94103 | |||
C. Fay | EMail: jrd3@alum.mit.edu | |||
Chuck Fay | ||||
FileNet Corporation | FileNet Corporation | |||
3565 Harbor Boulevard | 3565 Harbor Boulevard | |||
Costa Mesa, CA 92626-1420 | Costa Mesa, CA 92626-1420 | |||
Email: cfay@filenet.com | ||||
J. Crawford | EMail: cfay@filenet.com | |||
Jason Crawford | ||||
IBM Research | IBM Research | |||
P.O. Box 704 | P.O. Box 704 | |||
Yorktown Heights, NY 10598 | Yorktown Heights, NY 10598 | |||
Email: ccjason@us.ibm.com | ||||
21 Appendices | EMail: ccjason@us.ibm.com | |||
21.1 Appendix 1: Extensions to the WebDAV Document Type Definition | Julian F. Reschke | |||
greenbytes GmbH | ||||
Salzmannstrasse 152 | ||||
Muenster, NW 48159 | ||||
Germany | ||||
Phone: +49 251 2807760 | ||||
Fax: +49 251 2807761 | ||||
EMail: julian.reschke@greenbytes.de | ||||
URI: http://greenbytes.de/tech/webdav/ | ||||
A Extensions to the WebDAV Document Type Definition | ||||
<!--============= XML Elements from Section 11 ================--> | <!--============= XML Elements from Section 11 ================--> | |||
<!ELEMENT unordered EMPTY > | <!ELEMENT unordered EMPTY > | |||
<!ELEMENT custom EMPTY > | <!ELEMENT custom EMPTY > | |||
<!ELEMENT order (orderingtype?, ordermember*) > | <!ELEMENT order (orderingtype?, ordermember*) > | |||
<!ELEMENT ordermember (href, position) > | <!ELEMENT ordermember (href, position) > | |||
<!ELEMENT position (first | last | before | after)> | <!ELEMENT position (first | last | before | after)> | |||
<!ELEMENT first EMPTY > | <!ELEMENT first EMPTY > | |||
<!ELEMENT last EMPTY > | <!ELEMENT last EMPTY > | |||
<!ELEMENT before segment > | <!ELEMENT before segment > | |||
<!ELEMENT after segment > | <!ELEMENT after segment > | |||
<!ELEMENT segment (#PCDATA)> | <!ELEMENT segment (#PCDATA)> | |||
<!--============= Property Elements from Section 10 =============--> | <!--============= Property Elements from Section 10 =============--> | |||
<!ELEMENT orderingtype (unordered | custom | href) > | <!ELEMENT orderingtype (unordered | custom | href) > | |||
Expires June 20, 2000 | B Change Log | |||
B.1 Since draft-ietf-webdav-ordering-protocol dated December 1999 | ||||
Updated contact information for all previous authors. | ||||
Specify charset when using text/xml media type. | ||||
Made sure artwork fits into 72 columns. | ||||
Removed "Public" header from OPTIONS example. | ||||
Added Julian Reschke to list of authors. | ||||
Fixed broken XML in PROPFIND example and added DAV:orderingtype to | ||||
list of requested properties. | ||||
Added support for DAV:supported-live-property-set and DAV:supported- | ||||
method-set as mandatory features. | ||||
B.2 Since draft-ietf-webdav-ordering-protocol-02 | ||||
Updated change log to refer to expired draft version as "December | ||||
1999" version. | ||||
Started rewrite marshalling in RFC3253-style and added precondition | ||||
and postcondition definitions. | ||||
On his request, removed Geoff Clemm's name from the author list | ||||
(moved to Acknowledgments). | ||||
Renamed "References" to "Normative References". | ||||
Removed reference to "MKREF" method. | ||||
Full Copyright Statement | ||||
Copyright (C) The Internet Society (2002). All Rights Reserved. | ||||
This document and translations of it may be copied and furnished to | ||||
others, and derivative works that comment on or otherwise explain it | ||||
or assist in its implementation may be prepared, copied, published | ||||
and distributed, in whole or in part, without restriction of any | ||||
kind, provided that the above copyright notice and this paragraph are | ||||
included on all such copies and derivative works. However, this | ||||
document itself may not be modified in any way, such as by removing | ||||
the copyright notice or references to the Internet Society or other | ||||
Internet organizations, except as needed for the purpose of | ||||
developing Internet standards in which case the procedures for | ||||
copyrights defined in the Internet Standards process must be | ||||
followed, or as required to translate it into languages other than | ||||
English. | ||||
The limited permissions granted above are perpetual and will not be | ||||
revoked by the Internet Society or its successors or assigns. | ||||
This document and the information contained herein is provided on an | ||||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | ||||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | ||||
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | ||||
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | ||||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
Acknowledgement | ||||
Funding for the RFC editor function is currently provided by the | ||||
Internet Society. | ||||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |