Jeni, thanks for the solution, and especially for the explanation.
John
Within the predicate, the context node is the <answer_scheme> element
that you're looking at, so the path "@answer_scheme_id" is being
interpreted as the answer_scheme_id attribute on that <answer_scheme>
element.
To look at the answer_scheme_id attribute on the <question> element,
which is the current node within the template, use the current()
function as follows:
<xsl:param name="answer_scheme"
select="$answer_schemes[position() = current()/@answer_scheme_id]" />
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list