0
我有兩個不同的xslts執行兩個不同的任務。我有要求創建一個xslt執行這兩個任務。請參閱bwloe這兩個xslt的代碼,並讓mw知道它們是否可以合併爲一個xslt。將這兩個xslts合併爲一個
第一個xsl使用dp url open將請求發佈到一個url。第二個xsl是在請求中搜索一個標籤,如果該標籤存在,該標籤將被加密。
我正在尋找在一個單一的xslt即兩個這些任務。尋找標籤,加密它,發送請求(帶有加密標籤,如果存在的話)到網址。
<?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,只是有足夠的例外來混淆每個人。其中一個例外就是它*自動將結果片段轉換爲節點集轉換,所以Martin的XSLT 2.0代碼應該可以在DataPower上運行。 – bjimba
雖然上面的xslt並沒有在datapower上拋出任何語法錯誤,但這不是我正在尋找的。我希望執行加密的第二個xsl的輸出成爲將輸入請求發送到指定URL的第一個xsl的輸入。 在Datapower中,我使用了兩個xsl轉換動作,我可以通過使用INPUT和OUTPUT上下文輕鬆完成此操作。但是在這裏我想用一個單一的xsl轉換來完成,因此只需要一個xslt。 – anky316
@ anky316,我改變了片段,因爲我誤解了你想要的內容,以前的建議會將第一個樣式表的結果作爲第二個樣式表的輸入。由於所有的代碼似乎都是特定於數據的,我無法測試,所以試試看。 –