2016-08-17 8 views
0

Sharepointリストがあり、列の1つがセミコロンで区切られた複数の値を返すルックアップ列です。私はこれらの項目をセパレーターの1行ではなく、出力に別々の行として表示したいと考えています。次のように問題のフィールドのXSLは次のとおりです。Sharepointルックアップ列のXSL値の書式設定方法

<xsl:template match="FieldRef[(@Encoded) and @Name='Project_x0020_Tasks']" ddwrt:dvt_mode="body" mode="Lookup_body" ddwrt:ghost="show"> 

      <xsl:param name="thisNode" select="."/> 

<xsl:value-of select="$thisNode/@*[name()=current()/@Name]" disable-output-escaping="yes" /> 


</xsl:template> 

現在のビューのように表のセル内のデータが表示されます。

Task 1; Task 2; Task 3; 

私はそれが

Task 1 
Task 2 
Task 3 
として表示したいです

私はオンラインでの検索に多くの時間を費やしましたが、今まで私を助ける解決策は見つかりませんでした。あなたは何ができるか

答えて

0

はそうのように、<br />タグにセミコロンを変換再帰的なテンプレートを持っている:、その後

<xsl:template name="CharToLineBreak"> 
    <xsl:param name="text" /> 
    <xsl:param name="char" /> 
    <xsl:choose> 
     <xsl:when test="contains($text, $char)"> 
      <xsl:value-of select="substring-before($text, $char)" /> 
      <br /> 
      <xsl:call-template name="CharToLineBreak"> 
       <xsl:with-param name="text" select="substring-after($text, $char)" /> 
       <xsl:with-param name="char" select="$char" /> 
      </xsl:call-template> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:value-of select="$text" /> 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 

代わりに、あなたの質問に示すようxsl:value-ofを行うので、そのようxsl:call-templateを行います。.. 。

<xsl:call-template name="CharToLineBreak"> 
     <xsl:with-param name="text" select="$thisNode/@*[name()=current()/@Name]" /> 
     <xsl:with-param name="char" select="';'" /> 
    </xsl:call-template> 

属性値を取得するのがなぜそんなに複雑であるのかわかりません。これだけに簡略化することができます

<xsl:call-template name="CharToLineBreak"> 
     <xsl:with-param name="text" select="@Project_x0020_Tasks" /> 
     <xsl:with-param name="char" select="';'" /> 
    </xsl:call-template> 
+0

この複雑さはSharePointによって自動的に生成されます。私はvalue-of-callの代わりにcall-templateを使ってテンプレートを試しましたが、SharePointはそれを表示しません。私は代わりにjavascriptソリューションを使用しなければならないと思っています。 –

関連する問題