我试图使用将空格添加到字符串的模板。在xslt中获取长度
<xsl:call-template name="append-pad">
<xsl:with-param name="padChar" select="' '" />
<xsl:with-param name="padVar" select="$value" />
<xsl:with-param name="length" select="15" />
</xsl:call-template>
<xsl:template name="append-pad">
<!-- recursive template to left justify and append -->
<!-- the value with whatever padChar is passed in -->
<xsl:param name="padChar" />
<xsl:param name="padVar" />
<xsl:param name="length" />
<xsl:choose>
<xsl:when test="string-length($padVar) < $length">
<xsl:call-template name="append-pad">
<xsl:with-param name="padChar" select="$padChar" />
<xsl:with-param name="padVar" select="concat($padVar,$padChar)" />
<xsl:with-param name="length" select="$length" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring($padVar,1,$length)" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
但是与空间的长度是动态的。这是我在javascript中尝试的,但是当试图调试xslt时,我收到一个错误,说'NAME不能以'开始。
function firstName(name) {
try {
var n = name.toString;
var target = name.length - 20;
var whiteString = "";
for (i = 0; i < target; i++) {
whiteString.concat(" ");
}
n = n + whiteString;
return n;
} catch(err) {
return " ";
}
}
如何在xslt中执行此逻辑?
<xsl:value-of select="concat(substring(' ', string-length() +1), $firstName)"/>
从您的JavaScript,我们可以假设字符串+填充的最大长度是20个字符?如果是,那么xslt'concat(substring('',string-length()+1),。)'应该做你想要的。 (其中''是20个空格) – dash
@dash不完全确定你在那里做什么,如果我用20替换'',我将在哪里指定''(空格)是什么被添加? –
这是评论的格式! 'substring('{this实际上是20个空格}',string-length()+ 1)'会产生一串长度为20的空白字符串。然后,您将'concat'放在原始字符串的前面,以提供左侧填充。 – dash