エントリ件数によって出力内容を変えたい

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
bcacsato
パワーユーザー
記事: 233
登録日時: 2005年11月27日(日) 14:05

エントリ件数によって出力内容を変えたい

投稿記事 by bcacsato » 2019年5月08日(水) 15:37

下記トピックを参考に、エントリ件数が3件未満と3件以上とで、出力内容を変えるようにしました。
https://cms.al-design.jp/phpbb/viewtopic.php?t=944

コード: 全て選択

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes" indent="no" />
<xsl:template match="/entrylist">

<xsl:if test="count(entry)>=3">
	<div class="test1">
		<xsl:for-each select="entry">
			<p>test</p>
		</xsl:for-each>
	</div>
</xsl:if>

<xsl:if test="count(entry)<3">
	<div class="test2">
		<xsl:for-each select="entry">
			<p>test</p>
		</xsl:for-each>
	</div>
</xsl:if>

</xsl:template>
</xsl:stylesheet>
しかし、実際にページを表示させると、何も出力されません。
いろいろ試したところ、"count(entry)<3"の部分の不等号を等号にすると表示されるようでした。
そのため、下記の通り繰り返し記述することで表示はされるようになったのですが、できればもっと簡潔に表示したいところです。

コード: 全て選択

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes" indent="no" />
<xsl:template match="/entrylist">

<xsl:if test="count(entry)>=3">
	<div class="test1">
		<xsl:for-each select="entry">
			<p>test</p>
		</xsl:for-each>
	</div>
</xsl:if>

<xsl:if test="count(entry)=2">
	<div class="test2">
		<xsl:for-each select="entry">
			<p>test</p>
		</xsl:for-each>
	</div>
</xsl:if>

<xsl:if test="count(entry)=1">
	<div class="test2">
		<xsl:for-each select="entry">
			<p>test</p>
		</xsl:for-each>
	</div>
</xsl:if>

<xsl:if test="count(entry)=0">
	<div class="test2">
		<xsl:for-each select="entry">
			<p>test</p>
		</xsl:for-each>
	</div>
</xsl:if>

</xsl:template>
</xsl:stylesheet>
なぜ不等号にすると表示されないのでしょうか?
参考ページの通り記述したつもりですが、何か間違いがありますでしょうか?
もしお分かりになりましたら、ご教示ください。

返信