<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://microformats.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lac4tOroun</id>
	<title>Microformats Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://microformats.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lac4tOroun"/>
	<link rel="alternate" type="text/html" href="https://microformats.org/wiki/Special:Contributions/Lac4tOroun"/>
	<updated>2026-04-24T22:14:25Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rest/forms-brainstorming&amp;diff=35850</id>
		<title>rest/forms-brainstorming</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rest/forms-brainstorming&amp;diff=35850"/>
		<updated>2008-12-20T00:04:46Z</updated>

		<summary type="html">&lt;p&gt;Lac4tOroun: ricgett&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;letoletovarc&lt;br /&gt;
= Forms Brainstorming =&lt;br /&gt;
&lt;br /&gt;
This page collects ideas from [[forms-examples]] how to best encode form data into a microformat&lt;br /&gt;
&lt;br /&gt;
== Proposal A: DETH - Dictionaries Encoding/Transmitting HTML ==&lt;br /&gt;
&lt;br /&gt;
=== Rules (Strawman) ===&lt;br /&gt;
&lt;br /&gt;
# Only use [http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_sformsmodule XHTML Basic Forms] Module&lt;br /&gt;
# Must use action with appropriate URI (no scripts)&lt;br /&gt;
# Recommend: use a ''label'' with every ''input''&lt;br /&gt;
# Make the ''for'' of the ''label'' match the ''id'' of ''input''&lt;br /&gt;
# Group ''label'' with ''input'' using ''&amp;lt;dl&amp;gt;&amp;lt;dt&amp;gt;&amp;lt;dd&amp;gt;''&lt;br /&gt;
# Always place ''submit'' and ''reset'' outside grouping&lt;br /&gt;
&lt;br /&gt;
=== Questions for further research ===&lt;br /&gt;
&lt;br /&gt;
# How to specify whether a field is optional or required?&lt;br /&gt;
&lt;br /&gt;
## Suggestion: the label contains a * ?&lt;br /&gt;
&lt;br /&gt;
=== Patterns ===&lt;br /&gt;
&lt;br /&gt;
==== Anchor Design Pattern ====&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;a class=&amp;quot;deth&amp;quot; href=&amp;quot;http//somesite.com/prog/adduser&amp;quot;&amp;gt;label&amp;amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Forms Design Pattern ====&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;form class=&amp;quot;deth&amp;quot; action=&amp;quot;http://somesite.com/users&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;amp;lt;dl&amp;gt;&lt;br /&gt;
  &amp;amp;lt;dt&amp;gt;&amp;amp;lt;label for=&amp;quot;firstname&amp;quot;&amp;gt;First name:&amp;amp;lt;/label&amp;gt;&amp;amp;lt;/dt&amp;gt;&lt;br /&gt;
   &amp;amp;lt;dd&amp;gt;&amp;amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;firstname&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;amp;lt;/dd&amp;gt;&amp;amp;lt;dt&amp;gt;&lt;br /&gt;
    &amp;amp;lt;label for=&amp;quot;lastname&amp;quot;&amp;gt;Last name:&amp;amp;lt;/label&amp;gt;&amp;amp;lt;/dt&amp;gt;&lt;br /&gt;
   &amp;amp;lt;dd&amp;gt;&amp;amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;lastname&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;amp;lt;/dd&amp;gt;&amp;amp;lt;dt&amp;gt;Sex&amp;amp;lt;/dt&amp;gt;&lt;br /&gt;
   &amp;amp;lt;dd&amp;gt;&amp;amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;sex&amp;quot; value=&amp;quot;male&amp;quot;&amp;gt;Male&amp;amp;lt;/input&amp;gt;&lt;br /&gt;
   &amp;amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;sex&amp;quot; value=&amp;quot;female&amp;quot;&amp;gt;Female&amp;amp;lt;/input&amp;gt;&lt;br /&gt;
 &amp;amp;lt;/dd&amp;gt;&amp;amp;lt;dt&amp;gt;Travel&amp;amp;lt;/dt&amp;gt;&lt;br /&gt;
   &amp;amp;lt;dd&amp;gt;  &amp;amp;lt;input type=&amp;quot;checkbox&amp;quot; name=&amp;quot;travel&amp;quot; value=&amp;quot;car&amp;quot;&amp;gt;Car&amp;amp;lt;/input&amp;gt;&lt;br /&gt;
   &amp;amp;lt;input type=&amp;quot;checkbox&amp;quot; name=&amp;quot;travel&amp;quot; value=&amp;quot;bike&amp;quot;&amp;gt;Bicycle&amp;amp;lt;/input&amp;gt;&lt;br /&gt;
 &amp;amp;lt;/dd&amp;gt;&amp;amp;lt;dt&amp;gt;&lt;br /&gt;
  &amp;amp;lt;label for=&amp;quot;age&amp;quot;&amp;gt;Age:&amp;amp;lt;/dt&amp;gt;&lt;br /&gt;
   &amp;amp;lt;dd&amp;gt;&lt;br /&gt;
  &amp;amp;lt;select&amp;gt;&lt;br /&gt;
    &amp;amp;lt;option val=0&amp;gt;&amp;amp;lt; 18&amp;amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;amp;lt;option val=18&amp;gt;18-64&amp;amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;amp;lt;option val=65&amp;gt;65+&amp;amp;lt;/option&amp;gt;&lt;br /&gt;
 &amp;amp;lt;/select&amp;gt;&lt;br /&gt;
 &amp;amp;lt;/dd&amp;gt;&amp;amp;lt;dt&amp;gt;&lt;br /&gt;
  &amp;amp;lt;label for=&amp;quot;description&amp;quot;&amp;gt;Description:&amp;amp;lt;/label&amp;gt;&amp;amp;lt;/dt&amp;gt;&lt;br /&gt;
   &amp;amp;lt;dd&amp;gt;&amp;amp;lt;textarea id=&amp;quot;description&amp;quot;&amp;gt;Default text&amp;amp;lt;/textarea&amp;gt;&lt;br /&gt;
 &amp;amp;lt;/dd&amp;gt;&lt;br /&gt;
 &amp;amp;lt;/dl&amp;gt;&lt;br /&gt;
 &amp;amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Send&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;amp;lt;input type=&amp;quot;reset&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample Python Binding ==&lt;br /&gt;
