Выборка на XSLT

Залетный

Новичок
Выборка на XSLT

Использую такой шаблон для выборки элементов:

Код:
<xsl:template match="/">
     <xsl:for-each select="//item[@id=$act]">
          <DIV>
         Раздел : <xsl:value-of select="$act"/><br />
         Название: <b><xsl:value-of select="title"/></b><br />
         Текст: <i><xsl:value-of select="text"/></i><br />
          </DIV>
     </xsl:for-each>
</xsl:template>
$act - переменная, в которой содержится id раздела. Передается из $_GET.

В общем все работает как надо, но не хватает следующего - если в xml нет такого элемента (ничего не соответсвует шаблону), то нужно выводить сообщение об ошибке (типа 404). Не представляю как это сделать на XSLT. С базой просто, а тут что-то не найду решения.
 

worm

Новичок
Не уверен что верно понял.

Код:
<xsl:template match="/">
	<xsl:apply-templates select="//item"/>
</xsl:template>

<xsl:template match="item">
	<DIV>
		<xsl:choose>
			<xsl:when test="@id = $act">
				 Раздел : <xsl:value-of select="$act"/><br />
				 Название: <b><xsl:value-of select="title"/></b><br />
				 Текст: <i><xsl:value-of select="text"/></i><br />
			</xsl:when>
			<xsl:otherwise>
			  	404
			</xsl:otherwise>
		</xsl:choose>
	</DIV>
</xsl:template>
 

Залетный

Новичок
Да, верное направление, но до такого я сам доходил. :)

Всего, допустим, 4 элемента item. В твоем решении, если раздел подходит, получаем:

Раздел : about
Название: О фирме
Текст: Текст о фирме

404
404
404

Если ни один элемент не подошел, то получаем просто:
404
404
404
404

В первом случае 404 вообще не надо выводить, а во втором случае необходимо вывести всего 1 раз.
 

worm

Новичок
Ок, тогда пробуй так
Код:
<xsl:template match="/">
	<xsl:variable name="count">
		<xsl:value-of select="count(//item[@id = $act])"/>
	</xsl:variable>
	<xsl:choose>
		<xsl:when test="$count = 0">
			404
		</xsl:when>
		<xsl:otherwise>
			<xsl:apply-templates select="//item[@id=$act]"/>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>

<xsl:template match="item">
	<DIV>
		 Раздел : <xsl:value-of select="$act"/><br />
		 Название: <b><xsl:value-of select="title"/></b><br />
		 Текст: <i><xsl:value-of select="text"/></i><br />
	</DIV>
</xsl:template>
 
Сверху