<!-- this is what I've found in the conditions and arguments in recipes.xml -->
 
<!-- 
     TODO : this part probably needs reworking : each module should export its DTD, 
     with a namespace, so that we can avoid conflicts. This would clarify what
     can be an argument to a cell, and what can be a condition for a transition 
-->

<!ELEMENT document (path?|content?)>
<!ELEMENT path     (#PCDATA)>
<!ELEMENT content  (#PCDATA)>

<!ELEMENT extract-result EMPTY>

<!ELEMENT email (from)>
<!ATTLIST email type CDATA #REQUIRED>
<!ELEMENT from  (name)>
<!ELEMENT name  (#PCDATA)>

<!ELEMENT text (value?)>
<!ELEMENT value (#PCDATA)>

<!ELEMENT socket EMPTY>

<!ELEMENT command (#PCDATA)>

<!ELEMENT xst (transform)>
<!ELEMENT transform (extract-def?|document?|text?)>
<!ELEMENT extract-def (content)>

<!ELEMENT mailbox EMPTY>
<!ATTLIST mailbox path CDATA #REQUIRED>

<!ELEMENT entry EMPTY>
<!ATTLIST entry url CDATA #REQUIRED>

<!ELEMENT inputs (http-response,socket,outputs,entry)>
<!ELEMENT outputs (text,value)>

