2015-04-05 126 views
0

我需要的DataPower在XSLT轉換以下行爲:如何將頁眉/頁腳添加到XSLT轉換中的文本輸出中?

輸入文本:

AAAAAZZZZZZZ 
BBBBBZZZZZZZ 
CCCCCZZZZZZZ 

輸出文本:

_HEADER 
AAAAA 
BBBBB 
CCCCC 
_FOOTER 

所以我寫了下面的XSLT:

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:dp="http://www.datapower.com/extensions" 
    xmlns:str="http://exslt.org/strings" 
    xmlns:date="http://exslt.org/dates-and-times" 
    extension-element-prefixes="dp str date" 
> 
    <dp:input-mapping href="store:///pkcs7-convert-input.ffd" type="ffd"/> 

    <xsl:output method="text"/> 

    <xsl:variable name="rowsep" select="'&#10;'"/> 
    <xsl:variable name="input64" select="dp:binary-encode(/object/message/node())"/> 
    <xsl:variable name="str" select="dp:decode($input64,'base-64')"/> 

    <xsl:template match="/"> 

    <!-- Header --> 

    <xsl:text>_HEADER&#10;</xsl:text> 

    <!-- Body --> 

     <xsl:for-each select="str:split($str,$rowsep)"> 
     <xsl:if test="position()!=last()"> 
      <xsl:value-of select="substring(.,1,5)"/> 
      <xsl:text>&#10;</xsl:text> 
     </xsl:if> 
     </xsl:for-each> 

     <!-- Trailer --> 

    <xsl:text>_FOOTER&#10;</xsl:text> 

</xsl:template> 
</xsl:stylesheet> 

但它正在生成以下輸出:

_HEADER 
_HEAD 
AAAAA 
BBBBB 
CCCCC 
_FOOTER 

我不明白爲什麼外界每個文本或標籤值的對,每個標籤產生奇怪的輸出(或至少我不能找到什麼是錯的模式)。正如你所看到的,標題是「部分」重複的,並不知道這種行爲的原因。

您能否給我一些提示錯誤會在哪裏?

+0

你在這裏顯示的XSLT樣式表暴露了這種行爲?如果是這樣,你可以包含'$ str'的​​值嗎? ()/ – Tomalak 2015-04-05 23:02:14

+0

$ str是/ object/message/node(),表示整個輸入內容: brokermq 2015-04-05 23:07:05

+1

我可以在DataPower虛擬機上運行您的代碼並獲得預期的結果。你最好的選擇是通過添加一個輸出$ input64內容的'xsl:value-of'行來調試,然後去一些在線的Base64轉換器,看看你是否真正獲得了輸入數據(包括行結束符)。 – bjimba 2015-04-06 18:03:28

回答

0

解決!......這是我的錯......我在關於失敗的XSLT的想法中被關閉了。但我正在申請兩次轉換:在MPG和後端。這解釋了奇怪的行爲。

+0

很高興聽到它。這就說得通了。 – bjimba 2015-04-07 18:23:40

相關問題