Wow, I think you have tried to apply a good old procedural language to the wonderfully functional XSLT programming language.
Try something like this instead:
Code:
<xsl:for-each select="/data/sector">
<xsl:variable name="sector" select="."/>
<xsl:for-each select="/data/subSector">
<xsl:variable name="subSector" select="."/>
<xsl:variable name="item" select="/data/item[@sector = $sector/@id and @subSector = $subSector/@id]"/>
Sector: <xsl:value-of select="$sector/@id">
Sub Sector: <xsl:value-of select="$subSector/@id">
Item ID: <xsl:value-of select="$item/@id">
Item Text: <xsl:value-of select="$item/text()">
</xsl:for-each>
</xsl:for-each>
/- Sam Judson : Wrox Technical Editor -/