RE: Collections

> By the way, I would love to get a pointer to the latest
> definition of a web-dav collection. I haven't been able
> to find it yet.
>

From draft-ietf-webdav-protocol-02.txt, the WebDAV definition of a 
collection is:

3.1.1     Collection Resources

          A collection is a Web resource type whose primary state is a set
          of URIs and associated values that are recorded as properties on
          the resource.  The URIs identify resources that are members of
          the collection.  The values associated with each URI include
          information such as the Last Modified Date, Entity Tag, Creation
          Date, Content Type, Display Name, and whether the member is a
          collection.

          A member of a collection is either an internal member resource,
          which MUST have a URI that is relative to the base URI of the
          collection, or an external member resource, which has a URI which
          is not relative to the base URI of the collection. External
          member resources are further subdivided into propagate members,
          which have recursive method invocations propagated to them, and
          no-propagate members, which do not.

The following operations are defined upon a collection:

MKCOL - create a new collection
ADDREF - add an external member resource
DELREF - remove an external member resource
INDEX - list the contents of a collection

The existing DELETE method (RFC 2068) removes a collection.

The INDEX method is specified as follows:

The INDEX method returns a machine-readable representation of the 
membership of the resource at the Request-URI.  For a collection, INDEX 
MUST return a machine-readable list of its members.  For other resources, 
the information returned by INDEX is undefined, and MAY vary.  The request 
message body of an INDEX request SHOULD be ignored.

 The default INDEX response for a resource is a text/xml HTTP entity (i.e., 
an Extensible Markup Language (XML) document) that contains a single XML 
element called collectionresource which describes the collection, and a set 
of XML elements called memberesource which describe the members of the 
collection.

The response from INDEX is cacheable, and SHOULD be accompanied by an ETag 
header (see section 13.3.4 of RFC 2068). If GET and INDEX return different 
entities for the same resource state, they MUST return different entity 
tags.

The server MUST transmit the following XML elements for each member 
resource of a collection: Ref, IsCollection, Content-Type, External. The 
server MUST transmit the following XML elements if it can generate any 
meaningful values for them: Creation-Date, Last-Modified, DisplayName, 
Content-Language.   The server SHOULD transmit Etag XML elements for each 
member (see section 13.3.4 of RFC 2068).

The value of content-type, last-modified, and etag XML elements MUST be 
identical to the value of the response header field of the same name in the 
HTTP/1.1 specification.  Since the HTTP/1.1 header fields are described in 
terms of the on-the-wire entity, the values presented by INDEX are those 
that would be generated if the resource was accessed using the GET method 
without content negotiation.

An example of INDEX is as follows:

INDEX /user/yarong/dav_drafts/ HTTP/1.1
Host: www.microsoft.com


HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: xxx
Last-Modified: xxx
ETag: "fooyyybar"


<?XML:Namespace href="http://www.ietf.org/standards/dav/" As = "D"/>
     <D:CollectionResource>
            <MemberResource>
                 <XML:Href>namespace.doc</XML:Href>
                 <IsCollection>false</IsCollection>
                 <Content-Type>application/msword</Content-Type>
                 <External>false</External>
                 <Creation-Date>Thu, 20 Mar 1997 23:05:25 
GMT</Creation-Date>
                 <Last-Modified>Fri, 22 Aug 1997 18:22:56 
GMT</Last-Modified>
                 <Etag>8675309</Etag>
                 <DisplayName>WebDAV Name Space Operations 
Draft</DisplayName>
                 <Content-Language>en</Content-Language>
           </MemberResource>
       </D:CollectionResource>


This example shows the result of the INDEX method applied to the collection 
resource
http://www.microsoft.com/er/yarong/dav_drafts/.  It returns a response body 
in XML format, which gives information about the container's sole member, 
http://www.microsoft.com/users/yarong/dav_drafts/namespace.doc

- Jim

Received on Tuesday, 16 September 1997 19:14:36 UTC