#xslt #xslt-1.0 #string-length
#xslt #xslt-1.0 #длина строки
Вопрос:
Мне нужно проверить длину поля, а затем добавить .
две предпоследние цифры.
Пример: значение Amount
равно 0001234567
, которое должно быть заменено на 00012345.67
. Здесь длина строки будет равна 10.
Но команда завершается с ошибкой и не может извлечь значение из
($VARAmtLength-2)
или ($VARAmtLength-1)
.
Мой код, как показано ниже:
<xsl:variable name="VARAmtLength" select="string-length (ns0:Amount )"/>
<xsl:if test=" ($VARAmtLength> 0)">
<tns:Amount>
<xsl:value-of select="concat(substring(ns0:Amount, 1, ($VARAmtLength- 2)),'.', substring(ns0:Amount, ($VARAmtLength-1, 2)))"/>
</tns:Amount>
</xsl:if>
Любая помощь?
Ответ №1:
Я думаю, что ваш код работает нормально.
Просто замените эту строку на существующую:
<xsl:value-of select="concat(substring(ns0:Amount, 1, ($VARAmtLength - 2)),'.', substring(ns0:Amount, ($VARAmtLength - 1), 2))" />
1. Вокруг оператора вычитания ‘-‘ должен быть пробел. В противном случае это будет рассматриваться $VARAmtLength-
как имя переменной.
2. Вы неправильно расставили круглые скобки для второй substring()
функции.
Ответ №2:
XML
<amount>0001234567</amount>
Xsl
<xsl:template match="/">
<xsl:variable name="length" select="//amount"/>
<xsl:if test="$length>0">
<amount>
<xsl:variable name="ajeet" select="concat(substring(//amount, 1, 8), '.')"/>
<xsl:variable name="kumar" select="substring(//amount, 9, 2)"/>
<xsl:value-of select="concat($ajeet, $kumar)"/>
</amount>
</xsl:if>
</xsl:template>