&lt;br /&gt;
 order=[&lt;br /&gt;
  &amp;quot;firstname&amp;quot;,&amp;quot;lastname&amp;quot;,&amp;quot;sex&amp;quot;,'&amp;quot;travel&amp;quot;, &amp;quot;age&amp;quot;,&amp;quot;description&amp;quot;&lt;br /&gt;
 ]&lt;br /&gt;
 dict={&lt;br /&gt;
  &amp;quot;@@tag&amp;quot;:&amp;quot;form&amp;quot;,&lt;br /&gt;
    &amp;quot;@action&amp;quot;:&amp;quot;http://somesite.com/users/&amp;quot;,&lt;br /&gt;
    &amp;quot;@class&amp;quot;:&amp;quot;deth&amp;quot;,&lt;br /&gt;
    &amp;quot;@enctype&amp;quot;:&amp;quot;application/x-www-form-urlencoded&amp;quot;,&lt;br /&gt;
    &amp;quot;@method&amp;quot;:&amp;quot;post&amp;quot;,&lt;br /&gt;
  &amp;quot;@@order&amp;quot;:order,&lt;br /&gt;
  &amp;quot;firstname&amp;quot;:&amp;quot;First name:&amp;quot;,&lt;br /&gt;
  &amp;quot;lastname&amp;quot;:&amp;quot;Last name:&amp;quot;,&lt;br /&gt;
  &amp;quot;sex&amp;quot;:{&amp;quot;@type&amp;quot;:&amp;quot;radio&amp;quot;, &amp;quot;male&amp;quot;:&amp;quot;Male&amp;quot;, &amp;quot;female&amp;quot;:&amp;quot;Female&amp;quot;},&lt;br /&gt;
  &amp;quot;travel&amp;quot;:{&amp;quot;@type&amp;quot;:&amp;quot;checkbox&amp;quot;, &amp;quot;car&amp;quot;:&amp;quot;Car&amp;quot;, &amp;quot;bike&amp;quot;:&amp;quot;Bicycle&amp;quot;},&lt;br /&gt;
  &amp;quot;age&amp;quot;:{&amp;quot;@@body&amp;quot;:&amp;quot;Age:&amp;quot;, &amp;quot;@type&amp;quot;:&amp;quot;select&amp;quot;,&lt;br /&gt;
         &amp;quot;0&amp;quot;:&amp;quot;&amp;lt; 18&amp;quot;, &amp;quot;18&amp;quot;:&amp;quot;18-64&amp;quot;, &amp;quot;65&amp;quot;:&amp;quot;65+&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
  &amp;quot;description&amp;quot;:{&lt;br /&gt;
    &amp;quot;@@body&amp;quot;:&amp;quot;Description:&amp;quot;,&lt;br /&gt;
    &amp;quot;@type&amp;quot;:&amp;quot;textarea&amp;quot;,&lt;br /&gt;
    &amp;quot;@value&amp;quot;:&amp;quot;Default text&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Proposal B: REST-oriented process ==&lt;br /&gt;
From [Kyle Cordes], for the discovery of the parameters:&lt;br /&gt;
&lt;br /&gt;
* You discover the URL of a service by some means.&lt;br /&gt;
* You GET that URL, which returns an HTML form.&lt;br /&gt;
* The HTML form describes where to POST to invoke that service, and what &lt;br /&gt;
parameters can be passed in that POST.  In some cases, it will use &lt;br /&gt;
&amp;lt;selects&amp;gt;s to describe what options are valid for a parameter.&lt;br /&gt;
* In most cases, the form will be interspersed with human readable text, &lt;br /&gt;
to explain the meaning of the parameters (a machine-understandable way &lt;br /&gt;
to explain parameter meaning, sounds like an AI problem...)&lt;br /&gt;
* You (the user of a web browser, or a piece of software &lt;br /&gt;
programmatically using the server) populate the parameters and POST them &lt;br /&gt;
to the URL you discovered via the form.&lt;br /&gt;
* You get back a response, which might be an error message about a &lt;br /&gt;
parameter problem, or might be a respresentation of the &amp;quot;answer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[OlaBerg] says: This is exactly what I do, and it works great! In fact, I &lt;br /&gt;
use it both for POST-API and GET-API. A set of forms defines a REST-ful&lt;br /&gt;
API.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.opendarwin.org/~drernie/rest-api.html REST self-describing API proposal]&lt;br /&gt;
* [http://opensearch.a9.com/ OpenSearch search results standard (REST-like)]&lt;br /&gt;
* [[rest-brainstorming]]&lt;/div&gt;</summary>
		<author><name>Lac4tOroun</name></author>
	</entry>
</feed>