IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

Transformer un nombre romain en nombre arabe [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 21
    Points
    21
    Par défaut Transformer un nombre romain en nombre arabe
    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).

    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>
    Merci d'avance pour votre aide !

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    J'ai bien peur qu'il n'y ait pas de méthode prévue dans XSLT, et qu'il ne reste plus qu'à faire un algorithme de parsing. Il serait similaire à celui que tu ferais en Java, C#, Python ou que sais-je, mais la difficulté étant de le faire en XSLT, avec un template récursif qui avance sur la string à parser.

    On en trouve dans Google, cela dit.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    Je répond un peu tard mais merci quand même pour la réponse.

    Les nombres romains que je peux trouver en entrée étant dans une liste fermé j'ai décidé de faire un choose malheureusement pas très évolutif...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Algorithme Convertir nombre Entier en nombre Romain
    Par Kiffoux dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 30/11/2012, 10h34
  2. [LV 8.6.1] Transformer un tableau 1D en nombre
    Par Quent' dans le forum LabVIEW
    Réponses: 4
    Dernier message: 16/12/2009, 11h34
  3. Un petit défi : tester si une chaîne est un nombre romain
    Par rambc dans le forum Général Python
    Réponses: 1
    Dernier message: 09/04/2009, 12h43
  4. Réponses: 2
    Dernier message: 12/07/2007, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo