아래의 if
블록에서 @Timestamp
이 이전 Message
의 타임 스탬프보다 작은 지 테스트하고 싶습니다. 이것을 어떻게 할 수 있습니까?XSL - 이전 요소의 속성 얻기
<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>
@Chris : 일부 XML 입력 문서를 게시하십시오. –
@Alejandro - 추가됨 – Chris
제공 한 예제 XML 코드 블록을 제공하는 경우 첫 번째 및 세 번째로 원하는 동작이 출력됩니다. 타임 스탬프 변경을보십시오. 또한 $ ctimestamp 값은 얼마입니까? – Meiscooldude