我从XML中获取字符串“AA” 我需要增加它像:
AA AB AC AD AE(...)AZ BA BB(...)
例如,将其增加35次(来自变量称为(`xsl:变量名=“NumIncr”>))从AA开始并在BG中结束。 字符串并不总是“AA”可以是任何2个字母......
有什么想法吗?!
我认为<xsl:number>
标签可以提供帮助,但仍然存在从字母传递到数字的问题。
需要像
这样的东西<fo:table-cell border-collapse="collapse" border-color="gray" font-family="Helvetica" font-size="8pt" border="solid 1pt gray" padding="1pt" display-align="before">
<fo:block text-align="center">
<xsl:value-of select="string($Sequence)"/>
</fo:block>
</fo:table-cell>
其中$ sequence是AA AB AC(...) 可以在同一个单元格中写入evrything,问题不在于输出而是用于增加AA的模板
HELP !!!
答案 0 :(得分:1)
要将"AA"
之类的字符串翻译为其数值,您可以使用以下模板:
<xsl:template name="string-to-num">
<xsl:param name="string"/>
<xsl:param name="alpha" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:param name="magnitude" select="1"/>
<xsl:param name="carryover" select="0"/>
<xsl:param name="bit" select="substring($string, string-length($string), 1)"/>
<xsl:param name="bit-value" select="string-length(substring-before($alpha, $bit)) + 1"/>
<xsl:variable name="return" select="$carryover + $bit-value * $magnitude"/>
<xsl:choose>
<xsl:when test="string-length($string) > 1">
<xsl:call-template name="string-to-num">
<xsl:with-param name="string" select="substring($string, 1, string-length($string) - 1)"/>
<xsl:with-param name="magnitude" select="string-length($alpha) * $magnitude"/>
<xsl:with-param name="carryover" select="$return"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$return" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
调用模板的一些示例:
<xsl:call-template name="string-to-num">
<xsl:with-param name="string">A</xsl:with-param>
</xsl:call-template>
返回1;
<xsl:call-template name="string-to-num">
<xsl:with-param name="string">Z</xsl:with-param>
</xsl:call-template>
返回26;
<xsl:call-template name="string-to-num">
<xsl:with-param name="string">AA</xsl:with-param>
</xsl:call-template>
返回27;
<xsl:call-template name="string-to-num">
<xsl:with-param name="string">ZZ</xsl:with-param>
</xsl:call-template>
返回702;
<xsl:call-template name="string-to-num">
<xsl:with-param name="string">AAA</xsl:with-param>
</xsl:call-template>
返回703。
这些结果完全相反:
<xsl:number value="$return" format="A"/>