是否有任何XForms对象可用于覆盖操作对象内的默认评估上下文?我们有xforms:在身体部分组,但我们在xforms:action中有吗?它会简化代码,我经常使用相同的Nodeset作为我正在运行的基本元素
我想收到这样的代码:
<xf:action ev:event="DOMActivate">
<?xf:context? ref="instance('main')/d:Content/d:Attachment[index('repeat-id')]"> <!-- ?? -->
<xf:setvalue ref="d:FileName" value="..." />
<xf:setvalue ref="d:Description" value="..." />
<xf:setvalue ref="d:MimeType" value="..." />
<xf:setvalue ref="d:Size" value="..." />
<xf:setvalue ref="d:Location" value="..." />
</?xf:context?>
</xf:action>
所以我不必再重复整个路径了。
答案 0 :(得分:2)
您要查找的属性是context
。从XForms 1.1开始,context
属性仅在insert
和delete
操作上正式提供,但某些实现已经在所有操作上都支持它,它是scheduled for inclusion in XForms 2。
<xf:action ev:event="DOMActivate" context="instance('main')/d:Content/d:Attachment[index('repeat-id')]">
<xf:setvalue ref="d:FileName" value="..." />
<xf:setvalue ref="d:Description" value="..." />
<xf:setvalue ref="d:MimeType" value="..." />
<xf:setvalue ref="d:Size" value="..." />
<xf:setvalue ref="d:Location" value="..." />
</xf:action>
请注意,ref
据我所知,action
未正式允许。
即将推出的XForms 2计划ref
和context
之间存在差异:
context
仅更改XPath评估上下文ref
通常还有其他效果,例如绑定控件或指定值的目标(setvalue
)等。在XForms 1.1中,context
上的insert
遗憾地也可以指示插入点,但XForms 2计划对其进行改进并弃用context
的使用。
答案 1 :(得分:1)
是。您可以拥有ref
标记的<xforms:action>
属性。您也可以将其应用于<xforms:trigger>
和<xforms:group>
标记。
这样,您将为标记内的语句提供上下文。
我试过这个很好。
因此,您的代码应该类似于:
<xf:action ev:event="DOMActivate" ref="instance('main')/d:Content/d:Attachment[index('repeat-id')]">
<xf:setvalue ref="d:FileName" value="..." />
<xf:setvalue ref="d:Description" value="..." />
<xf:setvalue ref="d:MimeType" value="..." />
<xf:setvalue ref="d:Size" value="..." />
<xf:setvalue ref="d:Location" value="..." />
</?xf:context?>
</xf:action>