Subject: RE: 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
http://www.saxonica.com/
> -----Original Message-----
> From: Adam J Knight [mailto:adam@xxxxxxxxxxxxxxxxx]
> Sent: 15 April 2005 03:44
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: 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
|