2009-09-17 4 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

+0

В основном веб-сайты ItemStyle подает отказ от рендеринга. – toomanyairmiles

+0

Я ожидаю, что он обрезает строку «@ Reason_x005F_x0020_Not_x005F_x0020_Green» до 50 символов с эллипсом на конце. – toomanyairmiles

ответ

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, для начала, вы используете вложенности все неправильно. Элементы param и with-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

1

Я знаю, что это старая ветка, но это заставило меня начать решение проблемы, и я подумал, что буду отдавать свои результаты здесь для кого-то в будущем.

Мы используем SharePoint 2010 Enterprise Search, а для страницы результатов у меня было требование сократить URL-адрес из центра и включить выделение. Подсветка не работает, когда 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> 
Смежные вопросы