Announcement

Collapse
No announcement yet.

Englische Ordinalzahlen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Englische Ordinalzahlen

    An sich ist dies ein simples Thema, aber ich brech mir hier grad die Finger.

    Ich will die richtige englische Ordinalzahl ausgeben, aber der Vergleich trifft auf zwei unterschiedliche Werte zu.

    Die Ausgabe im Dokument lautet für beide 4th,
    114th semester of this course of study and the 214th


    aber das ist doch nur für die Elf richtig. Die 21 braucht das st. Aber warum ist dies hier bei der Bedingung gleich 11 ok
    stg_satz/stg.stgsem = 11
    und für
    stg_satz/stg.hssem = 21



    Mein aktueller Versuch:
    Code:
    <xsl:value-of select="stg_satz/stg.stgsem" />
    		
    		<xsl:choose>
    		<xsl:when test="stg_satz/stg.stgsem mod 10 = 2">2nd</xsl:when>
    		<xsl:when test="stg_satz/stg.stgsem mod 10 = 3">3rd</xsl:when>
    		<xsl:when test="stg_satz/stg.stgsem = 11">4th</xsl:when>
    		<xsl:when test="stg_satz/stg.stgsem = 12">5th</xsl:when>
    		<xsl:when test="stg_satz/stg.stgsem = 2">6st</xsl:when>
    		<xsl:when test="stg_satz/stg.stgsem = 2">7nd</xsl:when>
    		<xsl:when test="stg_satz/stg.stgsem = 3">8rd</xsl:when>
    		<xsl:when test="stg_satz/stg.stgsem mod 10 = 1">1st</xsl:when>
    		<xsl:otherwise>
    		<xsl:text>9th</xsl:text>
    		</xsl:otherwise>
    		</xsl:choose>
    				
    		<xsl:text> semester of this course of study and the </xsl:text>
    		
    		<xsl:value-of select="stg_satz/stg.hssem" />
    		
    		<xsl:choose>
    		
    		<xsl:when test="stg_satz/stg.hssem mod 10 = 2">2nd</xsl:when>
    		<xsl:when test="stg_satz/stg.hssem mod 10 = 3">3rd</xsl:when>
    		<xsl:when test="stg_satz/stg.hssem = 11">4th</xsl:when>
    		<xsl:when test="stg_satz/stg.hssem = 12">5th</xsl:when>
    		<xsl:when test="stg_satz/stg.hssem = 1">6st</xsl:when>
    		<xsl:when test="stg_satz/stg.hssem = 2">7nd</xsl:when>
    		<xsl:when test="stg_satz/stg.hssem = 3">8rd</xsl:when>
    		<xsl:when test="stg_satz/stg.hssem mod 10 = 1">1st</xsl:when>
    		<xsl:otherwise>
    		<xsl:text>th</xsl:text>
    		</xsl:otherwise>
    		</xsl:choose>

  • #2
    Wenn XSLT 2.0 möglich ist, bietet sich diese Funktion an. Alternativ liefert sie einen Algorithmus.

    Comment


    • #3
      Mit XSLT 2.0 reicht auch xsl: number mit dem ordinal="yes"-Attribut, etwa
      Code:
          <xsl:for-each select="1 to 30">
            <xsl:number value="." ordinal="yes"/>
            <xsl:text>
      </xsl:text>
          </xsl:for-each>
      um die Werte 1st bis 30th auszugeben.

      Comment

      Working...
      X