Vielleicht solltest du nochmal über deine Struktur nachdenken.
Variante1:
<xsl:template match="datensatz[@typ='u']">
<xsl:if test="feld[@nr='3']='xxx'">
<xsl:apply-templates select="/root/datensatz[@typ='h']">
<xsl:with-param name="h-id">
<xsl:value-of select="feld[@nr='2']"/>
</xsl:with-param>
</xsl:apply-templates>
</xsl:if>
</xsl:template>
<xsl:template match="/root/datensatz[@typ='h']">
<xsl:param name="h-id" />
<xsl:if test="feld[@nr='1']=$h-id">
found
</xsl:if>
</xsl:template>
Variante2:
<xsl:template match="datensatz[@typ='h']">
<xsl:variable name="h-id" select="feld[@nr='1']"/>
<xsl:for-each select="/root/datensatz[@typ='u']">
<xsl:if test="feld[@nr='2']=$h-id">
<xsl:if test="feld[@nr='3']='xxx'">
found
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:template>