Below is the RFH2 Transform xsl to convert a message to Websphere MQ format and append userid, ipaddress, filename and filepath for dynamic routing of messages.
<?xml version=”1.0″ encoding=”UTF-8″?>
extension-element-prefixes=”dp”
exclude-result-prefixes=”dp func ag”>
<xsl:template match=”/”>
<xsl:variable name=”userid” select=”dp:auth-info(‘basic-auth-name’)”/>
<xsl:variable name=”ipaddress” select=”dp:request-header(‘X-Client-IP’)”/>
<xsl:variable name=”filename” select=”ag:substring-after(dp:variable(‘var://service/URI’),’/’)”/>
<xsl:variable name=”filepath” select=”substring(dp:variable(‘var://service/URI’),1,string-length(dp:variable(‘var://service/URI’)) – string-length($filename))”/>
<xsl:variable name=”MQMD”>
<MQMD>
<Format>MQHRF2</Format>
<Persistence type=”MQLONG”>0</Persistence>
</MQMD>
</xsl:variable>
<xsl:variable name=”RFH2″>
<MQRFH2>
<StrucId>RFH</StrucId>
<Version>2</Version>
<Format>MQSTR</Format>
<NameValueData>
<NameValue>
<usr>
<userid><xsl:value-of select=”$userid”/></userid>
<filePath><xsl:value-of select=”$filepath”/></filePath>
<fileName><xsl:value-of select=”$filename”/></fileName>
<ipaddres><xsl:value-of select=”$ipaddress”/></ipaddres>
</usr>
</NameValue>
</NameValueData>
</MQRFH2>
</xsl:variable>
<xsl:variable name=”mqmdStr”>
<dp:serialize select=”$MQMD” omit-xml-decl=”yes”/>
</xsl:variable>
<xsl:variable name=”rfh2Str”>
<dp:serialize select=”$RFH2″ omit-xml-decl=”yes”/>
</xsl:variable>
<dp:set-request-header name=”‘MQMD'” value=”$mqmdStr”/>
<dp:set-request-header name=”‘MQRFH2′” value=”$rfh2Str”/>
</xsl:template>
<func:function name=”ag:substring-after”>
<xsl:param name=”string”/>
<xsl:param name=”delimiter”/>
<xsl:choose>
<xsl:when test=”contains($string,$delimiter)”>
<func:result select=”ag:substring-after(substring-after($string,$delimiter),$delimiter)”/>
</xsl:when>
<xsl:otherwise>
<func:result select=”$string”/>
</xsl:otherwise>
</xsl:choose>
</func:function>
</xsl:stylesheet>
<?xml version=”1.0″ encoding=”UTF-8″?><xsl:stylesheet xmlns:xsl=”http://www.w3.org/1999/XSL/Transform” version=”1.0″ xmlns:dp=”http://www.datapower.com/extensions” xmlns:func=”http://exslt.org/functions” xmlns:ag=”http://demo.ibm.com/functions” extension-element-prefixes=”dp” exclude-result-prefixes=”dp func ag”> <xsl:template match=”/”> <xsl:variable name=”userid” select=”dp:auth-info(‘basic-auth-name’)”/> <xsl:variable name=”ipaddress” select=”dp:request-header(‘X-Client-IP’)”/> <xsl:variable name=”filename” select=”ag:substring-after(dp:variable(‘var://service/URI’),’/’)”/> <xsl:variable name=”filepath” select=”substring(dp:variable(‘var://service/URI’),1,string-length(dp:variable(‘var://service/URI’)) – string-length($filename))”/> <xsl:variable name=”MQMD”> <MQMD> <Format>MQHRF2</Format> <Persistence type=”MQLONG”>0</Persistence> </MQMD> </xsl:variable> <xsl:variable name=”RFH2″> <MQRFH2> <StrucId>RFH</StrucId> <Version>2</Version> <Format>MQSTR</Format> <NameValueData> <NameValue> <usr> <userid><xsl:value-of select=”$userid”/></userid> <filePath><xsl:value-of select=”$filepath”/></filePath> <fileName><xsl:value-of select=”$filename”/></fileName> <ipaddres><xsl:value-of select=”$ipaddress”/></ipaddres> </usr> </NameValue> </NameValueData> </MQRFH2> </xsl:variable> <xsl:variable name=”mqmdStr”> <dp:serialize select=”$MQMD” omit-xml-decl=”yes”/> </xsl:variable> <xsl:variable name=”rfh2Str”> <dp:serialize select=”$RFH2″ omit-xml-decl=”yes”/> </xsl:variable> <dp:set-request-header name=”‘MQMD'” value=”$mqmdStr”/> <dp:set-request-header name=”‘MQRFH2′” value=”$rfh2Str”/> </xsl:template> <func:function name=”ag:substring-after”> <xsl:param name=”string”/> <xsl:param name=”delimiter”/> <xsl:choose> <xsl:when test=”contains($string,$delimiter)”> <func:result select=”ag:substring-after(substring-after($string,$delimiter),$delimiter)”/> </xsl:when> <xsl:otherwise> <func:result select=”$string”/> </xsl:otherwise> </xsl:choose> </func:function> </xsl:stylesheet>
0.000000
0.000000