Довольно простой вопрос, как я могу преобразовать число (1, 2, 3 и т. Д.) В порядковый номер для печати (1-й, 2-й, 3-й и т. Д.), Используя xslt?
В настоящее время следующее работает для 1-20, но мы можем увидеть ранние наборы более крупных объектов:
<xsl:template name="FormatRanking">
<xsl:param name="Value"></xsl:param>
<xsl:choose>
<xsl:when test="$Value = '1'">
<xsl:value-of select="$Value"/>st
</xsl:when>
<xsl:when test="$Value = '2'">
<xsl:value-of select="$Value"/>nd
</xsl:when>
<xsl:when test="$Value = '3'">
<xsl:value-of select="$Value"/>rd
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$Value"/>th
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Единственный способ узнать, как это сделать, это изменить xsl: when's:
<xsl:when test="$Value = '1'">
<xsl:when test="$Value = '2'">
<xsl:when test="$Value = '3'">
до (даже не уверен, что это правильно):
<xsl:when test="$Value = '1' or $Value = '21' or $Value = '31' ...">
<xsl:when test="$Value = '2' or $Value = '22' or $Value = '33' ...">
<xsl:when test="$Value = '3' or $Value = '22' or $Value = '33' ...">
Я бы хотел сделать что-то похожее на это Существует ли простой способ создания ординалов в C #? , но я не уверен, возможно ли это в Xslt.
На данный момент нам нужно только решение на английском языке.