0
2つの異なるタスクを実行する2つの異なるxsltsがあります。私は両方のタスクを実行する単一のxsltを作成する必要があります。 bwloeとxsltsの両方のコードを見て、それらが単一のxsltに結合できるかどうかを知ってください。これら2つのxsltsを1つにまとめる
最初のxslは、dp url openを使用してURLに要求を送信しています。 2番目のxslはリクエスト内のタグを検索していて、そのタグが存在する場合、そのタグは暗号化されます。
私はこれらの両方のタスクを単一のxslt ieで行うことを検討しています。タグを探し、それを暗号化し、URLにリクエスト(暗号化されたタグがある場合)を投稿します。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dp="http://www.datapower.com/extensions" xmlns:env="http://schemas.xmlsoap.org/soap/envelope"
extension-element-prefixes="dp" exclude-result-prefixes="dp" version="1.0">
<xsl:template match="/">
<xsl:variable name="result">
<dp:url-open target="{$URL}" response="responsecode-ignore" ssl-proxy="BlankSSL"
data-type="xml" http-method="post" timeout="30">
<xsl:copy-of select="." />
</dp:url-open>
</xsl:variable>
</xsl:template>
と
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dp="http://www.datapower.com/extensions" xmlns:env="http://schemas.xmlsoap.org/soap/envelope"
extension-element-prefixes="dp" exclude-result-prefixes="dp" version="1.0">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="/*[local-name()='Envelope']/*[local-name()='accountNumber']">
<xsl:copy>
<xsl:value-of select="dp:encrypt-string('http://www.w3.org/2001/04/xmlenc#tripledes-cbc','hex:1728289',/*[local-name()='Envelope']/*[local-name()='accountNumber'])"/>
</xsl:copy>
</xsl:template>
DataPowerはこの点で奇妙なダックです。プロセッサーはXSLT 1.0で、誰もが混乱するのに十分な例外があります。これらの例外の1つは、自動的なresult-fragment to node-set変換を行うため、MartinのXSLT 2.0コードがDataPowerで動作することです。 – bjimba
上記のxsltはdatapowerで構文エラーを投げているわけではありませんが、私が探しているものではありません。私は、指定されたURLに入力要求を送信している最初のxslの入力に暗号化を行っている2番目のxslの出力をします。 Datapowerでは、私はINPUTとOUTPUTコンテキストを使って簡単にこれを行うことができる2つのxsl変換アクションを使用しています。しかし、ここで私は単一のxsl変換を使用してこれを行いたいので、単一のxsltです。 – anky316
@ anky316、私はスニペットを変更しました。私はあなたが望むものを誤解していました。以前の提案は、最初のスタイルシートの結果を2番目のスタイルシートに入力しました。すべてのコードがデータパワーに特化しているようですので、テストする方法はありませんので、自分で試してみてください。 –