Как преобразовать число (1,2,3, и т.д.) в порядковое число (1-й, 2-й, 3-й, и т.д.) использующий xslt

Как в C, потому что процесс даст ОС код выхода.

можно или использовать

int main (int argc, char ** argv)
{
  return (0);
}

, или

int main (int argc, char ** argv)
{
  exit (0);
}

Это находится, по крайней мере, в C89 IIRC.

5
задан Community 23 May 2017 в 10:30
поделиться

3 ответа

Вот решение из «Есть ли простой способ создавать порядковые числа в 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>
9
ответ дан 18 December 2019 в 13:17
поделиться

Не могли бы вы использовать расширение XSLT? Я знаю, что EXSLT имеет большой диапазон расширений даты и времени .

0
ответ дан 18 December 2019 в 13:17
поделиться

Я не говорю, что это хорошая идея сделать это в xslt, но ...

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

    <xsl:choose>
            <xsl:when test="substring($Value,string-length($Value)-1) = '11'">
                    <xsl:value-of select="$Value"/>th
            </xsl:when>
            <xsl:when test="substring($Value,string-length($Value)-1)  = '12'">
                    <xsl:value-of select="$Value"/>th
            </xsl:when>
            <xsl:when test="substring($Value,string-length($Value)-1)  = '13'">
                    <xsl:value-of select="$Value"/>th
            </xsl:when>
            <xsl:when test="substring($Value,string-length($Value)) = '1'">
                    <xsl:value-of select="$Value"/>st
            </xsl:when>
            <xsl:when test="substring($Value,string-length($Value))  = '2'">
                    <xsl:value-of select="$Value"/>nd
            </xsl:when>
            <xsl:when test="substring($Value,string-length($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:template name="FormatRanking">
    <xsl:param name="Value"></xsl:param>

    <xsl:variable name="penultimateChar" select="substring($Value,string-length($Value)-1, 1)"/>
    <xsl:variable name="lastChar" select="substring($Value,string-length($Value))"/>

    <xsl:value-of select="$Value"/>
    <xsl:choose>
            <xsl:when test="$penultimateChar= '1'">
                    <xsl:text>th </xsl:text>
            </xsl:when>
            <xsl:when test="$lastChar = '1'">
                    <xsl:text>st </xsl:text>
             </xsl:when>
            <xsl:when test="$lastChar = '2'">
                    <xsl:text>nd </xsl:text>
            </xsl:when>
            <xsl:when test="$lastChar = '3'">
                    <xsl:text>rd </xsl:text>
            </xsl:when>
            <xsl:otherwise>
                    <xsl:text>th </xsl:text>
            </xsl:otherwise>
    </xsl:choose>

5
ответ дан 18 December 2019 в 13:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: