ммм... Вы не смеялись, когда про группу спросил?)) что-то деградирую, такие вещи не вижу, аж стыдно..
А вот со второй частью, казалось будет просто
<xsl:variable name="top_group_id" select="//group[@id =/shop/@current_group_id]/ancestor::group/@id" />
преобразуем в
<xsl:variable name="itemGroup" select="@group" />
<xsl:value-of disable-output-escaping="yes" select="//group[@id = $itemGroup]/ancestor::group/@id"/>
но получаем... пустоту...
дело в том, что мы в item? нужно выйти на уровень групп исправив адрес "//group" ?