<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<!--  <?rfc private="Test"?> -->
<rfc xmlns:x='http://purl.org/net/xml2rfc/ext' xmlns:ed="http://greenbytes.de/2002/rfcedit" ipr="full2026" docName="draft-reschke-webdav-allprop-include-02">
  <x:link rel="up" href="http://greenbytes.de/tech/webdav/#draft-reschke-webdav-allprop-include"/>
  <x:link rel="prev" href="http://greenbytes.de/tech/webdav/draft-reschke-allprop-include-01.html"/>
  <x:link rel="next" href="http://greenbytes.de/tech/webdav/draft-reschke-allprop-include-03.html"/>
  <x:link rel="Bookmark" title="IETF WEBDAV Working Group" href="http://ftp.ics.uci.edu/pub/ietf/webdav/"/>
  <x:link rel="Alternate" title="(latest)" href="http://greenbytes.de/tech/webdav/draft-reschke-allprop-include-latest.html"/>
  <x:link rel="Alternate" title="draft 07" href="http://greenbytes.de/tech/webdav/draft-reschke-allprop-include-07.html"/>
  <x:link rel="Alternate" title="draft 06" href="http://greenbytes.de/tech/webdav/draft-reschke-allprop-include-06.html"/>
  <x:link rel="Alternate" title="draft 05" href="http://greenbytes.de/tech/webdav/draft-reschke-allprop-include-05.html"/>
  <x:link rel="Alternate" title="draft 04" href="http://greenbytes.de/tech/webdav/draft-reschke-allprop-include-04.html"/>
  <x:link rel="Alternate" title="draft 03" href="http://greenbytes.de/tech/webdav/draft-reschke-allprop-include-03.html"/>
  <x:link rel="Alternate" title="draft 02" href="http://greenbytes.de/tech/webdav/draft-reschke-allprop-include-02.html"/>
  <x:link rel="Alternate" title="draft 01" href="http://greenbytes.de/tech/webdav/draft-reschke-allprop-include-01.html"/>
  <x:link rel="Alternate" title="draft 00" href="http://greenbytes.de/tech/webdav/draft-reschke-allprop-include-00.html"/>
	<front>
    	<title abbrev="WebDAV PROPFIND/allprop/include">Including additional properties in WebDAV PROPFIND/allprop requests</title>

			<author initials="J. F." surname="Reschke" fullname="Julian F. Reschke">
				<organization abbrev="greenbytes">greenbytes GmbH</organization>
        <address>
        	<postal>
          	<street>Salzmannstrasse 152</street>
            <city>Muenster</city><region>NW</region><code>48159</code>
           	<country>Germany</country>
         	</postal>
    		  <phone>+49 251 2807760</phone>	
		    	<facsimile>+49 251 2807761</facsimile>	
				  <email>julian.reschke@greenbytes.de</email>	
				  <uri>http://greenbytes.de/tech/webdav/</uri>	
				</address>
			</author>
      
			<author initials="S." surname="Eissing" fullname="Stefan Eissing">
				<organization abbrev="greenbytes">greenbytes GmbH</organization>
        <address>
        	<postal>
          	<street>Salzmannstrasse 152</street>
            <city>Muenster</city><region>NW</region><code>48159</code>
           	<country>Germany</country>
         	</postal>
    		  <phone>+49 251 2807760</phone>	
		    	<facsimile>+49 251 2807761</facsimile>	
				  <email>stefan.eissing@greenbytes.de</email>	
				  <uri>http://greenbytes.de/tech/webdav/</uri>	
				</address>
			</author>

    <date month="August" year="2002" />
		<workgroup>WEBDAV Working Group</workgroup>
        <abstract><t>
Recent specifications extending the Web Distributed Authoring Protocol (WebDAV)
restrict the set of properties returned automatically upon a PROPFIND/allprop
request. This specification defines a method to add specific properties to
the set of properties returned upon PROPFIND/allprop.
        </t>
		<t>
Distribution of this document is unlimited. Please send comments to the 
Distributed Authoring and Versioning (WebDAV) working group at <eref target="mailto:w3c-dist-auth@w3.org">w3c-dist-auth@w3.org</eref>, which may be joined by sending a message with subject 
"subscribe" to <eref target="mailto:w3c-dist-auth-request@w3.org?subject=subscribe">w3c-dist-auth-request@w3.org</eref>.
		</t><t>
