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] rendu d'une recherche - utilisation d'une fonction récursive


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut [XSLT] rendu d'une recherche - utilisation d'une fonction récursive
    voila j'utilise le code XSL de la recherche dans sharepoint pour afficher/modifier les urls qui contiennent la chaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lists/Versions/DispForm.aspx?ID=
    par
    j'ai ajouté une fonction récursive qui fait ça (replace-string function), elle fonctionne mais j'aurais besoin d'appliquer son résultat à la place des $url en dessous <a href="{$url}' ...

    si qq a une idée merci

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <!-- reusable replace-string function -->
        <xsl:template name="replace-string">
            <xsl:param name="text"/>
            <xsl:param name="OldUrlVersionList">Lists/Versions/DispForm.aspx?ID=</xsl:param>
            <xsl:param name="NewUrlVersionList">default.aspx?version=</xsl:param>        
            <xsl:choose>
                <xsl:when test="contains($text, $OldUrlVersionList)">
                    <xsl:variable name="before" select="substring-before($text, $OldUrlVersionList)"/>
                    <xsl:variable name="after" select="substring-after($text, $OldUrlVersionList)"/>
                    <xsl:value-of select="$before"/>
                    <xsl:value-of select="$NewUrlVersionList"/>
                    <xsl:value-of select="$after"/>
                </xsl:when>            
                <xsl:otherwise>
                    <xsl:value-of select="$text"/>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:template>
     
        <!-- This template is called for each result -->
        <xsl:template match="Result">
            <xsl:variable name="id" select="id"/>
            <xsl:variable name="url" select="url"/>
     
            <span class="srch-Icon">
                <a href="{$url}" id="{concat('CSR_IMG_',$id)}" title="{$url}">
                    <img align="absmiddle" src="{imageurl}" border="0" alt="{imageurl/@imageurldescription}" />
                </a>                 
            </span>
            <span class="srch-Title">
                <a href="{$url}" id="{concat('CSR_',$id)}" title="{$url}">
                    <xsl:choose>
                        <xsl:when test="hithighlightedproperties/HHTitle[. != '']">
                            <xsl:call-template name="HitHighlighting">
                                <xsl:with-param name="hh" select="hithighlightedproperties/HHTitle" />
                            </xsl:call-template>
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:value-of select="title"/>
                        </xsl:otherwise>
                    </xsl:choose>
                </a>
                <br/>
            </span>
    ...
    </xsl:template>

  2. #2
    Expert éminent

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Points : 8 107
    Points
    8 107
    Par défaut
    Bonjour,

    Pour appliquer le résultat de ta template replace-string, tu peux l'appeler et stocker ce qu'elle retourne dans une variable, par exemple url2, que tu utilisera au lieu de url.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xsl:variable name="url2">
    	<xsl:call-template name="replace-string">
    		<xsl:with-param name="text" select="???1"></xsl:with-param>
    		<xsl:with-param name="OldUrlVersionList" select="???2"></xsl:with-param>
    		<xsl:with-param name="NewUrlVersionList" select="???3"></xsl:with-param>
    	</xsl:call-template>
    </xsl:variable>
    En remplaçant les ??? par ce que tu souhaite.

    Je te conseille de remplacer ???2 par 'Lists/Versions/DispForm.aspx?ID=' et ???3 par 'default.aspx?version=' et d'enlever ces valeurs dans ta template pour avoir seulement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:param name="text"/>
    <xsl:param name="OldUrlVersionList"/>
    <xsl:param name="NewUrlVersionList"/>
    Ainsi, tu pourra réutiliser facilement ta template avec d'autres termes à remplacer.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    ok merci pour ta réponse

    autre question: est ce que je laisse les <xsl:value-of ...> dans le template replace-string?

    ok la réponse est oui, il met la valeur dans la variable

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/02/2013, 14h13
  2. utiliser * pour une recherche en vba
    Par kromei dans le forum Général VBA
    Réponses: 4
    Dernier message: 09/05/2010, 14h15
  3. Utiliser une recherche google dans une application
    Par anat1212 dans le forum VB.NET
    Réponses: 0
    Dernier message: 19/06/2009, 21h04
  4. recherche utilisation d'une table
    Par xmanu dans le forum Access
    Réponses: 2
    Dernier message: 21/09/2005, 09h09
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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