一覧表で、マルチセレクトのデータをカンマ区切りではなく改行で表示
最終更新日:2023年03月08日
スパイラルの一覧表で、マルチセレクトフィールドに登録された値はカンマ区切りで表示されますが、改行表示に変更する方法をご案内いたします。
変更前の設定
サンプル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: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