Xproc p:http-запрос динамического HREF URI

Мой конвейер Calabash xproc использует p:http-request для запуска GET-запроса. Сервер требует аутентификации, поэтому я использую ac: request с атрибутами username / password / auth-method. Я борюсь с вопросом, как динамически заполнять атрибут href в c: request.

Калебас, кажется, не любит:

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

Это не является большим сюрпризом, поскольку динамическая установка href не будет работать и для p: load. Но в последнем случае добавление ap: with-option child помогает. С запросом c: это не так.

Так что это заставляет меня задуматься, есть ли другое решение?

2 ответа

XProc 1.0 не поддерживает шаблоны значений атрибутов. Однако есть необязательный, но очень полезный шаг p:template (который, насколько я знаю, поддерживает Calabash) - раздел Введение точно описывает ваш случай использования.

Ну, я думаю, что решение здесь состоит в том, чтобы динамически создать элемент + атрибуты 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>

Я все еще был бы заинтересован в лучшем способе, потому что это только кажется неправильным:-(

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