使用 XForms 将 XML 元素作为 HTTP 标头发送

Posted

技术标签:

【中文标题】使用 XForms 将 XML 元素作为 HTTP 标头发送【英文标题】:Send XML element as HTTP header using XForms 【发布时间】:2012-11-13 06:53:14 【问题描述】:

我对 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>

search1search2 元素只有在设置了相应的复选框时才应设置,并且它们都使用来自 search-string 输入的字符串填充。

data 元素构建完成后,我需要通过 POST http 请求发送它。

这一切都可以仅使用 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>

-阿兰

【讨论】:

以上是关于使用 XForms 将 XML 元素作为 HTTP 标头发送的主要内容,如果未能解决你的问题,请参考以下文章

使用 xforms 在元素中换行

从简单 XML 文件到 XForms 的 XSL 转换并应用 CSS

XForms 和 restxq 应用程序

如何将 CSS 类移动到正确的 html 元素

如何限制特定绑定到 XForms 中的提交?

xforms 不能在浏览器上运行