Xoomle is really cool!
Here are some of my ideas for improvement in order of importance.
* Rather than "method=", I'd say that there should be three top-level
URIs. Among reasons this is better in theory, it is easier to build HTML
forms that have different ACTION= attributes. This is the only thing
that would stop the REST community from using XooMLe as a perfect case
study. It's a tiny thing to change but sort of goes to the heart of REST
philosophy. Priority = 8 out of 10.
* I'd suggest that the key should be passed using HTTP authentication
(at least as an option). Then developers could share references without
sharing their keys. As I recall, if you really want, you can embed HTTP
authentication information in URIs *anyhow*. Priority = 7/10
* <?xml-stylesheet?> could be used to provide a nice HTML-based
rendition. I would be happy to provide this XSLT stylesheet. Priority =
6/10
* I'd use a namespace on the returned XML (with default prefix) so that
it is a little easier to associate namespace-triggered behaviour with
the XML. It would just take one attribute value to be "namespace aware".
6/10
* It would be great if you would publish a schema. I believe there is
one embedded in Google's WSDL but you could extract that modulo
copyright issues. You could also use a schemaLocation attribute to point
to it. 6/10
* <url>...</url> could become <url xlink:href="...">...</url>. I have
mixed feelings about XLink but it *is* the standard way to do linking in
XML. More or less this will endear you to people who have developed
XLink processors. 5/10
* You could build on the way HTTP/REST works to add some interesting
features.
1. For instance you could embed a link to the cached page in each item:
<URL>http://www.cse.unsw.edu.au/~norman/</URL>
<cached>http://xooomle..../cached?url="http://www.cse.unsw.edu.au/~norman/"</cac\
hed>
2. You could have a link from each page that is a "sub-query". So let's
say I send you a link like
"http://.../?hl=en&ie=ISO-8859-1&method=doGoogleSearch&q=Paul", it would
embed within it a link like this:
* <subquery
xlink:href="http://.../doGoogleSearch/hl=en&ie=ISO-8859-1&method=doGoogleSearch&\
q=Paul/"/>
Then I could do a *subquery* just by appending "?q=Prescod". By subquery
I mean that it would be interpreted as the same as "Paul+Prescod". This
somewhat goes back to the first issue: you need a way for the method to
be part of the path, not part of the query, but you also need a way for
a representation for the "query" to be part of the path. Once it is
moved into the path it is opaque so it doesn't matter if you use some
compression scheme or something:
* <subquery
xlink:href="http://.../doGoogleSearch/fj4fjefe0fa9e8w09i03fj/"/>
====
Now that you can think of the Google database as a set of resources,
you'll find that there are a bunch of ideas like this where we can do
interesting things by associating these resources.
--
Come discuss XML and REST web services at:
Open Source Conference: July 22-26, 2002, conferences.oreillynet.com
Extreme Markup: Aug 4-9, 2002, www.extrememarkup.com/extreme/