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] Un texte et 3 petits points...


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 26
    Points : 29
    Points
    29
    Par défaut [XSLT] Un texte et 3 petits points...
    Bonjour a tous, je lis souvent ce forum et y apprend beaucoups de bonnes choses, mais pour une fois je me retrouve bloqué et je n'ai trouvé nul part la solution à mon problème (si elle existe...)

    Voila ce qu'il m'arrive :

    J'ai un fichier XML classique et bien formé contenant des informations sur des documents.
    J'ai une feuille XSLT tout aussi classique qui m'affiche la liste des documents.

    Jusque là rien de bien sorcier

    Maintenant je me retrouve a travailler dans un environement de faible taille (250px X 400px) pour un matériel bien particulier.
    malheureusement les titres des docummetns sont souvent plus long que l'espace aloué et passe donc à la ligne.. donnat un effet tres disgracieux au tout et augmentant le temps de recherche d'une info.

    Je me proposais de cinder les titre a une longeur particuliere et d'y rajouter 3 petits points (...) à la fin. seulement voila... les 3 petits points je les rajoute bien mais réussir a couper le texte (pas au millieu d'un mot biensure ça serait trop simple lol) j'y arrive pas en utilisant uniquement xsl.

    J'ai temporairement (et peut etre definitivement si jamais je trouve pas) installé php sur le serveur et ai mis en place un petit script qui fait ça tres bien.. mais je trouve le procédé tres lourd pour juste 3 petits points...

    merci de votre aide.

    Dadv

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut Re: Un texte et 3 petits points...
    Bonjour, et bienvenue sur le forum

    Citation Envoyé par Dadv
    Je me proposais de cinder les titre a une longeur particuliere et d'y rajouter 3 petits points (...) à la fin. seulement voila... les 3 petits points je les rajoute bien mais réussir a couper le texte (pas au millieu d'un mot biensure ça serait trop simple lol) j'y arrive pas en utilisant uniquement xsl.
    Il faut que tu sois plus précis sur la règle qui permet de définir où couper ta chaîne, avec un petit exemple.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 26
    Points : 29
    Points
    29
    Par défaut
    Oui autant pour moi ...

    par exemple :

    titre original :
    Neoptolemus quidem apud Ennium " philosophari sibi " ait " necesse esse, sed paucis; nam omnino haud placere ". Ego autem, Brute, necesse mihi quidem esse arbitror philosophari;

    titre coupé :
    Neoptolemus quidem apud Ennium " philosophari...

    autre exemple

    titre original :
    In ipsa enim Graecia philosophia tanto in honore numquam fuisset, nisi doctissimorum contentionibus dissensionibusque viguisset.

    tritre coupé :
    In ipsa enim Graecia philosophia tanto in honore...

    Je désire qu'il coupe a l'espace le plus proche sans passer à la ligne.

    avec une longeur minimum de (par exemple) 50 caractères.

    j'espere avoir été plus précis

    Edit :

    Pour etre encore plus précis voila la fonction php que j'utilise (prise sur un autre site) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function tronquer($tocut , $max_caracteres , $space='1' , $points='1'){ 
     if (strlen($tocut)>$max_caracteres){ 
      if ($space=='1'){ 
      $max_caracteres=strrpos(substr($tocut, 0, $max_caracteres), " "); 
      } 
      $tocut = substr($tocut, 0, $max_caracteres); 
      if ($points=='1'){ 
      $tocut.='...'; 
      } 
      } 
      return $tocut; 
    }

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    On ne va pas y couper (mouarf), il faut un template récursif :
    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
    	<xsl:template name="coupure-texte">
    		<xsl:param name="texte"/>
    		<xsl:param name="longueur" select="30"/>
    		<xsl:choose>
    			<xsl:when test="substring($texte, $longueur, 1) = ' ' or $texte = ''">
    				<xsl:value-of select="concat(substring($texte, 1, $longueur - 1), '...')"/>
    			</xsl:when>
    			<xsl:otherwise>
    				<xsl:call-template name="coupure-texte">
    					<xsl:with-param name="texte" select="$texte"/>
    					<xsl:with-param name="longueur" select="$longueur - 1"/>
    				</xsl:call-template>
    			</xsl:otherwise>
    		</xsl:choose>
    	</xsl:template>
    Pour appeler ce template (par exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    					<xsl:call-template name="coupure-texte">
    						<xsl:with-param name="texte" select="."/>
    						<xsl:with-param name="longueur" select="50"/>						
    					</xsl:call-template>
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 26
    Points : 29
    Points
    29
    Par défaut
    ok je vais tester ça demain je vous tien au courant

    Un grand merci


    => après test ça marche superbement merci !

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

Discussions similaires

  1. Comment raboter un texte trop long et ajouter 3 petits points ?
    Par djibril dans le forum Téléchargez
    Réponses: 3
    Dernier message: 06/05/2014, 16h33
  2. Texte trop long remplacé par 3 petits points
    Par artifrui dans le forum Langage
    Réponses: 3
    Dernier message: 03/09/2012, 17h52
  3. Réponses: 6
    Dernier message: 21/07/2006, 09h18
  4. xml xslt vers texte
    Par coack dans le forum 4D
    Réponses: 5
    Dernier message: 09/06/2006, 10h52

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