RE: [xsl] Trouble with position!

Subject: RE: [xsl] Trouble with position!
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 15 Apr 2005 09:07:58 +0100
When the value of a predicate [X] is an integer, it's a shorthand for
[position()=X]. So E[position()] means E[position()=position()] which is the
same as E[true()], or simply E. Your mistake is in forgetting that the
context changes inside the square brackets. So you need to assign a variable
to the value of position() outside the predicate, and then use the variable
inside the predicate:

<xsl:variable name="pos" select="position">
<xsl:value-of select="x/y/z[$pos]"/>

Michael Kay

> -----Original Message-----
> From: Adam J Knight [mailto:adam@xxxxxxxxxxxxxxxxx] 
> Sent: 15 April 2005 03:44
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Trouble with position!
> Hi all,
>  With this xml structure in mind:
>  <dfile>
>   <df_column_names>
>     <df_column name="employee_name" type="hyperlink">Name:</df_column>
>     <df_column name="department" type="text">Department:</df_column>
>     <df_column name="position" type="text">Position:</df_column>
>   </df_column_names>
>   <df_data_row>
>     <data_key>1695</data_key>
>     <df_data>Charles Hilditch</df_data>
>     <df_data>Processing</df_data>
>     <df_data>Mill Supervisor</df_data>
>   </df_data_row>
>  </dfile>
>  I am trying to select the type attribute for a particular 
> df_data element.
>  <xsl:for-each select="./df_data">
>  <xsl:value-of 
> select="/dfile/df_column_names/df_column[position()]/@type"/>
>  </xsl:for-each> 
> My algorithm is simply select the type attribute from df_column whose
> position Is equal to current df_data element being processed.
> I keep getting the type attribute for the first db_column name only.
> Thanx to those who respond.
> Cheers, 
> Adam 

Current Thread