ver.1サポートサイト


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

最終更新日: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