-1

例如,我有来自 XML 的字符串“AA”,我需要增加它,例如:

AA AB AC AD AE (...) AZ BA BB (...)

例如,从 AA 开始并在 BG 结束时将其递增 35 次(来自名为 (`xsl:variable name ="NumIncr">) 的变量)。字符串并不总是有“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 (...) 可以在同一个单元格中写入所有内容,问题不在于输出,而是增加 AA 的模板

帮助!!!

4

1 回答 1

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"/>
于 2014-11-05T16:06:46.877 回答