Subject: Proposal for narrowing PROPFINDs a bit

From: John Stracke <[email-masked]>
Date: Wed, 11 Aug 1999 13:46:22 -0400

I'm working on a WebDAV-based app (it's not a normal content management
scenario, but DAV functionality turned out to be useful), and I
encountered a case where I needed to extend PROPFIND so that it could
list all the properties in a given namespace or namespaces.  It occurred
to me that such a mechanism might be more generally applicable, so I've
written up a Draft (attached; also available at
<http://barrayar.ecal.com/ietf/dav/>) proposing it.  I'd appreciate any
comments.

(I'm afraid I can't talk about why I needed this just yet, but I did
include a couple of other scenarios in the Draft.)

--
/=============================================================\
|John Stracke    | My opinions are my own | S/MIME & HTML OK  |
[email-masked]|============================================|
|Chief Scientist | NT's lack of reliability is only surpassed |
|eCal Corp.      |  by its lack of scalability. -- John Kirch |
\=============================================================/

Network Working Group                             J. Stracke, eCal Corp.
INTERNET DRAFT
<draft-stracke-webdav-propfind-space-00>
Expires April, 2000                                      August 10, 1999

          WebDAV PROPFIND Extension To List Specified Namespaces

1 Status of this Document

   This document is an Internet-Draft and is in full conformance with 
   all provisions of Section 10 of RFC2026.

   Internet-Drafts are working documents of the Internet Engineering 
   Task Force (IETF), its areas, and its working groups. Note that other
   groups may also distribute working documents as Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any 
   time. It is inappropriate to use Internet-Drafts as reference 
   material or to cite them other than as ``work in progress.''

   The list of current Internet-Drafts can be accessed at 
   <http://www.ietf.org/ietf/1id-abstracts.txt>

   The list of Internet-Draft Shadow Directories can be accessed at 
   <http://www.ietf.org/shadow.html>

   Distribution of this document is unlimited. Please send comments to 
   [email-masked] or to the [email-masked] discussion list.

2 Abstract

   This document specifies an extension to the [WEBDAV] PROPFIND method 
   to permit a WebDAV client to request all properties which belong to a
   specified namespace or namespaces.

3 Introduction

   This document specifies an extension to the [WEBDAV] PROPFIND method 
   to permit a WebDAV client to request all properties which belong to a
   specified namespace or namespaces.

   A WebDAV application using a custom namespace for 
   application-specific data may occasionally need to use PROPFIND to 
   list all a resource's properties from that namespace. (Similarly, a 
   WebDAV client might need to know all DAV: properties, but not care 
   about non-standard properties.) In such a case, the client must 
   choose between the <allprop> element, which will retrieve all 
   properties on the resource, and the <prop> element, which will 
   retrieve specified properties only. The problem with <allprop> is 
   that the resource may have many properties from other namespaces, in 
   which the application is not interested. The problem with <prop> is 
   that the client may not know all the property names which may be 
   present (for example, if the client is too general-purpose to permit 
   it to be configured with the list of property names, or if property 
   name munging is being used). A third choice would be to use 

Stracke                                                       [Page 1]

INTERNET-DRAFT       WebDAV PROPFIND Namespace List      August 10, 1999

   <propname> to list all the resource's properties without their 
   contents, then use <prop> with just the properties in the desired 
   namespace; the problem with this approach is that it requires an 
   extra HTTP request.

   This document proposes a middle ground, an extension to <allprop> 
   which provides a list of namespaces to search.

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALLNOT", 
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and"OPTIONAL" in this 
   document are to be interpreted as described in [MUSTS] .

4 Extension definition

   Two new XML elements are proposed, <namespace> and <namespaces>. In 
   the idiom of [WEBDAV]:

4.1 namespaces XML Element

   Name: namespaces

   Namespace: DAV:

   Purpose: The namespaces XML element specifies that the enclosing 
   allprop or propname element applies only to properties belonging to 
   the namespaces listed in the enclosed namespace elements.

4.2 namespace XML Element

   Name: namespace

   Namespace: DAV:

   Purpose: The namespace XML element specifies a namespace in the 
   namespaces list. <namespace> appears inside <namespaces>, and has a 
   single attribute, uri, the URI of the namespace.

5 Examples

5.1 Fetching all DAV: properties

   Request:
         PROPFIND /index.html HTTP/1.1
         Host: www.example.com
         Content-Length: xxxx
         Content-Type: text/xml

         <D:propfind xmlns:D="DAV:">
         <D:allprop>
         <D:namespaces>
         <D:namespace uri="DAV:"/>
         </D:namespaces>
         </D:allprop>

Stracke                                                 [Page 2]

INTERNET-DRAFT       WebDAV PROPFIND Namespace List      August 10, 1999

         </D:propfind>

   Response:
         HTTP/1.1 200 OK
         Content-Type: text/xml
         Content-Length: xxxx

         <D:prop xmlns:D="DAV:">
         <D:lockentry>
         <D:lockscope><D:exclusive/></D:lockscope>
         <D:locktype><D:write/></D:locktype>
         </D:lockentry>

         <D:lockentry>
         <D:lockscope><D:shared/></D:lockscope>
         <D:locktype><D:write/></D:locktype>
         </D:lockentry>

         <D:creationdate>1999-08-11T12:12:12Z</D:creationdate>
         <D:displayname>Example.com, The Fictious Site!</D:displayname>
         <D:getcontentlength>17</D:getcontentlength>
         <D:getcontenttype>text/html</D:getcontenttype>
         <D:getetag>xyzzy</D:getetag>
         <D:getlastmodified>1999-08-11T12:12:14Z</D:getlastmodified>
         <D:resourcetype></D:resourcetype>

         </D:supportedlock>

         </D:prop>

