Javascript 获取xslt中的长度
我正在尝试使用一个模板,在字符串中添加空格Javascript 获取xslt中的长度,javascript,xslt,Javascript,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 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时,出现了一个错误,即“名称不能以“”开头”
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 " ";
}
}
函数名(name){
试一试{
var n=name.toString;
var target=name.length-20;
var whiteString=“”;
对于(i=0;i
如何在xslt中实现这种逻辑
<xsl:value-of select="concat(substring(' ', string-length() +1), $firstName)"/>
在选择中,您必须使用表达式。 要在参数中设置常量值,请执行以下操作
<xsl:with-param name="padChar"> </xsl:with-param>
<xsl:with-param name="length">15</xsl:with-param>
15
如果在JavaScript示例中,您总是希望将字符串最多填充20个字符,那么您只需使用:
<xsl:value-of select="concat(substring(' ', string-length($firstName) +1), $firstName)" />
这是怎么回事
首先使用表达式:substring(“”,字符串长度($firstName)+1)
这将获取由20个空格组成的字符串,并返回一个长度为20-length
的$firstName
的空格字符串,因为我们使用子字符串仅提取字符串的一部分
然后,我们使用
concat
函数将两者连接在一起。我们将空格的子字符串放在左键之前(尽管如果您想右键,我们可以将它们放在第二位)。从javascript中,我们可以假设字符串+填充的最大长度为20个字符吗?如果是,那么xsltconcat(子字符串(“”,string-length()+1),)
应该执行您想要的操作。(其中“”是20个空格)@dash不太确定您在那里做什么,如果我将“”替换为20,我将在哪里指定要添加的内容“”(空格)?这是注释的格式substring(“{这实际上是20个空格}”,string-length()+1)
将生成一个字符串,其长度为字符串的20个空格。然后在原始字符串前面加上“concat”
,以获得左边的填充。@dash确定,感谢您的澄清。我对这个非常陌生:)@dash,所以它会像我在上面发布的一样吗?在我的例子中,我没有使用常量