更改操作对象内的默认评估上下文

时间:2012-01-19 12:03:28

标签: orbeon xforms

是否有任何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>

所以我不必再重复整个路径了。

2 个答案:

答案 0 :(得分:2)

您要查找的属性是context。从XForms 1.1开始,context属性仅在insertdelete操作上正式提供,但某些实现已经在所有操作上都支持它,它是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计划refcontext之间存在差异:

  • 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>