2009-09-17 9 views
1

J'utilise ce script pour tronquer une chaîne de texte dans sharepoint 2007, mais cela ne fonctionne pas et je ne vois pas pourquoi! Toutes les idées offertes sont grandement appréciées.Troncation de la chaîne de caractères dans le point de partage

De Header.xsl

<xsl:template name="fixedstring"> 
<xsl:param name="targetVar"> 
<xsl:param name="allowablelength"> 
<xsl:value-of select="substring($targetVar, 1, $allowablelength)"> 
<xsl:if test="stringlength($targetVar) &gt; $allowablelength"> 
<xsl:text>...</xsl:text> 
</xsl:if> 
</xsl:value-of></xsl:param></xsl:param> 
</xsl:template> 

De ItemStyle.xsl

<xsl:call-template name="fixedstring"> 
<xsl:with-param name="targetVar"> 
<xsl:value-of select="@Reason_x005F_x0020_Not_x005F_x0020_Green"/> 
<xsl:with-param name="allowablelength" select="50"></xsl:with-param> 
</xsl:with-param> 
</xsl:call-template> 
+1

« Il ne fonctionne pas » est pas une chose très spécifique. Qu'est-ce qui ne fonctionne pas? Que fait-il et que voulez-vous qu'il fasse? – Welbog

+0

Fondamentalement les flux WebStyle ItemStyle refusent de rendre .. – toomanyairmiles

+0

Je m'attends à ce qu'il tronque la chaîne "@ Reason_x005F_x0020_Not_x005F_x0020_Green" à un maximum de 50 caractères avec une eplisis à la fin. – toomanyairmiles

Répondre

1

De mon premier regard, il semble que le "50" est pas envoyé sous forme de chaîne, l'envelopper dans des guillemets simples .

<xsl:with-param name="allowablelength" select="'50'"></xsl:with-param> 

ou car il est un nombre, jeté explicitement comme tel

<xsl:with-param name="allowablelength" select="number(50)"></xsl:with-param> 
3

OK, pour commencer, vous utilisez l'imbrication tout faux. Vos éléments param et with-param ne doivent pas être imbriqués de cette façon. Remplacer ce que vous avez avec ceci:

<xsl:template name="fixedstring"> 
    <xsl:param name="targetVar"/> 
    <xsl:param name="allowablelength"/> 
    <xsl:value-of select="substring($targetVar, 1, $allowablelength)"/> 
    <xsl:if test="string-length($targetVar) &gt; $allowablelength"> 
    <xsl:text>...</xsl:text> 
    </xsl:if> 
</xsl:template> 

et

<xsl:call-template name="fixedstring"> 
    <xsl:with-param name="targetVar"> 
    <xsl:value-of select="@Reason_x005F_x0020_Not_x005F_x0020_Green"/> 
    </xsl:with-param> 
    <xsl:with-param name="allowablelength" select="50"/> 
</xsl:call-template> 

Notez le string-length a un trait d'union en elle.

+0

Ne devrait-il pas être '$ Reason_x005F_x0020_Not_x005F_x0020_Green' au lieu de commencer par' @ '? – Annie

1

Je sais que c'est un vieux fil de discussion, mais j'ai commencé à résoudre un problème et j'ai pensé que je mettrais mes résultats ici pour quelqu'un dans le futur. Nous utilisons SharePoint 2010 Enterprise Search et pour la page de résultats, j'ai eu l'obligation de raccourcir l'URL du centre et d'inclure également la surbrillance. La mise en évidence ne fonctionne pas lorsque l'URL est raccourcie, cependant, et il y a probablement un moyen plus facile/meilleure façon de le faire, mais ce que je l'ai fait:

<span class="srch-URL2" id="{concat($currentId,'_Url')}" title="{$url}"> 
    <xsl:call-template name="truncateURL"> 
     <xsl:with-param name="targetURL"> 
      <xsl:value-of select="url"/> 
     </xsl:with-param> 
     <xsl:with-param name="allowablelength" select="number(40)"/> 
    </xsl:call-template> 
</span> 

<xsl:template name="truncateURL"> 
    <xsl:param name="targetURL"/> 
    <xsl:param name="allowablelength"/> 
    <xsl:choose> 
     <xsl:when test="string-length($targetURL) &lt; $allowablelength"> 
      <xsl:choose> 
       <xsl:when test="hithighlightedproperties/HHUrl[. != '']"> 
        <xsl:call-template name="HitHighlighting"> 
         <xsl:with-param name="hh" select="hithighlightedproperties/HHUrl" /> 
        </xsl:call-template> 
       </xsl:when> 
       <xsl:otherwise> 
        <xsl:value-of select="$targetURL"/> 
       </xsl:otherwise> 
      </xsl:choose> 
     </xsl:when> 
     <xsl:when test="string-length($targetURL) &lt; ($allowablelength+$allowablelength)"> 
      <xsl:choose> 
       <xsl:when test="hithighlightedproperties/HHUrl[. != '']"> 
        <xsl:call-template name="HitHighlighting"> 
         <xsl:with-param name="hh" select="hithighlightedproperties/HHUrl" /> 
        </xsl:call-template> 
       </xsl:when> 
       <xsl:otherwise> 
        <xsl:value-of select="$targetURL"/> 
       </xsl:otherwise> 
      </xsl:choose> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:value-of select="substring($targetURL, 1, $allowablelength)"/> 
      <xsl:text>…</xsl:text> 
      <xsl:value-of select="substring($targetURL, (string-length($targetURL)-$allowablelength)+1, $allowablelength)"/> 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 
Questions connexes