2010-10-19 13 views
0
<tableLayout> 
     <tableColumn width="250"/> 
     <tableDivider spaceAfter="0" spaceBefore="0"/> 
     <tableColumn/> 
     <tableDivider spaceAfter="0" spaceBefore="0"/> 
     <tableColumn/> 
    </tableLayout> 

使用上面的數據(而不是我決定像這樣構造它)選擇當前「列」的寬度時,我遇到了一些問題。我正在檢索的值的位置()和問題

<xsl:attribute name="style"> 
       <xsl:text>width: </xsl:text> 
       <xsl:value-of select="../../tableLayout/tableColumn[position()]/@width" /> 
       <xsl:text>px;</xsl:text> 
      </xsl:attribute> 

這就是我如何訪問我正在構建的列的「當前寬度」。在我看來,這是相當直接的。如果我把[1]而不是調用位置,它會爲每列返回250。如果我把[2]或[3]它什麼都不返回。 [4]會導致錯誤,因爲它應該。

如果我打印位置()我看,1,2和3

但是,當它通過這種方法訪問數據,我一次比一次250。這是我在做什麼或XSL的問題有問題嗎?

+0

你的問題還不清楚。此外,它應該發生的錯誤報告。這不是XSLT的方式。如果你張貼減少但完整的輸入樣本和期望的輸出,也許有人可以幫助你,你可能會學到一些東西...... – 2010-10-19 20:58:18

回答

1

position()是相對於錯誤的上下文(它是相對於[]上下文,而不是您的XSLT上下文節點)。試試這個:

<xsl:variable name="position" select="position()" /> 
<xsl:value-of select="../../tableLayout/tableColumn[$position]/@width" /> 
+0

加載此頁面之前的幾秒鐘,可能正如你寫這篇文章,我想到了同樣的事情。偉大的思想和一切! ;) – bobber205 2010-10-19 20:40:28