Either you can select the nodeset like:
<xsl:apply-templates select="a[b='7']"/>
<xsl:template match="a">
..
</template>
Here you would usually have a mode on the template so that the
template does not get accidently invoked with other a elements.
Here, you can also use a for-each loop:
<xsl:for-each select="a[b='7']">
..
</xsl:for-each>
The other one is to be used if you want to do different things
depending on the value.
<xsl:apply-templates select="a"/>
<xsl:template match="a">
<!-- Default matching a elements. Will be invoked if no template
matches overrule this one -->
..
</xsl:template>
<xsl:template match="a[b='7']">
<!-- This template will overrule the more general one, provided that
the predicate is true (that the child element b has a string value of
'7') -->
..
</xsl:template>
Regards,
Ragulf Pickaxe :-)