Example of data structure :
<root>
<object name="test">
<package name="a">
<loot>
<item value="1" />
<item value="2" />
</loot>
</package>
<package name="b">
<loot>
<item value="5" />
<item value="6" />
</loot>
</package>
<session name="amazon">
<packages>
<package name="a" />
<package name="b" />
</packages>
</session>
<session name="wish">
<packages>
<package name="a" />
<package name="b" />
</packages>
</session>
</object>
</root>
To extract an iterable list of all items related to all packages specified in a session :
<xsl:variable name="items">
<xsl:for-each select="//object/session[@name='amazon']/packages/package">
<xsl:for-each select="//object/package[@name=current()/@name]/loot/item">
<xsl:variable name="index">
<xsl:number level="any" count="item"/>
</xsl:variable>
<xsl:if test="number($index)!=1">
<xsl:text>,</xsl:text>
</xsl:if>
<xsl:value-of select="current()/@value"/>
</xsl:for-each>
</xsl:for-each>
</xsl:variable>
<xsl:for-each select="tokenize($items, ',')">
<p>
<xsl:value-of select="." />
</p>
</xsl:for-each>
Result :
<p>1</p> <p>2</p> <p>5</p> <p>6</p>