5.2 Listing names of properties in two namespaces

   Request:
         PROPFIND /index.html HTTP/1.1
         Host: www.example.com
         Content-Length: xxxx
         Content-Type: text/xml

         <D:propfind xmlns:D="DAV:">
         <D:propname>
         <D:namespaces>
         <D:namespace uri="http://foo.example.com"/>
         <D:namespace uri="mailto:[email-masked]"/>
         </D:namespaces>
         </D:propfind>
         </D:propname>

   Response:
         <D:prop xmlns:D="DAV:"
         xmlns:F="http://foo.example.com"

Stracke                                                 [Page 3]

INTERNET-DRAFT       WebDAV PROPFIND Namespace List      August 10, 1999

         xmlns:M="mailto:[email-masked]">
         <F:bar/>
         <M:fred/>
         </D:prop>

6 Compatibility Considerations

   Section 14 of [WEBDAV] specifies:

         "All DAV compliant resources MUST ignore any unknown XML 
         element and all its children encountered while processing a DAV
         method that uses XML as its command language."

   As a result, a client which uses <D:namespaces> on a server which 
   does not support it will get the base-level DAV behavior (listing all
   properties), exactly as if it had issued a base-level DAV request. 
   Therefore, a client which sends PROPFIND requests using 
   <D:namespaces> MUST accept responses which include properties not in 
   the listed namespace(s).

   Of course, it is always risky assuming that all implementations of a 
   young standard adhere to all points of the standard. In this case, 
   the risk is mitigated by the fact that section 23.3.2.2 of [WEBDAV] 
   presents a (hypothetical) similar extension, <E:leave-out>, and 
   states:

         "If the previous example were submitted to a server unfamiliar 
         with leave-out, the only result would be that the leave-out 
         element would be ignored and a propname would be executed."

   Nevertheless, since there may be some servers which, for whatever 
   reason, violate this prescription (say, if they attempt to validate 
   the XML request against the DTD in section 23.2 of [WEBDAV] ), a 
   client which uses <D:namespaces> SHOULD be aware that it may receive 
   a 400 Bad Request from such a server, and SHOULD be able to retry the
   request without using <D:namespaces>.

7 Internationalization Considerations

   This proposal builds on [WEBDAV], and inherits its 
   internationalizability.

8 IANA Considerations

   This proposal does not introduce any new IANA considerations, since 
   it does not specify any new namespaces (in the general sense), but 
   merely uses existing ones.

9 Security Considerations

   For a server, this proposal does not introduce any new security 
   considerations over those of [WEBDAV], since the information which is

Stracke                                                       [Page 4]

INTERNET-DRAFT       WebDAV PROPFIND Namespace List      August 10, 1999

   exposed is already available. There might be privacy considerations 
   for a client, since telling the server which namespaces one wishes to
   search does reveal some information. Implementors must balance this 
   concern against the efficiency gains this proposal offers.

10 Copyright

   The following copyright notice is copied from RFC 2026 [Bradner, 
   1996], section 10.4, and describes the applicable copyright for this 
   document.

   Copyright (C) The Internet Society April 5, 1998. 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 assignees.

   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.

11 Intellectual Property

   The following notice is copied from RFC 2026 [Bradner, 1996], section
   10.4, and describes the position of the IETF concerning intellectual 
   property claims made against this document.

   The IETF takes no position regarding the validity or scope of any 
   intellectual property or other rights that might be claimed to 
   pertain to the implementation or use other technology described in 
   this document or the extent to which any license under such rights 
   might or might not be available; neither does it represent that it 
   has made any effort to identify any such rights. Information on the 
   IETF's procedures with respect to rights in standards-track and 
   standards-related documentation can be found in BCP-11. Copies of 
   claims of rights made available for publication and any assurances of

Stracke                                                       [Page 5]

INTERNET-DRAFT       WebDAV PROPFIND Namespace List      August 10, 1999

   licenses to be made available, or the result of an attempt made to 
   obtain a general license or permission for the use of such 
   proprietary rights by implementors or users of this specification can
   be obtained from the IETF Secretariat.

   The IETF invites any interested party to bring to its attention any 
   copyrights, patents or patent applications, or other proprietary 
   rights which may cover technology that may be required to practice 
   this standard. Please address the information to the IETF Executive 
   Director.

12 Acknowledgements

   Some of the PROPFIND syntax in the examples was copied from examples 
   in [WEBDAV].

13 References

   [WEBDAV] Y. Y. Goland, E. J. Whitehead, Jr., A. Faizi, S. R. Carter, 
   D. Jensen, "Extensions for Distributed Authoring on the World Wide 
   Web - WebDAV." RFC 2518. Microsoft, U.C. Irvine, Netscape, Novell. 
   April, 1998.

   [MUSTS] Bradner, S., "Key words for use in RFCs to Indicate 
   Requirement Levels," BCP 14, RFC 2119, Harvard University, March 
   1997.

14 Author's Address

   J. Stracke
   eCal Corp.
   234 N. Columbus Blvd., 2nd Floor
   [email-masked]

Stracke                                                          [Page 6]