2016-04-20 6 views
0

Es gibt zwei XSL-Transformationen in IBM DataPower nacheinander. Der erste enthält einen URL-Open-Call und gibt einige BINARY NODE zurück. Dieser Knoten enthält das .gz-Archiv mit dem darin enthaltenen JSON-Dokument. Zweite Transformation ist unten:JSON-Ausgabe nach XSLT auf IBM Datapower

<xsl:output method="text" encoding="utf-8" indent="yes" media-type="application/json"/> 
<dp:input-mapping type="ffd" href="local:///binaryNode.ffd"/> 

<xsl:variable name="input64" select="dp:binary-encode(/object/message/node())"/> 

<xsl:template match="/"> 
    <xsl:message terminate="no" dp:priority="alert" dp:type="all">input64<xsl:copy-of select="$input64"/></xsl:message> 
    <xsl:variable name="outputJson" select="dp:inflate($input64, 'gzip')"/> 
    <xsl:copy-of select="$outputJson"/> 
</xsl:template> 

Binary Knoten transformiert zuerst Base64 string ($ input64) und entpackt dann von dp: Funktion aufzublasen. $ outputJson-Variable enthält definitiv eine JSON-Zeichenfolge. Aber die XSLT-Ausgabe ist trotz der Anweisung <xsl:copy-of select="$outputJson"/> eine leere Zeichenfolge. Wie kann ich einen JSON für die Ausgabe erhalten?

Antwort

0

Zur Ausgabe etwas von einem XSLT binären Sie müssen sie wickeln in dem "Output":

<object> 
    <message> 
     <xsl:copy-of select="$outputJson"/> 
    </message> 
</object> 

ich jedoch in Betracht ziehen würde, anstatt eine Kontextvariable mit:

<dp:set-variable name="'var://context/JSON/output'" value="$outputJson" />