As an XPath 2.0 one-liner:
sum(/*/*/SubNode/@CS/number(translate(.,',','.')))
An XSLT 2.0 solution:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select=
"sum(/*/*/SubNode/@CS/number(translate(.,',','.')))"/>
</xsl:template>
</xsl:stylesheet>
XSLT 1.0 with FXSL:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:f="http://fxsl.sf.net/"
xmlns:func-transform="f:func-transform"
exclude-result-prefixes="xsl f func-transform"
>
<xsl:import href="transform-and-sum.xsl"/>
<xsl:output method="text"/>
<func-transform:func-transform/>
<xsl:template match="/">
<xsl:call-template name="transform-and-sum">
<xsl:with-param name="pFuncTransform"
select="document('')/*/func-transform:*[1]"/>
<xsl:with-param name="pList" select="/*/*/SubNode/@CS"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="func-transform:*" mode="f:FXSL">
<xsl:param name="arg1"/>
<xsl:value-of select="translate($arg1, ',', '.')"/>
</xsl:template>
</xsl:stylesheet>
When applied on the provided XML document:
<MainNode>
<Data SubjectID="19233">
<SubNode CS="100,1" >
<AB V="PSDF"/>
</SubNode>
</Data>
<Data SubjectID="19234">
<SubNode CS="111,1">
<AB V="PSDF" />
</SubNode>
</Data>
</MainNode>
all of these three solutions produce:
211.2