xsl-list
[Top] [All Lists]

RE: Select nodes with equal position

2005-04-02 12:22:32
depending on the postion() of a certain node I would like to select 
another node with the same position.
It works if I invent a variable.
But I wonder if there is a way to do it without the use of a variable?

Not if you're using a predicate, because position() inside a predicate is
different from position() outside the predicate.

As DC said, it's much better to make your variable hold the position as a
number rather than as a text node in a result tree fragment: that is, to use
the select attribute.

In fact there's an XSLT 2.0 solution that doesn't require a predicate and
therefore doesn't require a variable:

<xsl:value-of select="../../subsequence(colspec, position(), 1)/@colname"/>

Michael Kay
http://www.saxonica.com/



XML:

<table>
  <colspec colname="c1"/>
  <colspec colname="c2"/>
  <colspec colname="c3"/>
  <row>
    <entry colname="c1">r1_1</entry>
    <entry colname="c2">r1_2</entry>
    <entry colname="c3">r1_2</entry>
  </row>
</table>


XSL:
<xsl:template match="entry">
  <xsl:variable name="mypos">
    <xsl:value-of select="position()"/>
  </xsl:variable>
  <xsl:value-of select="../../colspec[position() = $mypos]/@colname"/>
</xsl:template>


Best regards and thanks for your comments,
Norbert Heidbrink

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--