Orbeon XPL copy values from request
Quite often I end up in situations where I need to use a value from an HTTP request (either parameter or header) inside a configuration element for another Orbeon XPL processor.
One fairly simple way to do this is to use the oxf:xslt
processor as shown below:
<p:config xmlns:p="http://www.orbeon.com/oxf/pipeline">
<!-- Read in request headers -->
<p:processor name="oxf:request">
<p:input name="config">
<config>
<include>/request/headers/username</include>
</config>
</p:input>
<p:output name="data" id="request" />
</p:processor>
<p:processor name="oxf:xslt">
<p:input name="data" href="#request" />
<p:input name="config">
<config xsl:version="2.0">
<orgUnit>A</orgUnit>
<username>
<xsl:value-of select="//header[name='username']/value"/>
</username>
</config>
</p:input>
<p:output name="data" id="config" />
</p:processor>
</p:config>
The example code will take the “username” request header and combine it with the XML fragment:
<config>
<orgUnit>A</orgUnit>
</config>
to create
<config>
<orgUnit>A</orgUnit>
<username>...</username>
</config>
Another option could be to use the aggregate and xpointer functions.