Изменение контекста оценки по умолчанию внутри объекта действия - PullRequest
1 голос
/ 19 января 2012

Есть ли какой-либо объект XForms, который я мог бы использовать для переопределения контекста оценки по умолчанию внутри объекта действия?У нас есть xforms: group в части тела, но есть ли у нас 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 ]

2 голосов
/ 19 января 2012

Атрибут, который вы ищете - context.Начиная с XForms 1.1, атрибут context официально доступен только для действий insert и delete, но некоторые реализации уже поддерживают его для всех действий, и он запланирован для включения в 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.

Существует разница между ref и context в качествепланируется для предстоящих XForms 2:

  • context только изменяет контекст оценки XPath
  • ref обычно имеет другие эффекты, такие как привязка элемента управления или указание места назначениязначение (setvalue) и т. д.

В XForms 1.1, context для insert, к сожалению, также может указывать точку вставки, но XForms 2 планирует улучшить это и отказаться от этого использованияcontext.

1 голос
/ 19 января 2012

Да.Вы можете иметь 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>
...