ver.1サポートサイト

一覧表で、マルチセレクトのデータをカンマ区切りではなく改行で表示

最終更新日:2020年11月20日

スパイラルの一覧表で、マルチセレクトフィールドに登録された値はカンマ区切りで表示されますが、改行表示に変更する方法をご案内いたします。

変更前の設定

サンプルXML

一覧表のソースデザイン画面にて、サンプルXMLは以下の通りです。

<usr_xxxxx>
<full_label>ラベル値1,ラベル値2</full_label>
<full_id>1,2</full_id>
<separated_label>
<label id="1">ラベル値1</label>
<label id="2">ラベル値2</label>
</separated_label>
</usr_xxxxx>

元のXSL

一覧表の作成直後、ソースデザイン画面にて、XSLは以下の通りに設定されています。

<xsl:value-of select="usr_filterFlg/full_label" />

HTMLソース

ブラウザで一覧表のHTMLソースを表示した場合、以下の通りです。

ラベル値1,ラベル値2

変更手順

1. XSLに、マルチセレクトのデータを区切っているカンマをHTMLの改行<br>に置換するテンプレートを新規追加します。

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

2. マルチセレクトのデータを表示している箇所にて、新規追加したテンプレートを適用します。

<xsl:call-template name="multireplace">
<xsl:with-param name="multifield" select="usr_xxxxx/full_label" />
</xsl:call-template>


変更後の設定

変更後のXSL

マルチセレクトの表示部分
<xsl:call-template name="multireplace">
<xsl:with-param name="multifield" select="usr_xxxxx/full_label" />
</xsl:call-template>
(中略)
<xsl:template name="multireplace">
<xsl:param name="multifield" />
<xsl:choose>
<xsl:when test="contains($multifield, ',')">
<xsl:value-of select="substring-before($multifield, ',')" /><br />
<xsl:call-template name="multireplace">
<xsl:with-param name="multifield" select="substring-after($multifield, ',')" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$multifield" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>

HTMLソース

ラベル値1<br>ラベル値2