Необходимо учитывать три вещи:
- с какими типами значений вы работаете
- в каком формате значение, сохраненное в
latestVersion
, равно - какВы форматируете значение для представления пользователю
Во-первых, поскольку ваши номера версий являются десятичными, вы должны последовательно обрабатывать их как десятичные.Поэтому вам не следует использовать функцию number()
, которая всегда возвращает xs:double
.Вы должны переписать выражение следующим образом:
max(instance('history')/History/Revision/Version/xs:decimal(.))
Во-вторых, при этом значение, сохраненное в latestVersion
, будет гарантированно иметь формат xs:decimal
.Здесь это будет 3
.
В-третьих, как вы представите это значение пользователю?Вы должны убедиться, что он отформатирован правильно.Если вы напишите:
<xforms:output ref="latestVersion"/>
xforms:output
проверяет тип значения, замечает, что это тип decimal
, и форматирует его в соответствии с форматом по умолчанию для десятичных типов, см. properties-xforms.xml .
Формат по умолчанию для десятичных типов:
format-number(xs:decimal(.),'###,###,###,##0.00')
Если вы хотите использовать десятичный формат, вы можете переопределить свойство в properties-local.xmlили используйте что-то вроде предложенного @grtjn:
<xforms:output value="format-number(instance('history')/latestVersion, '#.0')"/>
Или:
<xforms:output value="format-number(instance('history')/latestVersion, '#,###.0')"/>