0

我的 Calabash xproc 管道使用 p:http-request 来触发 GET 请求。服务器需要身份验证,所以我使用带有用户名/密码/身份验证方法属性的 ac:request。我正在努力解决如何动态填充 c:request 的 href 属性的问题。

葫芦似乎不喜欢:

<c:request method="GET" href="{$href}" username="username" password="password" auth-method="basic" detailed="false"/>

这并不奇怪,因为动态设置 href 也不适用于 p:load。但在后一种情况下,添加 ap:with-option child 会有所帮助。使用 c:request,它不会。

所以这让我想知道是否有另一种解决方案?

4

2 回答 2

1

XProc 1.0 不支持属性值模板。但是,有一个可选但非常有用的p:template步骤(据我所知,Calabash 支持该步骤) -简介部分正好涵盖了您的用例。

于 2014-07-17T14:52:19.110 回答
0

好吧,我认为这里的解决方案是动态构造 c:request 元素 + 属性。

一个工作示例如下所示:

<p:declare-step xmlns:p="http://www.w3.org/ns/xproc" xmlns:c="http://www.w3.org/ns/xproc-step" version="1.0">
  <p:input port="source">
    <p:inline>
      <c:request method="GET" username="username" password="password" auth-method="basic"/>
    </p:inline>
  </p:input>
  <p:output port="result"/>

  <p:option name="area" select="'testvalue1'"/>
  <p:option name="work" select="'testvalue2'"/>

  <p:add-attribute match="/c:request" attribute-name="href">
    <p:with-option name="attribute-value" select="concat('http://localhost:8181/exist/rest/db/OEP/code/test/testGet.xql?area=', $area, '&amp;work=', $work)"/>
  </p:add-attribute>

  <p:http-request/>
</p:declare-step>

我仍然会对更好的方式感兴趣,因为这似乎不对:-(

于 2014-07-15T20:02:11.267 回答