5

在设计 XML 数据库的 XForm 接口(使用 eXist 和 XSLTForms)时,我想为可选元素包含一个输入控件。XML 数据记录已经存在,有些包含可选元素,有些则不包含。为了更新记录,我使用现有的 XML 记录作为模型实例。问题是当可选元素不存在时表单控件不显示,这是合乎逻辑的,但是当用户想要向可选元素添加数据时出现问题。

更明确地说,这里有一个示例数据记录 data.xml:

<a>
  <b>content</b>
</a>

使用 RNC 架构:

start =
  element a {
    element b { text },
    element notes { text }?
  }

XForms 模型:

<xf:model>
    <xf:instance xmlns="" src="data.xml"/> 
    <xf:submission id="save" method="post" action="update.xq" />
</xf:model>

和控制:

<xf:input ref="/a/notes">
  <xf:label>Notes (optional): </xf:label>
</xf:input>  

问题是“注释”输入控件根本不显示。

一个明显的解决方案是添加一个触发按钮以允许用户在需要时插入元素,但最好只显示输入控件,并且为空。

我的问题是:是否有一些鲜为人知的属性/绑定/多个实例/xpath 表达式的微妙组合会导致控件始终显示?

4

2 回答 2

2

W3C Forms Group 已经讨论过这种情况:http: //www.w3.org/2010/07/07-forms-minutes.html 使用新的 MIP 有助于在 XSLTForms 中实现这一点。

-阿兰

于 2011-01-06T16:50:41.737 回答
2

老实说,XForms 并不能很好地处理这种可选元素的情况。请参阅Micah 博客上的相关讨论。一个不太令人满意的解决方法是在从 eXist 检索数据后为这些可选元素添加空元素,并在将数据保存回 eXist 之前将其删除。

于 2011-01-05T22:12:35.703 回答