在设计XML数据库的XForm接口(使用eXist和XSLTForms)时,我想为可选元素包含一个输入控件.XML数据记录已经存在,有些包含可选元素,有些则不包含.要更新记录,我使用现有的XML记录作为模型实例.问题是当可选元素不存在时不显示表单控件,这是合乎逻辑的,但是当用户想要将数据添加到可选元素时会出现问题.
更明确一点,这是一个示例数据记录data.xml:
<a>
<b>content</b>
</a>
Run Code Online (Sandbox Code Playgroud)
使用RNC架构:
start =
element a {
element b { text },
element notes { text }?
}
Run Code Online (Sandbox Code Playgroud)
XForms模型:
<xf:model>
<xf:instance xmlns="" src="data.xml"/>
<xf:submission id="save" method="post" action="update.xq" />
</xf:model>
Run Code Online (Sandbox Code Playgroud)
并控制:
<xf:input ref="/a/notes">
<xf:label>Notes (optional): </xf:label>
</xf:input>
Run Code Online (Sandbox Code Playgroud)
问题是"Notes"输入控件根本不显示.
一个明显的解决方案是添加一个触发按钮,允许用户在需要时插入元素,但最好只显示输入控件,并为空.
我的问题是:是否存在一些不太知名的属性/绑定/多个实例/ xpath表达式的微妙组合会导致控件始终显示?