Отправить элемент XML как заголовок HTTP с помощью XForms

Я совершенно новичок в XForms, поэтому, пожалуйста, потерпите меня. Я хотел бы знать, можно ли сделать следующее:

У меня есть форма HTML

<form>
    <input type="text" name="search-string"/>
    <input type="checkbox" name="search1" checked="checked" />Search option 1
    <input type="checkbox" name="search2" checked="checked" />Search option 2
    <input type="submit" />
</form>

Я хотел бы представить это в XForms и при отправке преобразовать его в элемент XML следующим образом:

<data>
    <search1>my search string</search1>
    <search2>my search string</search2>
</data>

search1 а также search2 элементы должны быть установлены, только если установлены соответствующие флажки, и они оба заполняются строкой из search-string вход.

Когда data элемент был создан, мне нужно отправить его через HTTP-запрос POST.

Можно ли сделать все это, используя только XForms или мне нужно использовать JS или что-то еще?

PS: я использую XSLTForms, если это имеет какое-либо значение.

1 ответ

Решение

Да, это можно сделать с помощью XForms без дополнительных инструкций Javascript. Вам нужно два экземпляра: один для отправки и другой для заполнения первого.

Это должно быть что-то вроде этого для модели:

<xf:model>
  <xf:instance id="data">
    <data xmlns="">
      <search1/>
      <search2/>
    </data>
  </xf:instance>
  <xf:instance id="work">
    <work xmlns="">
      <b1 xsi:type="boolean"/>
      <b2 xsi:type="boolean"/>
      <search/>
    </work>
  </xf:instance>
  <xf:bind nodeset="instance('data')/search1" calculate="choose(instance('work')/b1,instance('work')/search,'')"/>
  <xf:bind nodeset="instance('data')/search2" calculate="choose(instance('work')/b2,instance('work')/search,'')"/>
  <xf:submission ref="instance('data') method="post" resource=".........."/>
</xf:model>

-Alain

Другие вопросы по тегам