hi Ivelin, hi all, for the last project I used a self-brewed, but kind-a grown, form handling mechanism.
now I'm going to use Cocoon XMLForms, because the more people use it the better it gets ( instead of inventing the wheel again ) and I like its closeness towards w3c/xmlforms. now to my idea: often you have data-source, which provides you with changeable data. take for instance countries and states (not very dynamic I agree, but for the sake of simplicity I will use this example). so you have xml-data, which can be "GENERATORED" by litteraly anything ( a file on the filesystem, ... ): A) the data <countries> <country id="at"> <name>Austria</name> <states> <state id="xy"><name></name></state> <...> </states> </country> </countries> and a xml form. The question is how to intermix the data with the form, in a very easy but powerful way. B) The XFORM Now we have this wonderful xform document: <document xmlns:xf="..." xfdata=".:"> <xf:form id="..." > <selectOne ref="/country" > ... </selectOne> <selectOne ref="/state" > ... </selectOne> </xf:form> </document> writing xsp pages, or other generatos that generate the <xf:items> is one way, but I think this scenario is very frequently used and so it would be better to provide a more "integrated" framework. one proposal would be: <document> <xfdata:provider id="states" > <xfdata:source id="src-states" href="cocoon://data/provinces" /> <!-- raw - read after write means this value must be known prior to calculating the values. this can be done using the client side "change" event --> <!-- the dependency could also be stated directly in the xform ... --> <xfdata:dependency type="raw" name="country" form="offer" select="country" /> <!-- the key --> <xfdata:key name="states" match="countries/country[@id=$country]/states/state" use="@id" /> </xfdata:provider> .... <xf:form id="offer"> <xf:selectOne id="country" ref="/country"> </xf:selectOne> <xf:selectOne id="state" ref="/state"> <xfdata:choices use="states" > <!-- here use means a provider/key --> <!-- the dependency could go here too, so that proivders would be form independent --> <xf:caption xfdata:bind="name" /> <xf:value xfdata:bind="@id" /> </xfdata> </xf:selectOne> </xf:form> to make this work, one has to write a custom translator, as xslt can't have global state that changes (variables are immutable). (except when using extension mechanisms). and my approach would be: 1) gather all the providers together in a list. 2) go through the xf:form and consume all xfdata:elements 3) write out different versions based on: -> client side javascript -> soap ? (+client side javascript :-) ) -> static ( that will be difficult ) does anybody have a cleverer way to do the above - what are your ideas? thanks in advance -- Jakob --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]