私は、XSLT 2.0 で 2 進数を 10 進数に変換するコードを作成しましたが、結果の各数値の累乗値を加算する作業に行き詰まりました。助けてください。
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" extension-element-prefixes="xs">
<xsl:template match="SUBSCRIBER">
<xsl:variable name="binary" select="'0101'"/>
<xsl:for-each select="for $i in 1 to string-length($binary) return $i">
<xsl:variable name="powerVal">
<xsl:call-template name="mathpower">
<xsl:with-param name="base" select="2"/>
<xsl:with-param name="power" select="(string-length($binary)-.)"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="number(substring($binary,.,1))*number($powerVal)"/>
<xsl:value-of select="'--'"/>
</xsl:for-each>
</xsl:template>
<xsl:template name="mathpower">
<xsl:param name="base" select="0"/>
<xsl:param name="power" select="1"/>
<xsl:param name="result" select="1"/>
<xsl:choose>
<xsl:when test="$power = 0">
<xsl:value-of select="$result"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="mathpower">
<xsl:with-param name="base" select="$base"/>
<xsl:with-param name="power" select="$power - 1"/>
<xsl:with-param name="result" select="$result * $base"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>