这是关于反向字符串的全部内容。它适用于给定的值'ABCDEF'。输出也是正确的'FEDCBA'。但我想知道这是如何在这个字符串中打印字母“A”和“D”。谁能帮我理解这个?请。 详细说明这种工作方法。
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs">
<xsl:output method="html"/>
<xsl:template name="reverse">
<xsl:param name="input" select="'ABCDEF'"/>
<xsl:variable name="len" select="string-length($input)"/>
<xsl:choose>
<xsl:when test="$len < 2">
<xsl:value-of select="$input"/>
</xsl:when>
<xsl:when test="$len = 2">
<xsl:value-of select="substring($input,2,1)"/>
<xsl:value-of select="substring($input,1,1)"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="mid" select="floor($len div 2)"/>
<xsl:call-template name="reverse">
<xsl:with-param name="input" select="substring($input,$mid+1,$mid+1)"/>
</xsl:call-template>
<xsl:call-template name="reverse">
<xsl:with-param name="input" select="substring($input,1,$mid)"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="/">
<xsl:call-template name="reverse">
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:0)
以下是发生的事情:
输入ABCDEF
len = 6
len是&gt; 2而不是= 2
mid = 3
再次使用输入DEF进行调用
len = 3
len是&gt; 2而不是= 2
mid = 1
使用输入EF
再次呼叫
len = 2
len不是> 2但= 2
推出第二个字母F
发出第一个字母E
返回外线呼叫
呼叫输入= D
len小于2
输出D
返回外线呼叫
再次使用input = ABC来调用
len = 3
len是&gt; 2而不是2
mid = 1
使用输入BC再次呼叫
len = 2
len不是> 2但= 2
推出第二个字母C
推出第一个字母B
返回外线呼叫
用输入A打电话
len小于2
输出A