Welbog хорошо на это ответил - но просто заметьте, что вы, кажется, делаете картезиальное (перекрестное) соединение - это намеренно? Если вы пытаетесь сделать регулярное соединение (с предикатом и т. Д.), То вы хотите изучить <xsl:key/>
- т.е. объявить ключ:
<xsl:key name="BIndex" match="/Root/B" use="SomeChildNode"/>
затем потребляйте в своем предикате:
<xsl:for-each select="/Root/A/">
<xsl:variable name="ROOT_A" select="."/>
<xsl:for-each select="key('BIndex', LocalNode)">
<!-- -->
</xsl:for-each>
</xsl:for-each>
Это должно быть эквивалентно (но намного быстрее) предикату:
<xsl:for-each select="/Root/B[SomeChildNode = current()/LocalNode]">
Если вы группируете данные, тогда посмотрите на Muenchian grouping