В блоке if
ниже я хочу также проверить, меньше ли @Timestamp
, чем предыдущая метка времени Message
. Как мне этого добиться?
<xsl:for-each select="Message">
<xsl:sort select="position()" data-type="number" order="descending"/>
<xsl:variable name="newclass">
<xsl:if test="@Timestamp + 60 > $ctimestamp">new</xsl:if>
</xsl:variable>
<tr><td class="debugtime">
<xsl:value-of select="@Time"/>
</td><td class="{$newclass}">
<xsl:value-of select="node()"/>
</td></tr>
</xsl:for-each>
Пример XML
<Message Time="2010/06/17 04:23:32" Timestamp="1276773812">message1</Message>
<Message Time="2010/06/17 04:23:32" Timestamp="1276773812">message2</Message>
<Message Time="2010/06/17 04:23:33" Timestamp="1276773813">message3</Message>
<Message Time="2010/06/17 04:23:33" Timestamp="1276773813">message4</Message>
Обновление:
Я реализовал оба варианта текущих ответов, но не повезло. Кажется, что он всегда не работает должным образом для вторых элементов, так как он будет выделен первым правильно, но не более (хотя иногда он будет делать третий). Обновленный if
код блока ниже.
<xsl:if test="@Timestamp + 60 > $ctimestamp">
<xsl:if test="position() = 1">
new
</xsl:if>
<xsl:if test="position() != 1 and ../Message[position()-1]/@Timestamp - 1 < @Timestamp">
new
</xsl:if>
</xsl:if>