我在 XSLT 2.0 中编写了一段将二进制转换为十进制的代码,并且被困在将结果的每个数学幂值相加的过程中。请帮忙。
<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>