Position () и проблемы со значением, которое я получаю - PullRequest
0 голосов
/ 20 октября 2010
<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?

1 Ответ

1 голос
/ 20 октября 2010

position() относительно неправильного контекста (это относительно контекста [], а не вашего узла контекста XSLT). Попробуйте это:

<xsl:variable name="position" select="position()" />
<xsl:value-of select="../../tableLayout/tableColumn[$position]/@width" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...