Re: SOAP Requirements

Roy T. Fielding ([email protected])
Wed, 23 Mar 1994 03:18:31 --100


> Hmmm, I seem to remember there being colons in the URN spec; does that
> mean that URNs can't be transmitted as HTTP object headers, but
> only as request URIs?

No, it does not. Colons can occur in header data items provided that only
the real header Name: occurs at the beginning of the line. I.e.

Date: is a legal header, but
Date: is just considered a continuation of the previous header.

> ...

> It seems likely that the metainformation for the SOAP should be kept
> external to the document itself. Assuming use of the HTTP protocol as the
> transfer method (as my prototypes do), I think the HEAD information should
> probably be generated from information external to the document. Although
> this introduces some problems with respect to keeping all the documention
> information "in one place", I think the difficulties associated with
> hard-coding the information in the document are far greater.
>
> Given that, it seems that a good location for the SOAPs would be by using
> the META tag of HTML+. As such, the entire line must conform to RFC822 so
> that the HTTP protcol can transfer it as header field (key: value).

The above two paragraphs are contradictory. The META element only exists
within HTML+ documents and thus using META for this purpose would necessitate
embedding that information within the document. Such a solution would also
be inadequate for non-HTML documents (e.g. MPEG movies or GIFs).

What you really want is a metainformation table -- something that can be
loaded by the server (either on a per site or per document basis) and which
contains the list of SOAPs (and/or other metainfo) for each document+version.
Note that version is important because a SOAP should only be applied to a
particular version of a document (not all documents of that name).

> Thus, roughly, for an enumerated SOAP, the HEAD of a document would contain
>
> <meta name="x-SOAP#American_Children's_Association!suitable-for-children"#
> value="boolean#true">

Yuck! That would result in a header like:

x-SOAP#American_Children's_Association!suitable-for-children: boolean#true

which is not what an rfc822-type header should look like.

Instead, it should be like

SOAP: American_Children's_Association!suitable-for-children=true,
American_Children's_Association!reading-level=8

I don't think that you need to (or even should) encode range or typing
information in the header -- that should be defined by the name of the SOAP
as part of some SOAP name registry, i.e. all SOAPs ending in
"suitable-for-children" have legal values of (true,false).

BTW, it is my opinion that people should not bother with "x-Type" naming
schemes because they provide no useful advantage over just plain "Type"
(i.e. they are just as likely to conflict with someone else's x-Type as
they are with someone else's Type). The only thing that x-Names accomplish
is to make it bloody difficult to change all the software that makes use of
them once they become official Names. However, that is just my opinion and
it is contrary to the "official" protocols.

...Roy Fielding ICS Grad Student, University of California, Irvine USA
([email protected])
<A HREF="http://www.ics.uci.edu/dir/grad/Software/fielding">About Roy</A>