Here is what I would like to do:
Found the answer:
Using JSTL Data as XPath Variables
Scoped variables can be used in XPath expressions ($implicitObject:variableName) similar to how they are used in EL (${implicitObject.variableName}). If the implicit object is omitted, scopes will be searched in standard order. Note that the “.” and “[]” notations cannot be used for accessing bean properties.
from the JSTL Quick Reference Sheet (pdf)
So my code becomes:
<x:set var="theNode" select="*[name()=$pageScope:nodeName]" />
<x:out select="$theNode" />
XSLT has parameters on its own, maybe that could help you. I've found an example here http://www.roseindia.net/jstl/param-xml-jstl-tag.shtml
I'll try to apply the concept to your example
...
<x:forEach select="$doc//*[name()='item']">
<x:out select="*[name()='$nodeName']" />
</x:forEach>
...
And then when invoking:
<x:transform xml="your.xml" xslt="your.xsl">
<x:param name="nodeName" value="${nodeName}" />
</x:transform>
I haven't tried it, I don't have the tools nearby. And I don't have your full code neither :)
Good luck.