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

Xslt Position()和我正在检索的值的问题,xslt,xpath,position,Xslt,Xpath,Position,当使用上述数据选择当前“列”的宽度时(不是我决定这样构造它),我遇到了一些问题 <tableLayout> <tableColumn width="250"/> <tableDivider spaceAfter="0" spaceBefore="0"/> <tableColumn/> <tableDivider spaceAfter="0" spaceBefore="0"/>

当使用上述数据选择当前“列”的宽度时(不是我决定这样构造它),我遇到了一些问题

<tableLayout>
        <tableColumn width="250"/>
        <tableDivider spaceAfter="0" spaceBefore="0"/>
        <tableColumn/>
        <tableDivider spaceAfter="0" spaceBefore="0"/>
        <tableColumn/>
    </tableLayout>

宽度:
二甲苯;
这就是我如何访问我正在构建的列的“当前宽度”。在我看来,这是相当直截了当的。如果我将[1]而不是调用position,则每列返回250。如果我输入[2]或[3],它将不返回任何内容。[4] 按其应该的方式导致错误

如果我打印position(),我会看到1、2和3

但当它通过这种方法访问数据时,我每次得到250。这是我所做的有问题还是XSL有问题?

位置()与错误的上下文相关(它与
[]
上下文相关,而不是XSLT上下文节点)。试试这个:

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


在加载此页面之前的几秒钟,很可能在你写这篇文章时,我也想到了同样的事情。伟大的头脑和一切你的问题不清楚。此外,错误报告应该发生。这不是XSLT的方式。如果你发布一个减少但完整的输入样本和期望的输出,也许有人可以帮助你,你可能会学到一些东西。。。
<xsl:variable name="position" select="position()" />
<xsl:value-of select="../../tableLayout/tableColumn[$position]/@width" />