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="' '"/>
<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 </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> </xsl:text>
</xsl:if>
</xsl:for-each>
<!-- Trailer -->
<xsl:text>_FOOTER </xsl:text>
</xsl:template>
</xsl:stylesheet>
ただし、次の出力が生成されます。
_HEADER
_HEAD
AAAAA
BBBBB
CCCCC
_FOOTER
for-each タグの外側のすべてのテキストまたは value-of タグが奇妙な出力を生成する理由がわかりません (または、少なくとも何が問題なのかのパターンを見つけることができません)。ご覧のとおり、ヘッダーは「部分的に」繰り返されており、この動作の理由はわかりません。
どこが間違っているのか、ヒントを教えてください。