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, '&work=', $work)"/>
</p:add-attribute>
<p:http-request/>
</p:declare-step>
Я все еще был бы заинтересован в лучшем способе, потому что это только кажется неправильным:-(