Мне нужно проверить длину поля, а затем добавить . перед последними двумя
цифры.
Пример: значение 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>
Любая помощь?





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>
Я думаю, что ваш код работает нормально.
Просто замените эту строку существующей:
<xsl:value-of select = "concat(substring(ns0:Amount, 1, ($VARAmtLength - 2)),'.', substring(ns0:Amount, ($VARAmtLength - 1), 2))" />
1. Вокруг оператора вычитания '-' должен быть пробел. В противном случае он будет рассматривать $VARAmtLength- как имя переменной.
2. Вы неправильно расставили круглые скобки для второй функции substring().