Position()和我正在检索的值的问题

时间:2010-10-19 20:09:42

标签: xslt xpath position

<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的问题有什么不对吗?

1 个答案:

答案 0 :(得分:1)

position()相对于错误的上下文(它相对于[]上下文,而不是您的XSLT上下文节点)。试试这个:

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