Использовать :
sum(/*/*/*/number[../children/members/member[@id=1]])
Это преобразование:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select=
"sum(/*/*/*/number
[../children/members/member[@id=1]])
"/>
</xsl:template>
</xsl:stylesheet>
при применении к этому документу XML (исправлено строго искаженное при условиитекст!):
<root>
<groups>
<group id="101">
<number>10</number>
<children>
<leader id = "A" />
<members>
<member id="1"/>
<member id="2"/>
<member id="3"/>
</members>
</children>
</group>
<group id="102">
<number>20</number>
<children>
<leader id = "A" />
<members>
<member id="4"/>
<member id="5"/>
<member id="3"/>
</members>
</children>
</group>
<group id="103">
<number>30</number>
<children>
<leader id = "A" />
<members>
<member id="1"/>
<member id="4"/>
<member id="3"/>
</members>
</children>
</group>
</groups>
</root>
дает желаемый, правильный результат :
40