Я хочу показать десятичные входы как 100.1, 100.0 в другом формате от целочисленных входов, таких как 100 Я использовал следующую проверку для определения десятичных знаков (переменный ввод числового типа)xslt проверить, является ли переменная десятичной с цифрами после десятичного разделителя
<xsl:when test="not(floor($input) = $input)">
он работает в таких случаях, как 100,1, но она не работает в тех случаях, как 100,00, это будет возвращать ложь о том, что это не является десятичным. я тогда пытался использовать
<xsl:when test="$input castable as xs:decimal">
Это не будет работать для целых, как 100, как проверка будет возвращена истина. Я попытался
<xsl:when test="$input instance of xs:decimal">
, для которого я получаю ложные для значений как 100.50, не знаю, почему. Есть ли другой способ решить эту проблему?
Я рассматриваю это как * искусственное * проблема - в математике 100.0 * является * целым числом. Вы хотите различить разные * лексические * представления для целочисленного значения по-другому - это может быть невозможно, потому что часто лексическое представление теряется задолго до того, как оценивается выражение XPath. Например, невозможно сказать, было ли число «5» первоначально введено как +5 или как 5. Точно так же строка (100.00) может содержать или не содержать точку - на самом деле с Saxon 9.x это doesn «т! Таким образом, к сожалению, ответ by @ michael.hor257k вызывает 'false()', когда вы хотите, чтобы это было 'true()' –
На самом деле * все * 11 XSLT-процессоров, с которыми я работаю, оценивают 'string (100.00)' as '' 100 "' –