Почему срабатывают одновременно несколько условий??

agx

Программер :-)
Почему срабатывают одновременно несколько условий??

Есть просто преобразование, где в цикле обходятся ancestor-ы.
Мне нужно выводить атрибут узла, если он является последним в множестве.
Вроде бы, все просто, но этот код:
Код:
<xsl-choose>
<xsl-when test="position()=last()">
<xsl:value-of select="@prop_name"/>
</xsl-when>
<xsl-when test="not (position()=last())">
<xsl-text>(yes)</xsl-text>
</xsl-when>
<xsl-otherwise>
<xsl-text>(no)</xsl-text>
</xsl-otherwise>
</xsl-choose>
Выводит мне текст для ВСЕХ ТРЕХ условий!! Как могут выполнится одновремено три уловия?? Тем более, что два из них абсолютно взаимоисключающи! :confused:

-~{}~ 08.07.06 15:07:

Забыл написать, все это выполняется внутри <xsl:for-each select="ancestor::DB">.
Более того, я выводил для каждого узла его position() и last() - значения для разных узлов разные, как и ожидалось, но срабатывают все равно ВСЕ уловия!!

-~{}~ 08.07.06 15:12:

БЛИН!!! Все понял, очень извиняюсь - закрывайте тему. У меня видать сегодня глаза не на том месте!! Вместо <xsl:choose> пишу <xsl-choose>! Хоть бы парсер ругался, что-ли...

-~{}~ 08.07.06 15:15:

На всякий случай, чтобы тема не совсем уж бесполезной была, нужно писать примерно так:
Код:
<xsl:for-each select="ancestor::DB">
  <xsl:if test="position()=last()">
    <xsl:value-of select="@prop_name"/>
  </xsl:if>
</xsl:for-each>
 

denver

?>Скриптер
Re: Почему срабатывают одновременно несколько условий??

Можно и без цикла

<xsl:value-of select="ancestor::DB[position()=last()]/@prop_name"/>
 
Сверху