0

Datapower の 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

for-each タグの外側のすべてのテキストまたは value-of タグが奇妙な出力を生成する理由がわかりません (または、少なくとも何が問題なのかのパターンを見つけることができません)。ご覧のとおり、ヘッダーは「部分的に」繰り返されており、この動作の理由はわかりません。

どこが間違っているのか、ヒントを教えてください。

4

1 に答える 1

0

解決しました!...それは私のせいでした...私は、失敗した XSLT であるという考えに閉じこめられました。しかし、MPG とバックエンドの 2 回の変換を適用していました。それは奇妙な振る舞いを説明しています。

于 2015-04-07T17:54:54.137 に答える