Спасибо, Койнов
Однако я нашел решение с использованием шаблонных режимов:
<xsl:template match="Configuration[@Name='Debug|Win32']">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
<xsl:copy>
<xsl:attribute name="WholeProgramOptimization">TRUE</xsl:attribute>
<xsl:apply-templates select="@*|node()" mode="Release"/>
</xsl:copy>
</xsl:template>
С этим шаблоном для всех атрибутов:
<xsl:template match="@*" mode="Release">
<xsl:attribute name="{local-name()}">
<xsl:call-template name="replace-string">
<xsl:with-param name="text" select="."/>
<xsl:with-param name="replace" select="'Debug'"/>
<xsl:with-param name="with" select="'Release'"/>
</xsl:call-template>
</xsl:attribute>
</xsl:template>
и, конечно, шаблон "replace-string".
Еще раз спасибо.