如何在ODK Opendatakit中填充本地数据库中的数据

时间:2012-06-19 06:59:48

标签: android xml xforms

我正在修改ODK Opendatakit。 ODK使用XFORMS从数据中获取输入并使用数据创建XML实例。然后将此实例上载到服务器上。我想要实现的是根据数据捕获器的输入自动完成本地数据库中的一些数据。例如,如果输入了ID,则从本地数据库验证该ID,如果存在,则自动完成一些预定义字段。如果该ID不存在,则会给出一条消息来检查ID。

我得到了使用窗口小部件或其他应用程序的建议,该应用程序验证来自本地数据库的条目,然后将要完成的字段的值返回给ODK XML实例。我没有得到的是如何将值传递给ODK中的实例会话?

1 个答案:

答案 0 :(得分:0)

我没有使用ODK,但我可能能够帮助解决一些XForms的问题。

XForms数据传输与RESTful XML Web服务密切相关。根据您的描述,我猜测交互模式看起来像这样:

  • 为ID创建input字段。将此(以及需要转发到服务器的任何其他数据)存储在XForm的主instance中。
  • 创建一个action,绑定到该输入字段上的“xforms-value-changed”或“DOMFocusOut”事件(xforms-value-changed将在每次更改时触发,而DOMFocusOut仅在用户实际离开了该字段 - 您使用的字段取决于您的首选用户体验/服务器端功能。
  • 在此action内,使用包含输入字段中输入的ID的主submission向服务器运行instance
  • 然后,服务器必须使用与您的表单架构匹配的XML文档来响应此请求,并填写所有必需的值。
  • submission设置为replaceinstance

当然,这是一个非常高级的总结。

这里的代码示例:

http://en.wikibooks.org/wiki/XForms/Suggesting_Items

不是完全你所追求的,但它具有许多相同的特征;在文本字段中输入文本,将该文本提交给Web服务,使用Web服务的响应更新表单中的模型。