Thanks a lot for all your answers.
Rob Sanderson wrote:
>>* The spec is not clear enough (you should really consider using the
>>w3c's definition of "MAY" and "MUST" )
> We know. The documentation is being worked on.
I found 153 occurenced of "may" in the specification. Some suggestions
2.1 Search request (p. 6)
"The search request, and all other requests within the protocol, has one
other mandatory parameter: 'version'"
Most of the servers I tested just ignore this parameter and assume 1.1
in every case (try version=0.1 or omit it). It should be stated that a
server MUST return a diag in this case. Maybe it can assume a version of
his choice if no version is specified but just returning 1.1 in every
case is improper.
7 MaximumRecords (p. 11/12)
"but it may not return more than was requested."
=> But it MUST NOT return more than was requested.
11 RecordXPathpage (p. 13)
"If the path supplied cannot be evaluated because it is invalid, then
the server may respond with a single fatal diagnostic. On the other
hand, if the expression is valid but cannot be evaluated for a
particular record, the server should respond with a surrogate
diagnostic in the correct place within the result set. If the expression
matches no nodes within the record, then an empty nodeSet may be
returned rather than a diagnostic."
Replace all "may" with "must"
12.3 Case Sensivity (p. 15)
"Its value may be:" => "Its value must be one of"
13 Stylesheet (p. 16)
"This parameter may only be used with SRU."
=> "This parameter is only allowed to be used with SRU"
22 ScanClause (p. 23)
"The term given in the clause is the position within the ordered list of
terms at which to start, however see the responsePosition parameter
below for more information. If the empty term is given, then even if
searching for it is unsupported by the server, it may be interpreted as
the beginning of the term list."
This should be a must. If you don't know a search clause you should be
able to get the full lists beginning without tricks like "any='x' or
any!='x'". If it's a "may" you can get very unexpected results depending
on the server.
23 MaximumTerms (p. 23)
"but may not be more." => "but must not be more"
30 URL syntax (p. 28)
"If there are no parameters (an explainRequest) the SRU request may
consist of the baseurl with or without the trailing ?"
Is 'version' mandatory or not? By the way it's enough to refer to RFC
1738 so you can just omit the paragraph.
A Gentle Introduction to CQL (p. 29f)
CQL is a standard of it's own, isn't it? You better keep this part in an
independent document and refer to it. By the way is there a full mapping
between CCL and CQL or what exactely is their relationship?
Somewhere (p. ?)
I don't know where it is specified that the request may be echoed in SRU
but it should better be a must too. The server is allowed to ignored
additional request extensions it does not understand - so it should
return the query that was actually executed.