мне нужно следующее поведение в трансформации XSLT в 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
Я не понимаю, почему каждый текст или значение-тега вне для-каждый тег генерирует странные выходы (или, по крайней мере, я не смог найти образец того, что это не так). Как вы можете видеть, заголовок «частично» повторяется и не знает причины такого поведения.
Не могли бы вы рассказать мне, где будет ошибка?
Ваша таблица стилей XSLT, как вы ее показываете, раскрывает это поведение? Если да, можете ли вы включить значение '$ str'? – Tomalak
$ str is/object/message/node(), который представляет все содержимое ввода: –
brokermq
Мне удалось запустить ваш код на DataPower vm и получить ожидаемые результаты. Лучше всего отлаживать, добавив строку 'xsl: value-of', которая выводит содержимое $ input64, а затем переходит к некоторому онлайн-конвертеру Base64 и видит, действительно ли вы правильно вводите входные данные (включая окончания строк). – bjimba