前回は更新日時と本文のデータを取得しましたが、本文は HTML タグのエスケープ処理のために表示される内容に HTML タグがそのまま残ってしまっています。今回はこのマークアップタグを削除するよう変更します。
作業内容
- ItemStyle.xsl に "<" から ">" までのタグを取り除く処理を追加する
不要なタグ表示を取り除く
- SharePoint Designer 2007 を起動し、コンテンツ Web パーツを追加したサイトを開きます。
- [フォルダ一覧]から[Style Library (スタイル ライブラリ)] - [XSL Style Sheets] を展開し、ItemStyle.xsl を右クリックし、チェックアウトします。
- ItemStyle.xsl をダブルクリックします。
- コード内の一番最後の"</xsl:template>タグの直後に次のようなテンプレートを記述します。このテンプレートが "<" から ">" までを再帰的に削除するコードになっています。
<!--不要なタグを取り除く-->
<xsl:template name="removeMarkup">
<xsl:param name="string" />
<xsl:choose>
<xsl:when test="contains($string, '<')">
<xsl:variable name="nextString">
<xsl:call-template name="removeMarkup">
<xsl:with-param name="string" select="substring-after($string, '>')" />
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="concat(substring-before($string, '<'), $nextString)" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$string" />
</xsl:otherwise>
</xsl:choose>
</xsl:template> - "すべてのお知らせ用スタイル" テンプレート内で本文を取得する次のコードを探します。
<div class="description">
<xsl:value-of select="@Body" />
</div> - 以下のように追記および変更します。
<xsl:variable name="bodyContent">
<xsl:call-template name="removeMarkup">
<xsl:with-param name="string" select="@Body"/>
</xsl:call-template>
</xsl:variable>
<div class="description">
<xsl:value-of select="$bodyContent"/>
</div> - ItemStyle.xsl を上書き保存し、マイナーバージョンとしてチェックインします。
IE で再びコンテンツ クエリ Web パーツを表示してみると次のように不要なタグが取り除かれたことが確認できるはずです。
次回は、 本文から30文字分のみを表示し、New ! のアイコンを表示するように変更します。
コメント