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] Récupérer la fin d'une url ?


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 29
    Par défaut [XSLT] Récupérer la fin d'une url ?
    Bonjour,

    Ma question est toute bête..

    J'ai une variable dans mon fichier xsl, elle contient une URL (ou un chemin local).
    Je souhaite juste récupérer la fin de cette url, cad le nom du fichier.

    Ex: Repertoire1/mesimages/toto.jpg

    Je veux avoir toto.jpg

    Biensur l'url est dynamique et change tout le temps...

    J'ai tenté cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="substring-after($link,'/')" />
    Je ne connais pas à l'avance la profondeur de l'arborescence etc...

    Peux-ton dire de prendre le dernier / au lieu du 1er dans la fonction substring-after?

    merci d'avance

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Salut !

    à mon avis, la seul chose qu'on puise faire serait un template nommé récursif dans ce style :
    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="afterLast">
       <xsl:param name="str"/>
       <xsl:param name="char"/>
       <xsl:choice>
          <xsl:when test="contains($str, $char)">
              <xsl:call-template name="afterLast">
                  <xsl:with-param name="str" value="substring-after($str,$char)"/>
                  <xsl:with-param name="char" value="$char"/>
              </xsl:call-template>
          </xsl:when>
          <xsl:otherwise>
              <xsl:value-of select="$str"/>
         </xsl:otherwise>
       </xsl:choice>
    </xsl:template>
    pour l'appeller, il te suffit de faire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:call-template name="afterLast">
       <xsl:with-param name="str" value="$link"/>
       <xsl:with-param name="char" value="/"/>
    </xsl:call-template>
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 29
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Warning: domxml_xslt_stylesheet_file(): compilation error: file result.xsl element choice in /home/indexit/indexit.php on line 89
     
    Warning: domxml_xslt_stylesheet_file(): xsltStylePreCompute: unknown xsl:choice in /home/indexit/indexit.php on line 89
     
    Warning: process(): xsltApplyOneTemplate: choice was not compiled in /home/indexit/indexit.php on line 91
     
    Warning: process(): xsltApplyOneTemplate: choice was not compiled in /home/indexit/indexit.php on line 91



    J'ai mon fichier xsl qui est un peu complexe aussi alors je ne sais pas si j'ai bien placé le code...
    voila comment j'ai procédé :
    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
    25
    26
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:nutch="http://www.nutch.org/opensearchrss/1.0/" xmlns:opensearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:php="http://php.net/xsl" exclude-result-prefixes="nutch opensearch php" >
    <xsl:output method="html" indent="yes" encoding="iso-8859-1" omit-xml-declaration="no" />
    <xsl:template name="afterLast">
    ...
    </xsl:template>
     
    <xsl:template match="/rss/channel">
    	<xsl:for-each select="item">
    ...
    <xsl:if>
    ...
    </xsl:if>
    <xsl:if>
    ...
    <xsl:call-template name="afterLast">
      <xsl:with-param name="str" value="$link"/>
      <xsl:with-param name="char" value="/"/>
    </xsl:call-template>
    ...
    </xsl:if>
    ...
    	</xsl:for-each>
     </xsl:template>
    </xsl:stylesheet>
    j'ai simplifié au maximum mon fichier..

    une idée du pk du comment de l'erreur?


    EDIT : je trouve pas d'info sur xsl:choice? c'est pas plutôt xsl:choose?

  4. #4
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    oui, c'est choose, pas choice, désolé... (j'ai confondu XSLT et XSD )
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 29
    Par défaut
    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
    Warning: process(): runtime error: file result.xsl element call-template in /home/index/index.php on line 91
     
    Warning: process(): xsltApplyOneTemplate: loop found ??? in /home/index/index.php on line 91
     
    Warning: process(): try increasing xsltMaxDepth (--maxdepth) in /home/index/index.php on line 91
     
    Warning: process(): Templates: in /home/index/index.php on line 91
     
    Warning: process(): #0 in /home/index/index.php on line 91
     
    Warning: process(): name afterLast in /home/index/index.php on line 91
     
    Warning: process(): in /home/index/index.php on line 91
     
    Warning: process(): #1 in /home/index/index.php on line 91
     
    Warning: process(): name afterLast in /home/index/index.php on line 91
     
    Warning: process(): in /home/index/index.php on line 91
    J'ai ça maintenant comme erreur en mettant choose.

  6. #6
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Il semble que ton processeur XSLT ne supporte pas la récursivité... étrange... je ne vois pas vraiment comment faire autrement... l'itératif étant banni en XSLT...

    vérifie que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    substring-after('a/b/c/d', '/')
    renvoie bien b/c/d par exemple (que le / ne soit pas conservé)...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/12/2010, 14h12
  2. Ajouter un timestamp à la fin d'une url
    Par shadeoner dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/10/2010, 11h53
  3. [RegEx] remplacement d'une chaine à la fin d'une URL
    Par ozzeo dans le forum Langage
    Réponses: 1
    Dernier message: 13/05/2009, 15h34
  4. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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