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 :

[xslt]Separer les chaines


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 34
    Points
    34
    Par défaut [xslt]Separer les chaines
    Salut à tout !
    J'ai un problème avec une chaine de caracatère en XML/XSL
    Je voudrais extraire les n chiffres de ma chaine, séparés par des -
    pour ensuite exprimer une condition sur chacun des nombres

    Je sais pas si c'est très clairs alors voici un exemple

    La chaîne est : 1-5-7-9-11-21-24
    Je veux faire un truc dans le genre:

    Tant que l'on peut extaire un chiffre de la chaine
    {
    $chiffre= extraire(chiffre, chaine)
    switch $chiffre
    {
    case 1: echo " Blabla1";break;
    case 2: echo " Blabla2";break;
    case 3: echo " Blabla3";break;
    ...
    }
    }
    le tout en xsl bien sur
    Merci a ceux qui pourrons m'aider

  2. #2
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 34
    Points
    34
    Par défaut Siou plait
    Bon, il n'y à pas l'air d'avoir grand monde pour m'aider alors, autre chose:

    Comment je peux recuperer un paramètre dans un template:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	<xsl:template name="loop"> 
    		<xsl:param name="inc" select="incident"/>
    		<xsl:apply-templates select="incident"> 
    			<xsl:with-param name="indice" select="substring-before($inc,'-')"/>
    		</xsl:apply-templates>
    		<xsl:if test="string-length($inc) &gt; 2"> 
    		<br/>
    		<xsl:call-template name="loop"> 
    			<xsl:with-param name="inc" select="substring-after($inc,'-')"/>
    		</xsl:call-template> 
    	</xsl:if>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    <xsl:template match="incident">
         <br/>
         <xsl:variable name="un" select="$indice"/>
         ...........;
    </xsl:template>
     
    Voila, j'ai une erreur a chque fois que je veux toucher au paraamètre $indice

  3. #3
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Salut pour ton premier problème il te faut utilisé substring(caractère de départ, caractère de fin) un lien:

    http://www.w3schools.com/xpath/xpath_functions.asp

    Et pour tu fait un substring du dernier puis tu fais une boucle et tant que ca n'est pas égal a la dernière valeur tu continue



    Pour tes paramètre il faut qu'il soit au tout début du xsl après xsl:stylesheet ou xsl:output. Comme ca tu peux l'atteindre de tout les template si tu le met dans un template il est valable seuleument dans le template.

    Autre chose une variable est instancié avec une valeur et tu ne peux pas la changer ce n'est pas une vrai variable

    ++

    Thierry
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 34
    Points
    34
    Par défaut ok
    Ok, a mon avis, le problème des paramètres vient de là

  5. #5
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Autre chose une variable est instancié avec une valeur et tu ne peux pas la changer ce n'est pas une vrai variable

    de plus il faut faire un différence entre xsl:param et xsl:variable
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 34
    Points
    34
    Par défaut
    Ca à l'air de marcher sauf que maintenant,
    il me manque une itération

    Si j'ai une chaine 1-2-3-4-5
    Je peux aller jusque 4 mais la 5éme ne passe pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	<xsl:template name="loop">
    		<xsl:param name="incidents"/>
    		<xsl:apply-templates select="incident"> 
    			<xsl:with-param name="indice" select="substring-before($incidents,'-')"/>
    		</xsl:apply-templates>
    		<xsl:if test="string-length($incidents) &gt; 0"> 
    			<xsl:call-template name="loop"> 
    				<xsl:with-param name="incidents" select="substring-after($incidents,'-')"/>
    			</xsl:call-template> 
    		</xsl:if> 
    	</xsl:template>

  7. #7
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Tu peux faire ca avec position().

    ++
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  8. #8
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 34
    Points
    34
    Par défaut
    C'est bon, je me suis débrouiller comme j'ai pu et je mets le code
    Reutilisez le si vous en avez besoin :-)

    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
     
     
    	<xsl:template name="loop_incidents">
    		<xsl:param name="incidents"/>
    		<xsl:apply-templates select="incident"> 
    			<xsl:with-param name="indice" select="substring-before($incidents,'-')"/>
    		</xsl:apply-templates>
    		<xsl:choose>
    			<xsl:when test="string-length($incidents) &gt; 2"> 
    				<xsl:call-template name="loop_incidents"> 
    					<xsl:with-param name="incidents" select="substring-after($incidents,'-')"/>
    				</xsl:call-template> 
    			</xsl:when> 
    			<xsl:otherwise> 
    				<xsl:apply-templates select="incident">
    					<xsl:with-param name="indice" select="$incidents"/>
    				</xsl:apply-templates> 
    			</xsl:otherwise> 
    		</xsl:choose>
    	</xsl:template>

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

Discussions similaires

  1. [PHP][XSLT] fonctions sur les chaines
    Par Shirraz dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/05/2009, 16h59
  2. Réponses: 16
    Dernier message: 26/01/2006, 09h49
  3. [LG]Symbole # (dièse) et fonctions sur les chaînes
    Par James64 dans le forum Langage
    Réponses: 6
    Dernier message: 24/03/2004, 14h19
  4. [Documentation][XSLT][XSLFO]Les balises xslfo
    Par Lydiane dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/08/2002, 11h31
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

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