我有一个在输入上运行 XSLT 的管道,然后通过一个<p:http-request>
步骤将该结果放入数据库中。
这里棘手的一点是,我需要使用<p:xslt>
XML 输出中的元数据来构建动态 href。
这里是我想要实现的伪代码:
<p:xslt name="XSLT1">
<p:input port="stylesheet">
<p:document href="XSLT-1.xslt" />
</p:input>
</p:xslt>
<p:variable name="href" select="concat('http://localhost:8000/myRESTendpoint?uri=/mydb/', /*/@name, /*/@number,'.xml')"/>
<p:sink />
<p:insert position="first-child" match="c:body">
<p:input port="source">
<p:inline>
<c:request
href="{$href}"
auth-method="basic"
username="user"
password="pw"
method="put">
<c:body content-type="text/xml" >
</c:body>
</c:request>
</p:inline>
</p:input>
<p:input port="insertion">
<p:pipe step="XSLT1" port="result" />
</p:input>
</p:insert>
<p:http-request omit-xml-declaration="false" encoding="UTF-8">
<p:input port="source"/>
</p:http-request>
正如您在该<p:variable>
步骤中看到的,我正在尝试构建一个字符串并使用该<p:xslt>
步骤的输出 XML 中的属性值构造它,并将其输入到我<c:request>
的步骤的 href 选项中。
我尝试在<p:attribute match>
之前添加一个更改 href 属性的步骤,<p:http-request>
但它没有获取我需要的/*/@name
and/*/@number
值:
<p:add-attribute match="/c:request" attribute-name="href">
<p:with-option name="attribute-value" select="concat('http://localhost:8000/myRESTendpoint?uri=/mydb/', /*/@name, /*/@number,'.xml')"/>
</p:add-attribute>