<xf:action ev:event="xforms-model-construct">
<xf:insert nodeset="instance('subInstance')/type" origin="instance('defaultType')/type"/>
</xf:action>
我想基于另一个实例填充实例。我可以使用xf:insert执行此操作,如上所示。
但是,我意识到实例'subInstance'在启动xf:inserts之前必须包含一个空类型元素。
<subInstance>
<type/>
</subInstance>
所以在完成所有xf:insert之后,我需要执行以下操作来删除第一个空的:
<xf:delete nodeset="instance('subInstance')/type" at="1" />
这个方法有什么问题,或者有没有一种方法可以在没有初始空的情况下直接插入?
答案 0 :(得分:1)
两个答案:
您的原始实例可以是:
<subInstance/>
然后您可以使用
将插入subInstance
元素
<xf:action ev:event="xforms-model-construct">
<xf:insert
context="instance('subInstance')"
origin="instance('defaultType')/type""/>
</xf:action>
使用不context
或nodeset
的{{1}}表示您要将插入<{em> ref
指向的节点。
如果你想保留原始的嵌套context
元素,你可以这样写:
type
<xf:action ev:event="xforms-model-construct">
<xf:insert
nodeset="instance('subInstance')"
origin="
xf:element(
'subInstance',
instance('defaultType')/type
)
"/>
</xf:action>
属性使用XForms 2.0中的xf:element()
函数,您可以动态创建一个以origin
为根的XML文档,其中只包含subInstance
个元素。 type
实例。为了使这更加现代化,您可以将defaultType
替换为nodeset
,因为在XForms 2.0中不推荐使用ref
:
nodeset