[I'm going over old mail, replying to stuff I missed. I confess I
can't make much of this sketch. But from what I understand...]
I need examples to help me think. Tell me if this example matches
your model:
The client C sends GET foo to server S. S returns:
<HEAD>
<TITLE>Search Template</TITLE>
<QUERYFORM base="medibase">diagnose condition where age is <recall name="age">
and symptoms includes (<if name="headache">headache</if>
<if name="blackouts">blackouts</if>)
</queryform>
</HEAD>
<BODY>
How old are you? <input name="age" type="number"
width="5" help="http:s/help/inputs#age">
<P>
Do you have any of the following symptoms?
<UL>
<li>headach? <input name="headache" type="boolean" width="3">
<li>blackouts? <input name="blackouts" type="boolean" width="3">
</ul>
The client displays the body of the document with a blank
for the age, and check-boxes for the symptoms, and a
"query" button (similar to a "search" button in response
to <ISINDEX>). The user fills in the blanks and clicks
the query button. Then the client uses the QUERYFORM
to compose its query from the inputs. It sends
GET medibase HTRQ/1.0
Accept: text/plain
diagnose condition where age is 25
and symptoms includes (blackouts).
to the server. The server performs the query on the medibase
database and returns some document.
Where does the volatile data (<VAR> stuff) come in?
This would require some additions to the DTD:
Inside HEAD, we'd allow QUERYFORM:
<!ELEMENT queryform - - (#PCDATA|recall|if|...)+>
<!ATTLIST queryform
base CDATA #IMPLIED -- URL to search defaults to current doc --
>
<!ELEMENT recall - O EMPTY>
<!ATTLIST recall
name IDREF #required -- points to an input element -->
<!ELEMENT if - O (#PCDATA|if)+>
<!ATTLIST if
name IDREF #required -- points to input element -->
Then inside BODY, we'd add the INPUT element:
<!ELEMENT input - O EMPTY>
<!ATTLIST input
NAME ID #REQUIRED
WIDTH NUMBER #IMPLIED
DEFAULT CDATA #IMPLIED
HELP CDATA #IMPLIED -- url of help info --
>
This would require changes to both the server and the client,
but I don't see any way around that.
It's not a major change to HTML -- just a few more elements.
The way I suggest you associate input variables with things
in the query is through the ID/IDREF mechanism as above.
Does this jive at all with what you're thinking?
Dan