Subject: WebDAV property schema lookup

From: "Eric Sedlar" <[email-masked]>
Date: Tue, 2 Apr 2002 00:30:12 -0800

Julian--

  I recall that you had a proposal for getting the schema of the properties on a particular resource via DAV.  Does this proposal also allow for a generic property editor client?  It seems like we need a way for the server to indicate to a client:

* what properties are editable by end-users
* what properties are displayable 
* what are the localized displaynames for those properties (taking into account the Accept-Language header as PROPFIND would for property values).

Does your proposal cover those issues?  Can you give me a pointer to your draft?

Thanks,

  Eric

---

From: "Julian Reschke" <[email-masked]>
Date: Tue, 2 Apr 2002 10:43:53 +0200

Eric,

the current proposal ist at:

<http://greenbytes.de/tech/webdav/draft-reschke-webdav-property-datatypes-la
test.html>

The format should allow "almost" generic editing (it will require that the
editor recognizes the reported data types).

The current proposal does not cover your three requirements. However I agree
that discovery of these properties makes a lot of sense -- the main question
being, how to marshall this information. Also, servers may not *have* this
information about dead properties (unless we define a protocol that
specificies how to send this information *to* the server). The least
intrusive way to provide additional information about properties the server
is aware of seems to be a special REPORT...

Julian

-----Original Message-----
From: [email-masked] [mailto:[email-masked]]On
Behalf Of Eric Sedlar
Sent: Tuesday, April 02, 2002 10:30 AM
To: Julian Reschke
Cc: DAV
Subject: WebDAV property schema lookup

Julian--

  I recall that you had a proposal for getting the schema of the properties
on a particular resource via DAV.  Does this proposal also allow for a
generic property editor client?  It seems like we need a way for the server
to indicate to a client:

* what properties are editable by end-users
* what properties are displayable
* what are the localized displaynames for those properties (taking into
account the Accept-Language header as PROPFIND would for property values).

Does your proposal cover those issues?  Can you give me a pointer to your
draft?

Thanks,

  Eric

---

From: "Eric Sedlar" <[email-masked]>
Date: Tue, 2 Apr 2002 00:52:13 -0800

I don't think that deciding which dead properties are editable will be done
on the client, but rather via some server-specific mechanism.  For example,
we would probably say that all dead properties not in the DAV or Oracle
namespaces are editable by default, and possibly allow some configuration in
a parameter file to list uneditable ones.

--Eric

---

From: "Julian Reschke" <[email-masked]>
Date: Sat, 6 Apr 2002 17:51:08 +0200

> From: [email-masked]
> [mailto:[email-masked]]On Behalf Of Eric Sedlar
> Sent: Tuesday, April 02, 2002 10:52 AM
> To: Julian Reschke
> Cc: DAV
> Subject: Re: WebDAV property schema lookup
>
>
> on the client, but rather via some server-specific mechanism.

I agree. The question being, how a server decides this for a given dead
property (it may not be able to do it).

> For example,

That's certainly something that *can* be done.

So how do we proceed?

- I think that what our current draft says is needed as a basis anyway
- One possible approach would be to get into the schema / model business, à
la Exchange 2000 and Sharepoint
- A simpler approach would be to define marshalling for the additional
information you asked for as extensions to PROPFIND/PROPPATCH

For instance, the first two things you asked for (editability and
visibility) can trivially be marshalled in new property attributes (this
could be easily added to our existing datatype marshalling):

Proppatch request:

<?xml version="1.0" encoding="utf-8" ?>
<D:propertyupdate xmlns:D="DAV:"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns:Z="http://www.w3.com/standards/z39.50"
   xmlns:x="http://webdav.org/property-attribute">
  <D:set>
    <D:prop>
      <Z:released xsi:type="xs:boolean" x:hidden="true"
x:editable="false">false</Z:released>
    </D:prop>
  </D:set>
</D:propertyupdate>

..

Propfind response:

<?xml version="1.0" encoding="utf-8" ?>
<D:multistatus xmlns:D="DAV:"
   xmlns:Z="http://www.w3.com/standards/z39.50"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns:x="http://webdav.org/property-attribute">
  <D:response>
    <D:href>http://www.foo.com/bar.html</D:href>
    <D:propstat>
      <D:prop>
        <D:getcontenttype>text/html</D:getcontenttype>
        <Z:released xsi:type="xs:boolean" x:hidden="true"
x:editable="false">1</Z:released>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

Note that this is compatible with RFC2518 as

- old clients will never send the new attributes upon PROPPATCH
- servers can add the two attributes two the existing property values
transparently (because they sit in a new namespace which should be ignored
by old clients)

Adding textual descriptions is a bit harder, because it's not as easy to
marshall them in attribute values (we need to make sure that we properly
treat language negotation/xml:lang). I wouldn't want to send this
information with every PROPFIND reply, so we probably would require that a
client specifically asks for them:

Propfind request:

<?xml version="1.0" encoding="utf-8" ?>
<D:propfind xmlns:D="DAV:"
  xmlns:Z="http://www.w3.com/standards/z39.50"
   xmlns:x="http://webdav.org/property-attribute">
  <D:prop x:include-descriptions="true">
    <D:getcontenttype/>
    <Z:released/>
  </D:prop>
</D:propfind>

Propfind response:

<?xml version="1.0" encoding="utf-8" ?>
<D:multistatus xmlns:D="DAV:"
   xmlns:Z="http://www.w3.com/standards/z39.50"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns:x="http://webdav.org/property-attribute">
  <D:response>
    <D:href>http://www.foo.com/bar.html</D:href>
    <D:propstat>
      <D:prop>
        <D:getcontenttype>text/html</D:getcontenttype>
        <Z:released xsi:type="xs:boolean" x:hidden="true"
x:editable="false"><x:description
xml:lang="en">released?</x:description>1</Z:released>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

Feedback appreciated.

Julian