<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:x='http://purl.org/net/xml2rfc/ext' xmlns:ed="http://greenbytes.de/2002/rfcedit" ipr="full2026" docName="draft-reschke-webdav-allprop-include-00">
  <x:link rel="up" href="http://greenbytes.de/tech/webdav/#draft-reschke-webdav-allprop-include"/>
  <x:link rel="next" href="http://greenbytes.de/tech/webdav/draft-reschke-allprop-include-01.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>
					<email>julian.reschke@greenbytes.de</email>	
				</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>
					<email>stefan.eissing@greenbytes.de</email>	
				</address>
			</author>

    <date month="October" year="2001" />
<!--		<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="deltaV" />
  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>
</section>

<section title="Extensions to PROPFIND/allprop">
<t>
	The "allprop" version of PROPFIND is extended to take an optional &lt;include&gt;
  element (with namespace-URI "DAV:").
  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
   Content-Length: xxxx

   <?xml version="1.0"?>
   <propfind xmlns="DAV:">
     <allprop/>
     <include>
       <checked-in/>
       <checked-out/>
     </include>
   </propfind>
]]></artwork></figure>
<figure><preamble>
   >>Response</preamble>
<artwork><![CDATA[
   HTTP/1.1 207 Multi-Status
   Content-Type: text/xml
   Content-Length: xxxx

   <?xml version="1.0"?>
   <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;include&gt; and included the DAV: properties &lt;checked-in&gt;
  and &lt;checked-out&gt; (as defined in <xref target="deltaV" />).
</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
   Content-Length: xxxx

   <?xml version="1.0"?>
   <propfind xmlns="DAV:">
     <allprop/>
     <include>
       <checked-in/>
       <checked-out/>
     </include>
   </propfind>
]]></artwork></figure>
<figure><preamble>
   >>Response</preamble>
<artwork><![CDATA[
   HTTP/1.1 207 Multi-Status
   Content-Type: text/xml
   Content-Length: xxxx

   <?xml version="1.0"?>
   <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;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, include+) | propname | prop) >
<!ELEMENT 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;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>
	

<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></organization></author>
<author initials='E.' surname='Whitehead' fullname='E. Whitehead'>
<organization></organization></author>
<author initials='A.' surname='Faizi' fullname='A. Faizi'>
<organization></organization></author>
<author initials='S.' surname='Carter' fullname='S. Carter'>
<organization></organization></author>
<author initials='D.' surname='Jensen' fullname='D. Jensen'>
<organization></organization></author>
<date month='February' year='1999'></date></front>

<seriesInfo name='RFC' value='2518' />
</reference>

<reference anchor='deltaV' target="http://www.webdav.org/deltav/protocol/draft-ietf-deltav-versioning-18.htm">

<front>
<title>Versioning Extensions to WebDAV</title>
<author initials='G.' surname='Clemm' fullname='G. Clemm'>
<organization></organization></author>
<author initials='J.' surname='Amsden' fullname='J. Amsden'>
<organization></organization></author>
<author initials='T.' surname='Ellison' fullname='T. Ellison'>
<organization></organization></author>
<author initials='C.' surname='Kaler' fullname='C. Kaler'>
<organization></organization></author>
<author initials='J.' surname='Whitehead' fullname='J. Whitehead'>
<organization></organization></author>
<date month='September' year='2001'></date></front>

<seriesInfo name='ID' value='draft-ietf-deltav-versioning-18' />
</reference>

<reference anchor='ACL' target="http://www.webdav.org/acl/protocol/draft-ietf-webdav-acl-06.htm">
<front>
<title>WebDAV Access Control Protocol</title>
<author initials='G.' surname='Clemm' fullname='G. Clemm'>
<organization></organization></author>
<author initials='A.' surname='Hopkins' fullname='A. Hopkins'>
<organization></organization></author>
<author initials='E.' surname='Sedlar' fullname='E. Sedlar'>
<organization></organization></author>
<author initials='J.' surname='Whitehead' fullname='J. Whitehead'>
<organization></organization></author>
<date month='June' year='2001'></date></front>
<seriesInfo name='ID' value='draft-ietf-webdav-acl-06' />
</reference>

</references>

    </back>
</rfc>

