Network Working Group | J. Reschke |
Internet-Draft | greenbytes |
Intended status: Experimental | December 2005 |
Expires: June 2006 |
Note: a later version of this document has been published as RFC 4316.
By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79.¶
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.¶
This Internet-Draft will expire in June 2006.¶
Copyright © The Internet Society (2005). All Rights Reserved.¶
This specification extends the Web Distributed Authoring <ed:replace>
This specification builds on the infrastructure provided by the Web<ed:replace>
Although servers must support XML content in property values, it may be desirable to persist values as scalar values when possible<ed:replace>
On the other hand, when setting new properties, it can be desirable to pass data<ed:replace>
The following potential datatyping<ed:replace>
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 [RFC2119].¶
The term "property element" refers to the XML element that identifies a particular property, for instance<ed:replace>
<getcontentlength xmlns="DAV:" />
The term "prop element" is used for the WebDAV "prop" element as defined in <ed:replace>
The XML representation of schema components uses a vocabulary identified by the namespace name "http://www.w3.org/2001/XMLSchema". For brevity, the text and examples in this specification use the prefix "xs:" to stand for this namespace; in practice, any prefix can be used. "XML Schema<ed:replace>
Although WebDAV property types can be anything that can be marshaled as content of an XML element, in many cases they actually are simple types like integers, booleans<ed:replace>
Data<ed:replace>
To avoid unnecessary verbosity, data<ed:replace>
A server may implement any combination of datatypes, both from the XML Schema recommendation and possibly from other namespaces.¶
Note that a particular property can be typed for a number of reasons: ¶
If the property element has an XML attribute named "xsi:type", the server may use this information to select an optimized representation for storing the property value. For instance, by specifying a type as "xs:boolean", the client declares the property value to be of type boolean (as defined in [XS2]). The server may choose any suitable internal format for persisting this property, and in particular is allowed to fail the request if the format given does not fit the format defined for this type.¶
The server should indicate successful detection and parsing of the typed value by setting the xsi:type attribute on the property element in the response body (this implies that it should return a MULTISTATUS status code and a <multistatus> response body).¶
>>Request
PROPPATCH /bar.html HTTP/1.1 Host: example.org Content-Type: text/xml; charset="utf-8" Content-Length: xxxx <?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://ns.example.org/standards/z39.50"> <D:set> <D:prop> <Z:released xsi:type="xs:boolean">false</Z:released> </D:prop> </D:set> </D:propertyupdate>
>>Response
HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxxx <?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:Z="http://ns.example.org/standards/z39.50"> <D:response> <D:href>http://example.org/bar.html</D:href> <D:propstat> <D:prop><Z:released xsi:type="xs:boolean" /></D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus>
In this case<ed:replace>
>>Request
PROPPATCH /bar.html HTTP/1.1 Host: example.org Content-Type: text/xml; charset="utf-8" Content-Length: xxxx <?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://ns.example.org/standards/z39.50"> <D:set> <D:prop> <Z:released xsi:type="xs:boolean">t</Z:released> </D:prop> </D:set> </D:propertyupdate>
>>Response
HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxxx <?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:" xmlns:Z="http://ns.example.org/standards/z39.50"> <D:response> <D:href>http://example.org/bar.html</D:href> <D:propstat> <D:prop><Z:released/></D:prop> <D:status>HTTP/1.1 422 Unprocessable Entity</D:status> <D:responsedescription> Does not parse as xs:boolean </D:responsedescription> </D:propstat> </D:response> </D:multistatus>
In this case<ed:replace>
Note that similar error conditions can occur in the standard WebDAV protocol even though no data<ed:replace>
>>Request
PROPPATCH /bar.html HTTP/1.1 Host: example.org Content-Type: text/xml; charset="utf-8" Content-Length: xxxx <?xml version="1.0" encoding="utf-8" ?> <D:propertyupdate xmlns:D="DAV:" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Z="http://ns.example.org/standards/z39.50"> <D:set> <D:prop> <Z:released xsi:type="Z:custom">t</Z:released> </D:prop> </D:set> </D:propertyupdate>
>>Response
HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxxx <?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Z="http://ns.example.org/standards/z39.50"> <D:response> <D:href>http://example.org/bar.html</D:href> <D:propstat> <D:prop><Z:released/></D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus>
In this case<ed:replace>
PROPFIND is extended to return the data<ed:replace>
>>Request
PROPFIND /bar.html HTTP/1.1 Host: example.org Content-Type: text/xml; charset="utf-8" Content-Length: xxxx <?xml version="1.0" encoding="utf-8" ?> <D:propfind xmlns:D="DAV:" xmlns:Z="http://ns.example.org/standards/z39.50"> <D:prop> <D:getcontenttype/> <Z:released/> </D:prop> </D:propfind>
>>Response
HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxxx <?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:" xmlns:Z="http://ns.example.org/standards/z39.50" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <D:response> <D:href>http://example.org/bar.html</D:href> <D:propstat> <D:prop> <D:getcontenttype>text/html</D:getcontenttype> <Z:released xsi:type="xs:boolean">1</Z:released> </D:prop> <D:status>HTTP/1.1 200 OK</D:status> </D:propstat> </D:response> </D:multistatus>
This example shows that the property value "true" is returned with the correct data<ed:replace>
This part of this specification does not introduce any new protocol elements, nor does it change the informal WebDAV DTD. It merely specifies additional server semantics for the case where clients submit additional data<ed:replace>
Clients not aware of datatype handling should not supply the "xsi:type" attribute on property elements (after all, this attribute belongs to the XML Schema-Instance namespace<ed:replace>
Servers not aware of datatype handling either drop the "xsi:type" attribute<ed:replace>
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.¶
This <ed:replace>
Editorial fixes. Changed examples to explicitly use utf-8 encoding for HTTP content type and XML encoding. Added example for marshalling array-typed properties.¶
Fix width of artwork for IETF compliance. "Non-normative references" -> "Informative references".¶
Added marshalling for property flags such as "hidden" and "protected". Moved array marshalling example into back section. Added rational and description for pf:property-displayname-set. Added acknowledgements section.¶
Replaced domain names in examples according to RFC2606: "www.foo.com" by "example.org", "www.example.com" by "ns.example.org/standards/z39.50/standards/z39.50" and "www.w3.com/standards/z39.50" by "ns.example.org/standards/z39.50".¶
Remove superfluous IP and copyright sections. Moved "Introduction" section to front.¶
Added proposal for DAV:basicsearch operators for array-typed properties. Update all references.¶
Reformat abstract. Remove property flags, displayname support and DASL extensions.¶
Rewrite Editorial Note. Get rid of unnecessary sub section titles after removal of property flags and displayname support (no change tracking). Some typos fixed. Add and resolve issues "other-method-semantics", "1_clarify_scope", "7_discovery" and "a_remove_array_example". Removed unused reference to XML spec (no change tracking).¶
Update XS2 reference. Add "Security Considerations" section.¶
Update XS1 reference. Add references to "Compatibility Considerations" section. Author's address updated. Fixed language based on RFC Editor feedback.¶
Copyright © The Internet Society (2005).¶
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.¶
This document and the information contained herein are provided on an “AS IS” basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.¶
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.¶
Copies of IPR disclosures made to the IETF Secretariat and any assurances of 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 implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.¶
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.¶