2012-05-25 41 views
1

我試圖在每次'column3'的值發生變化時在行之間創建一個間隙。目前,差距設定爲每2行出現一次,這不是我所需要的。 例如,前10行中'column3'的值是1,1,3,3,3,3,5,5,5,5 而且我想要在最後'1'和第一個'3 「等基於列值的XSLT Position()

<xsl:for-each select="Market"> 
     <tr> 
      <td> 
      <xsl:value-of select="Column1"/> 
      </td> 
      <td> 
      <xsl:value-of select="Column2"/> 
      </td> 
      <td> 
      <xsl:value-of select="Column3"/> 
      </td> 
     </tr> 
      <xsl:if test="(position() mod 2 = 0)"> 
      <tr> 
      <td colspan="5" height="25px" /> 
      </tr> 
     </xsl:if> 

回答

3

你可以使用XPath中以下同輩軸的做到這一點。

<xsl:if test="Column3 != following-sibling::Market[1]/Column3"> 

即是否第二天市場元素具有不同的值欄3元素。

例如,假設下面的XML

<Markets> 
    <Market> 
     <Column1>A</Column1> 
     <Column3>1</Column3> 
    </Market> 
    <Market> 
     <Column1>A</Column1> 
     <Column3>1</Column3> 
    </Market> 
    <Market> 
     <Column1>A</Column1> 
     <Column3>3</Column3> 
    </Market> 
    <Market> 
     <Column1>A</Column1> 
     <Column3>3</Column3> 
    </Market> 
    <Market> 
     <Column1>A</Column1> 
     <Column3>3</Column3> 
    </Market> 
    <Market> 
     <Column1>A</Column1> 
     <Column3>3</Column3> 
    </Market> 
    <Market> 
     <Column1>B</Column1> 
     <Column3>4</Column3> 
    </Market> 
    <Market> 
     <Column1>B</Column1> 
     <Column3>4</Column3> 
    </Market> 
</Markets> 

,當你申請以下XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html" indent="yes"/> 
    <xsl:template match="/Markets"> 
     <table> 
     <xsl:apply-templates select="Market"/> 
     </table> 
    </xsl:template> 

    <xsl:template match="Market"> 
     <tr> 
     <td> 
      <xsl:value-of select="Column1"/> 
     </td> 
     <td> 
      <xsl:value-of select="Column3"/> 
     </td> 
     </tr> 
     <xsl:if test="Column3 != following-sibling::Market[1]/Column3"> 
     <tr> 
      <td colspan="2" height="25px"/> 
     </tr> 
     </xsl:if> 
    </xsl:template> 
</xsl:stylesheet> 

再下面是輸出

<table> 
    <tr> 
     <td>A</td> 
     <td>1</td> 
    </tr> 
    <tr> 
     <td>A</td> 
     <td>1</td> 
    </tr> 
    <tr> 
     <td colspan="2" height="25px"/> 
    </tr> 
    <tr> 
     <td>A</td> 
     <td>3</td> 
    </tr> 
    <tr> 
     <td>A</td> 
     <td>3</td> 
    </tr> 
    <tr> 
     <td>A</td> 
     <td>3</td> 
    </tr> 
    <tr> 
     <td>A</td> 
     <td>3</td> 
    </tr> 
    <tr> 
     <td colspan="2" height="25px"/> 
    </tr> 
    <tr> 
     <td>B</td> 
     <td>4</td> 
    </tr> 
    <tr> 
     <td>B</td> 
     <td>4</td> 
    </tr> 
</table> 

(注意,我錯過了列2只是爲了一些簡潔)。