Hi David,
There is no conflict between what the references tell you
To quote the example from Jeni Tennison's post
<xsl:template match="/">
<xsl:apply-templates select="r/a">
<xsl:sort data-type="number" select="@at"/>
<xsl:with-param name="p" select="position()"/>
</xsl:apply-templates>
</xsl:template>
What you read in Michael Kay's book is that the nodes in the select
of the apply-templates
"r/a" are selected, ordered according to the sort statement(s) and
then numbered.
The position() inside the template that will eventually pick up the
nodes will have that number as its value
<xsl:template match="r/a">
<xsl:value-of select="position()"/> <= here is where the numbering
of the nodes plays
</xsl:template>
What Jeni Tennison says is that the position() inside the body of the
apply-templates
eg here:
<xsl:with-param name="p" select="position()"/>
will get its value from the context of the template, not from the
node numbering in the select.
apply-templates will not change the context,
for-each on the other hand will create a new context
I hope that helps
Geert
At 23:18 1/04/2014, you wrote:
Can someone clarify the meaning of "position()" in apply-templates.
According to Michael's Kay's 4th edition,
"When <xsl:apply-templates> or <xsl:for-each> is called to process a
sequence of nodes, the nodes ar enumbers 1 to N in their sorted order,
and while each node is being processed. the context position is the
number assigned to that node."
But I found a 2001 post indicating that, within an
<xsl:apply-templates> instruction *itself* the context position is
just the context position of the current node (_not_ the nodes being
selected by the select attribute of <xsl:apply-templates>). That post
is here=http://www.stylusstudio.com/xsllist/200105/post90830.html
My question is "When the "number assigned to that node" (as referenced
in Kay) is considered the context position? :
A. In the predicate of the select attribute of the
<xsl:apply-templates> instruction?
B. In the select attribute of any <xsl:with-param> instructions inside
the <xsl:apply-templates> instruction?
C. In the body of the <xsl:template> called by the
<xsl:apply-templates> instruction?
-David
--
"A false conclusion, once arrived at and widely accepted is not
dislodged easily, and the less it is understood, the more tenaciously
it is held." - Cantor's Law of Preservation of Ignorance.
--~------------------------------------------------------------------
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>
--~--