Я не уверен на 100%, что полностью понимаю, как XSLT относится к опубликованному вами XML. Я думаю, что имеет смысл отредактировать ваш вопрос, чтобы вы четко указали:
- что такое входной XML
- каков желаемый вывод XML
- с каким XSLT вы боретесь
(вероятно, мне следует спросить об этом в комментарии, но в настоящее время я должен собрать достаточно кредитов, чтобы сделать это ...)
Отвечая на ваш основной вопрос (абстрагируясь от моих заблуждений): вы всегда можете передавать такую информацию о местоположении через переменные. Просто назначьте положение элемента контекста во внешнем for-each переменной и обратитесь к этой переменной во внутреннем for-each. Насколько я понимаю вашу таблицу стилей XSLT, я предполагаю, что вы ищете что-то вроде этого:
<xsl:for-each select="item">
<xsl:variable name="itemPos" select="position()"/>
<input type='hidden' name="item_name_{position()}" value="{item-name}"/>
<input type='hidden' name="item_number_{position()}" value="{item-description}"/>
<input type='hidden' name="amount_{position()}" value="{unit-price}"/>
<input type='hidden' name="quantity_{position()}" value="{@quantity}"/>
<xsl:for-each select="option/*">
<input type='hidden' name="{name()}_{$itemPos}" value="{.}"/>
</xsl:for-each>
</xsl:for-each>
Позиция элемента контекста во внешнем for-each хранится в переменной $ itemPos, на которую можно ссылаться в дальнейшем.
С уважением,
Рон