Bonjour,
Je cherche une méthode pour transformer un nombre romain en nombre arabe (Par exemple : IV en 4).
J'ai trouvé la méthode ci-dessous qui n'est pas très élégante (boucle itérative jusqu'à trouver la bonne valeur) et qui en plus a des limites suivant les processeurs lorsqu'on veut traduire des grands nombres romains (XSLT instruction stack overflow).
Merci d'avance pour votre aide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <xsl:template name="RomanToInteger"> <xsl:param name="roman_number"/> <xsl:param name="index"/> <xsl:variable name="temp"> <xsl:call-template name="toRoman"> <xsl:with-param name="value" select="$index"/> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$temp = $roman_number"> <xsl:value-of select="$index"/> </xsl:when> <xsl:otherwise> <xsl:call-template name="RomanToInteger"> <xsl:with-param name="roman_number" select="$roman_number"/> <xsl:with-param name="index" select="$index + 1"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="toRoman"> <xsl:param name="value"/> <xsl:number value="$value" format="I"/> </xsl:template>
Partager