代码之家  ›  专栏  ›  技术社区  ›  Chris

XSL-Get上一个元素的属性

  •  1
  • Chris  · 技术社区  · 14 年前

    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 &gt; $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>
    

    更新: 下面是块代码。

    <xsl:if test="@Timestamp + 60 &gt; $ctimestamp">
        <xsl:if test="position() = 1">
            new
        </xsl:if>
        <xsl:if test="position() != 1 and ../Message[position()-1]/@Timestamp - 1 &lt; @Timestamp">
            new
        </xsl:if>
    </xsl:if>
    
    2 回复  |  直到 14 年前
        1
  •  0
  •   Max Toro    14 年前
    @Timestamp &lt; preceding-sibling::Message[1]/@Timestamp
    
        2
  •  0
  •   Meiscooldude    14 年前

    我还没有测试过这个解决方案,但这个应该可以。

    <xsl:for-each select="Message">
        <xsl:sort select="position()" data-type="number" order="descending"/>
    
        <xsl:variable name="newclass">
          <xsl:if test="position() != 1">
             <xsl:if test="..\Message[position()-1]@Timestamp &lt; @Timestamp">new</xsl:if>
          </xsl:if>
          <xsl:if test="position() = 1">
             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>