<xsl:template match="A">
<xsl:for-each select="B">
apply-templates for B
</xsl:for-each>
You don't need to put for-each around apply-templates; it processes each
node in the selected node-set automatically.
<xsl:for-each select="select all nodes that are not Bs">
You can do select="*[not(self::B)]", or you can do the apply-templates
with mode="not-B" and write a template rule
<xsl:template match="B" mode="not-B"/>
that does nothing.
In XPath 2.0, select="* except B" selects all the nodes except the Bs.
Michael Kay
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list