<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]而不是调用position,它会为每列返回250。如果我放[2]或[3]则不返回任何内容。 [4]会导致错误。
如果我打印位置(),我会看到1,2和3。
但是当它通过这种方法访问数据时,我每次都得到250。这对我正在做什么或XSL的问题有什么不对吗?
答案 0 :(得分:1)
position()
相对于错误的上下文(它相对于[]
上下文,而不是您的XSLT上下文节点)。试试这个:
<xsl:variable name="position" select="position()" />
<xsl:value-of select="../../tableLayout/tableColumn[$position]/@width" />