- From: Julian Reschke <julian.reschke@gmx.de>
- Date: Fri, 17 Jan 2003 14:37:58 +0100
- To: <www-webdav-dasl@w3.org>
Hi,
we recently came across the following issue.
DAV:getcontenttype is defined to have the value of the HTTP content-type
header. However, this header is defined as:
Content-Type = "Content-Type" ":" media-type
media-type = type "/" subtype *( ";" parameter )
type = token
subtype = token
This means, that queries against the content type can be quite tricky.
For instance,
<eq xmlns="DAV:" casesensitive="0">
<prop><getconttenttype/></prop>
<literal>text/plain</literal>
</eq>
will *not* match for resources where the HTTP content-type header would
contain a parameter such as "charset".
On the other hand,
<like xmlns="DAV:" casesensitive="0">
<prop><getconttenttype/></prop>
<literal>text/plain;%</literal>
</like>
will not match resource where no parameter is given. The naive fix:
<like xmlns="DAV:" casesensitive="0">
<prop><getconttenttype/></prop>
<literal>text/plain%</literal>
</like>
won't work either, because it would match "text/plain123" as well.
At this point, the only robust way to match the complete type and subtype,
but not any parameters, seems to be:
<or xmlns="DAV:">
<eq casesensitive="0">
<prop><getconttenttype/></prop>
<literal>text/plain</literal>
</eq>
<like casesensitive="0">
<prop><getconttenttype/></prop>
<literal>text/plain;%</literal>
</like>
</or>
and even this is fragile if a server decides not to support the casesentive
attribute.
Maybe we need a specific operator for queries on content types?
Julian
--
<green/>bytes GmbH -- http://www.greenbytes.de -- tel:+492512807760
Received on Friday, 17 January 2003 08:38:30 UTC