parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

MT 14.09.2007 14:49 / 14.09.2007 15:00

Странность в том, что, если атрибут @on не определён (наш случай), то конструкция @on != 'on' всегда будет выдавать false. Хотя, по логике, должно быть true, ведь undefined не равно значению.
Поэтому приходится использовать not(@on = 'on'), чтобы в случае отсутствия атрибута инвертировать false на true.

В таком поведении есть свой плюс: мы можем без дополнительных действий определить отсутствие атрибута и обработать этот вариант отдельно. Типа:
<xsl:choose>
	<xsl:when test="@on = 'on'">
		<p>Атрибут есть, его значение равно 'on'.</p>
	</xsl:when>
	<xsl:when test="@on != 'on'">
		<p>Атрибут есть, его значение не равно 'on'.</p>
	</xsl:when>
	<xsl:otherwise>
		<p>Атрибута нет.</p>
	</xsl:otherwise>
</xsl:choose>