我目前正在使用XForms开发一个存档系统,并且是初学者。我有两种形式,它们有一个公共字段,需要填充相同的值,即第二种形式的字段的值取决于在第一种形式中输入的值。我希望这个条目能够自动完成,当我填写第一个表单时,我不必再以第二个表单输入该值。由于我保存到MySQL数据库,我需要两个字段来填充数据库中的相应表。你会怎么做?
答案 0 :(得分:0)
您可以使用the setvalue action和xforms-value-changed事件:
<xf:input bind="foo">
<xf:label>First control:</xf:label>
<xf:setvalue ev:event="xforms-value-changed" bind="bar" value="context()" />
</xf:input>
<xf:input bind="bar">
<xf:label>Second control:</xf:label>
<xf:setvalue ev:event="xforms-value-changed" bind="foo" value="context()" />
</xf:input>
或者,您可以在the calculate attribute上使用the bind element:
<xf:bind nodeset="instance('bar')/slave" calculate="instance('foo')/master" />
请注意,第二种方法可能会使绑定到节点的控件成为只读,这可能不是您的意图。
编辑:看起来我完全误解了你的问题。抱歉,抱歉。
答案 1 :(得分:0)
通常,您有两个选项来创建这样的工作流:使用FormBuilder / FormRunner(但由于我不使用它们,我无法帮助您),或者“使用{{3}手动”和...例如XML pipelines与SQL数据库进行交互。
SQL Processor 让您处理XML数据,例如根据XML pipelines (XPL),session data或XML数据库创建XML块或SQL。 XPL与XProc类似,但可以访问称为处理器的其他模块:
处理器,例如XML web services,提供了与SQL数据库交互的“接口”,使所有SQL CRUD操作都可用。
< / LI>如果您所谈论的两种形式都是相同的xforms:model
,您可以使用Phil描述的技术连接它们。
如果不是,则需要在导航到表单2之前使表单1的xforms:instance
数据保持不变。通常,xforms:submission
用于将数据发送到持久层。您必须创建以下元素:
xforms:submission
元素,将实例数据发送到某个xpl管道(称为xpl 1); 使用这些组件,您可以创建非常灵活的工作流程。