gpt4 book ai didi

xslt - 如何使用 xslt 将数字(1、2、3 等)转换为序数(1st、2nd、3rd 等)

转载 作者:行者123 更新时间:2023-12-04 16:50:05 26 4
gpt4 key购买 nike

非常简单的问题,如何使用 xslt 将数字(1、2、3 等)转换为打印友好的序数(1st、2nd、3rd 等)?

目前以下适用于 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 :
<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' ...">

我想做类似的事情 Is there an easy way to create ordinals in C#?但我不确定在 Xslt 中是否可行。

此时我们只需要一个英文的解决方案。

最佳答案

这是 "Is there an easy way to create ordinals in C#?" 的解决方案,转换为 XSLT:

<xsl:template name="FormatRanking">
<xsl:param name="Value" select="0" />

<xsl:value-of select="$Value"/>

<!-- a little parameter sanity check (integer > 0) -->
<xsl:if test="
translate($Value, '0123456789', '') = ''
and
$Value > 0
">
<xsl:variable name="mod100" select="$Value mod 100" />
<xsl:variable name="mod10" select="$Value mod 10" />

<xsl:choose>
<xsl:when test="$mod100 = 11 or $mod100 = 12 or $mod100 = 13">th</xsl:when>
<xsl:when test="$mod10 = 1">st</xsl:when>
<xsl:when test="$mod10 = 2">nd</xsl:when>
<xsl:when test="$mod10 = 3">rd</xsl:when>
<xsl:otherwise>th</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>

关于xslt - 如何使用 xslt 将数字(1、2、3 等)转换为序数(1st、2nd、3rd 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1202581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com