Если вы знаете, что у каждого вопроса есть номер, состоящий из нескольких частей, вы можете обработать его двумя <xsl:sort>
инструкциями:
<xsl:apply-templates select="Question">
<xsl:sort select="substring-before(@Value, '.')" data-type="number" />
<xsl:sort select="substring-after(@Value, '.')" />
</xsl:apply-templates>
Если некоторые числа могут состоять из нескольких частей, а некоторые нет, я думаю, что лучше всего сделать следующее:
<xsl:apply-templates select="Question">
<xsl:sort select="substring-before(concat(@Value, '.'), '.')" data-type="number" />
<xsl:sort select="substring-after(@Value, '.')" />
</xsl:apply-templates>
Дополнительная concat(@Value, '.')
добавляет '.
' в конец значения, так что substring-before()
всегда получает число.