2009-09-17 107 views
1

我正在使用此腳本截斷sharepoint 2007中的文本字符串,但它不起作用,我看不出原因?!任何想法提供非常讚賞。截斷sharepoint中的文本字符串

從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> 

從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

「它不工作」是不是一個很具體的事情。什麼不行?它在做什麼,你期望它做什麼? – Welbog 2009-09-17 14:53:57

+0

基本上webparts ItemStyle提要拒絕渲染.. – toomanyairmiles 2009-09-17 14:57:36

+0

我期望它截斷字符串「@ Reason_x005F_x0020_Not_x005F_x0020_Green」到最後一個eplisis最多50個字符。 – toomanyairmiles 2009-09-17 14:59:33

回答

1

從我最初看,它看起來像 「50」 則不會發送一個字符串,它包在單引號。

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

或因爲它是一個數字,明確地將它轉換爲這樣的

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

OK,對於初學者來說,你使用嵌套都錯了。您的paramwith-param元素不應該以這種方式嵌套。更換你有這個什麼:

<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> 

<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> 

注意string-length中有一個連字符。

+0

不應該是'$ Reason_x005F_x0020_Not_x005F_x0020_Green'而不是以'@'開頭嗎? – Annie 2013-01-22 09:43:28

1

我知道這是一個古老的線程,但它讓我開始解決一個問題,我想我會把我的結果放在這裏爲將來的人。

我們正在使用SharePoint 2010企業級搜索和結果頁面我需要從中心縮短網址幷包含突出顯示。當URL被縮短,但是高亮不起作用,可能有一個更簡單/更好的方式來做到這一點,但是這是我做過什麼:

<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>