Discussions of the WEBDAV working group are archived at URL: 
<eref target="http://lists.w3.org/Archives/Public/w3c-dist-auth/">http://lists.w3.org/Archives/Public/w3c-dist-auth/</eref>.               
       	</t> 
</abstract>
	</front>

	<middle>


<section title="Notational Conventions">
<t>
	The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 
	"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 
	document are to be interpreted as described in <xref target="RFC2119" />.
</t>
</section>

<section title="Introduction">
<t>
	Recent specifications extending the "Web Distributed Authoring Protocol" (WebDAV,
  <xref target="RFC2518" />) like "Versioning Extensions to WebDAV" <xref target="RFC3253" />
  and "WebDAV Access Control Protocol" <xref target="ACL" /> restrict the set
  of properties returned automatically upon a PROPFIND/allprop request in
  order to avoid the expensive computation of properties that the client in many
  cases isn't interested in.
</t>
<t>
	However, this change from the behaviour defined in WebDAV can lead to
  situations where clients need to perform two requests to retrieve all properties
  they are interested in (one using PROPFIND/allprop, then PROPFIND/prop
  enumerating the new properties that weren't reported upon the first request).
  This specification defines a backward-compatible extension to add specific
  properties to the set of properties returned upon PROPFIND/allprop, thus
  saving at least one PROPFIND request.
</t>
<t>
  This document defines an extension element that could ultimately become 
  part of the core WebDAV protocol. Being just an individual
  submission, it currently defines it in the proprietary namespace
</t>
<figure><artwork>
  http://sapportals.com/xmlns/cm/webdav
</artwork></figure>
<t>
  instead of the "DAV:" namespace. It uses a prefix of "in:"
  for referring to elements in this namespace. However, WebDAV server and clients
  are free to use any prefix, provided that there is a namespace declaration that
  binds the prefix to the URI of the same namespace.
</t>
</section>

<section title="Extensions to PROPFIND/allprop">
<t>
	The "allprop" version of PROPFIND is extended to take an optional &lt;in:include&gt;
  element.
  When present, it contains a set of property names that shall be reported
  in addition to those properties that the server usually would return upon
  PROPFIND/allprop.
</t>
<section title="Example for PROPFIND/allprop/include with extended server">
<figure><preamble>
   >>Request</preamble>
<artwork><![CDATA[
PROPFIND  /container/front.html HTTP/1.1
Host: www.foo.bar
Depth: 1
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx

<?xml version="1.0" encoding="utf-8" ?>
<propfind xmlns="DAV:"
  xmlns:in="http://sapportals.com/xmlns/cm/webdav">
  <allprop/>
  <in:include>
    <checked-in/>
    <checked-out/>
  </in:include>
</propfind>
]]></artwork></figure>
<figure><preamble>
   >>Response</preamble>
<artwork><![CDATA[
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx

<?xml version="1.0" encoding="utf-8" ?>
<multistatus xmlns="DAV:">
  <response>
    <href>http://www.foo.bar/container/front.html<href>
      <propstat>
      <prop>
        <R:bigbox xmlns:R="http://www.foo.bar/boxschema/">
          <R:BoxType>Box type B</R:BoxType>
        </R:bigbox>
        <creationdate>1997-12-01T18:27:21-08:00</creationdate>
        <displayname>Example HTML resource</displayname>
        <getcontentlength>4525</getcontentlength>
        <getcontenttype>text/html</getcontenttype>
        <getetag>zzyzx</getetag>
        <getlastmodified
        >Monday, 12-Jan-98 09:25:56 GMT</getlastmodified>
        <resourcetype/>
        <supportedlock>
          <lockentry>
            <lockscope><exclusive/></lockscope>
            <locktype><write/></locktype>
          </lockentry>
          <lockentry>
            <lockscope><shared/></lockscope>
            <locktype><write/></locktype>
          </lockentry>
        </supportedlock>
        <checked-in>
          <href
          >http://www.foo.bar/versions/container/front.html-1</href>
        </checked-in>
      </prop>
      <status>HTTP/1.1 200 OK</status>
    </propstat>
    <propstat>
      <prop>
        <checked-out/>
      </prop>
      <status>HTTP/1.1 404 NOT FOUND</status>
    </propstat>
  </response>
</multistatus>
]]></artwork></figure>
<t>
	In this example, the server has recognized the extension element
  &lt;in:include&gt; and included the DAV: properties &lt;checked-in&gt;
  and &lt;checked-out&gt; (as defined in <xref target="RFC3253" />).
</t>
</section>

<section title="Example for PROPFIND/allprop/include with non-extended server" anchor="example-old">
<figure><preamble>
   >>Request</preamble>
<artwork><![CDATA[
PROPFIND  /container/front.html HTTP/1.1
Host: www.foo.bar
Depth: 1
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx

<?xml version="1.0" encoding="utf-8" ?>
<propfind xmlns="DAV:"
  xmlns:in="http://sapportals.com/xmlns/cm/webdav">
  <allprop/>
  <in:include>
    <checked-in/>
    <checked-out/>
  </in:include>
</propfind>
]]></artwork></figure>
<figure><preamble>
   >>Response</preamble>
<artwork><![CDATA[
HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx

<?xml version="1.0" encoding="utf-8" ?>
<multistatus xmlns="DAV:">
  <response>
    <href>http://www.foo.bar/container/front.html<href>
    <propstat>
      <prop>
        <R:bigbox xmlns:R="http://www.foo.bar/boxschema/">
          <R:BoxType>Box type B</R:BoxType>
        </R:bigbox>
        <creationdate>1997-12-01T18:27:21-08:00</creationdate>
        <displayname>Example HTML resource</displayname>
        <getcontentlength>4525</getcontentlength>
        <getcontenttype>text/html</getcontenttype>
        <getetag>zzyzx</getetag>
        <getlastmodified
        >Monday, 12-Jan-98 09:25:56 GMT</getlastmodified>
        <resourcetype/>
        <supportedlock>
          <lockentry>
            <lockscope><exclusive/></lockscope>
            <locktype><write/></locktype>
          </lockentry>
          <lockentry>
            <lockscope><shared/></lockscope>
            <locktype><write/></locktype>
           </lockentry>
         </supportedlock>
      </prop>
      <status>HTTP/1.1 200 OK</status>
    </propstat>
  </response>
</multistatus>
]]></artwork></figure>
<t>
	In this case the &lt;in:include&gt; element was simply ignored. The client
  can detect this situation by checking for the presence of the requested
  properties and will have to issue an additional PROPFIND/prop request
  (to retrieve the missing properties). 
</t>
</section>

</section>

<section title="Changes to WebDAV DTD" anchor="dtd">
<figure><artwork><![CDATA[
<!ELEMENT propfind ((allprop, in:include+) | propname | prop) >
<!ELEMENT in:include ANY >
]]></artwork></figure>
<t>
Note that the WebDAV DTD is informal only and cannot be used to validate
request or response bodies (due to the inability to properly work with
XML namespaces).
</t>
</section>

<section title="Compatibility Considerations">
<t>
	This specification introduces a new child element for the &lt;propfind&gt;
  element, defined in <xref target="dtd" />. Old servers will ignore this
  element (see <xref target="RFC2518" />, chapter 14). Clients can detect
  this situation as outlined in <xref target="example-old" />.
</t>
<t>
	Clients not aware of this specification will not be affected at all,
  because they will never use the new &lt;in:include&gt; element in PROPFIND
  requests.  
</t>
</section>

<section title="Internationalization Considerations">
<t>
   This proposal builds on <xref target="RFC2518" />, and inherits its 
   internationalizability.
</t>
</section>

<section title="IANA Considerations">
<t>
   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.
</t>
</section>

<section title="Copyright">
<t>
To be supplied by the RFC Editor.
</t>
</section>

<section title="Intellectual Property">
<t>
To be supplied by the RFC Editor.
</t>
</section>

    </middle>

	<back>


<references title="Normative References">
	

<reference anchor='RFC2119'>

<front>
<title abbrev='RFC Key Words'>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='Scott Bradner'>
<organization>Harvard University</organization>
<address>
<postal>
<street>1350 Mass. Ave.</street>
<street>Cambridge</street>
<street>MA 02138</street></postal>
<phone>- +1 617 495 3864</phone>
<email>-</email></address></author>
<date month='March' year='1997'></date>
<area>General</area>
<keyword>keyword</keyword>
<abstract>
<t>
   In many standards track documents several words are used to signify
   the requirements in the specification.  These words are often
   capitalized.  This document defines these words as they should be
   interpreted in IETF documents.  Authors who follow these guidelines
   should incorporate this phrase near the beginning of their document:

<list>
<t>
      The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL
      NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;,  &quot;MAY&quot;, and
      &quot;OPTIONAL&quot; in this document are to be interpreted as described in
      RFC 2119.
</t></list></t>
<t>
   Note that the force of these words is modified by the requirement
   level of the document in which they are used.
</t></abstract></front>

<seriesInfo name='BCP' value='14' />
<seriesInfo name='RFC' value='2119' />
</reference>



<reference anchor='RFC2518'>

<front>
<title>HTTP Extensions for Distributed Authoring -- WEBDAV</title>
<author initials='Y.' surname='Goland' fullname='Y. Goland'>
  <organization>Microsoft Corporation</organization>
  <address><email>yarong@microsoft.com</email></address>
</author>
<author initials="E." surname="Whitehead" fullname="E. J. Whitehead, Jr.">
  <organization abbrev="UC Irvine">Dept. Of Information and Computer Science, University of California, Irvine</organization>
	<address><email>ejw@ics.uci.edu</email></address>
</author>
<author initials="A." surname="Faizi" fullname="A. Faizi">
  <organization abbrev="Netscape">Netscape</organization>
  <address><email>asad@netscape.com</email></address>
</author>
<author initials="S.R." surname="Carter" fullname="S. R. Carter">
  <organization abbrev="Novell">Novell</organization>
  <address><email>srcarter@novell.com</email></address>
</author>
<author initials="D." surname="Jensen" fullname="D. Jensen">
  <organization abbrev="Novell">Novell</organization>
  <address><email>dcjensen@novell.com</email></address>
</author>
<date month='February' year='1999'></date></front>

<seriesInfo name='RFC' value='2518' />
</reference>

<reference anchor='RFC3253'>
<front>
<title>Versioning Extensions to WebDAV</title>
<author initials='G.' surname='Clemm' fullname='G. Clemm'>
  <organization>Rational Software</organization>
  <address><email>geoffrey.clemm@rational.com</email></address>
</author>
<author initials='J.' surname='Amsden' fullname='J. Amsden'>
  <organization>IBM</organization>
  <address><email>jamsden@us.ibm.com</email></address>
</author>
<author initials='T.' surname='Ellison' fullname='T. Ellison'>
  <organization>IBM</organization>
  <address><email>tim_ellison@uk.ibm.com</email></address>
</author>
<author initials='C.' surname='Kaler' fullname='C. Kaler'>
  <organization>Microsoft</organization>
  <address><email>ckaler@microsoft.com</email></address>
</author>
<author initials='J.' surname='Whitehead' fullname='J. Whitehead'>
  <organization>UC Santa Cruz, Dept. of Computer Science</organization>
  <address><email>ejw@cse.ucsc.edu</email></address>
</author>
<date month='March' year='2002'></date></front>
<seriesInfo name='RFC' value='3253' />
</reference>
</references>

<references title="Informative References">
<reference anchor="ACL" target="http://www.webdav.org/acl/protocol/draft-ietf-webdav-acl-09.htm">
<front>
<title>WebDAV Access Control Protocol</title>
<author initials='G.' surname='Clemm' fullname='G. Clemm'>
  <organization>Rational Software</organization>
  <address><email>geoffrey.clemm@rational.com</email></address>
</author>
<author initials="A." surname="Hopkins" fullname="A. Hopkins">
  <organization>Microsoft Corporation</organization>
  <address><email>annehop@microsoft.com</email></address>
</author>
<author initials="E." surname="Sedlar" fullname="E. Sedlar">
  <organization>Oracle Corporation</organization>
  <address><email>esedlar@us.oracle.com</email></address>
</author>
<author initials='J.' surname='Whitehead' fullname='J. Whitehead'>
  <organization>UC Santa Cruz, Dept. of Computer Science</organization>
  <address><email>ejw@cse.ucsc.edu</email></address>
</author>
<date month="July" year="2002"/></front>
<seriesInfo name="ID" value="draft-ietf-webdav-acl-09"/>
</reference>

</references>

<section title="Change Log">

<section title="Since 'draft-reschke-webdav-allprop-include-00'">
<t>
  Moved &lt;include&gt; element out of "DAV:" namespace.<vspace/>
  Updated reference to deltaV (now RFC3253).<vspace/>
  Changed examples to explicitly use utf-8 encoding for HTTP content type and
  XML encoding.<vspace/>
  Updated WebDAV ACL reference to draft 07.<vspace/>
  Made sure figures fit in 72 columns.<vspace/>
  Split references into "Normative" and "Informative".
</t>
</section>


<section title="Since 'draft-reschke-webdav-allprop-include-01'">
<t>
  Updated WebDAV ACL reference to draft 09.<vspace/>
</t>
</section>

</section>

    </back>
</rfc>
