コード: 全て選択
<cmsd:entrylist name="person_data" design="person">
<cmsd:group key="area" />
</cmsd:entrylist>
テーブル自体を表示しない、というところまで出来ています。
リスト項目にデータのあるエントリがある場合、なのですが、一行目の前にだけ、テーブルヘッド(<th>)
を表示させたい、ということで、
コード: 全て選択
<xsl:template match="/entrylist ">
<table>
<xsl:for-each select="entry">
<xsl:if test="not(person='')">
<xsl:if test="position()=1"> <!-- ←ここが問題! -->
<tr><th>名前</th><th>内容</th></tr>
</xsl:if>
<tr>
<td><xsl:value-of select="namae" /></td>
<td>
<xsl:for-each select="person/listitem">
<xsl:value-of select="naiyo" /><br />
</xsl:for-each>
</td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</xsl:template>
一番目のエントリがリスティングされなかった場合(リスト項目データが無い場合)は、
テーブルヘッドを表示してくれなくなってしまいます。
で、条件で抽出したリストに改めて連番を振ってくれる方法があればと思うのですが、見つけることができません。
xsl:numberは、ソート処理後に連番を振り直してくれますが、xsl:ifの後には効かないようですし。
もしこれがダメなら、データのある/なしで別途グループキーで括ってやるしかないと思いますが、
データ項目を1つ増やす前に最後の悪あがきをしているような状況です。
みなさまのお知恵をお貸しくださいませ。<(_ _)>
質問フォーラムかとも思いましたが、CMSDesignerと直接関係する内容でもないかと思い、こちらを選びました。
そぐわないようでしたら移動をお願いいたします。