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) &lt; $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个字符吗?如果是,那么xslt
concat(子字符串(“”,string-length()+1),)
应该执行您想要的操作。(其中“”是20个空格)@dash不太确定您在那里做什么,如果我将“”替换为20,我将在哪里指定要添加的内容“”(空格)?这是注释的格式
substring(“{这实际上是20个空格}”,string-length()+1)
将生成一个字符串,其长度为字符串的
20个空格。然后在原始字符串前面加上“
concat”
,以获得左边的填充。@dash确定,感谢您的澄清。我对这个非常陌生:)@dash,所以它会像我在上面发布的一样吗?在我的例子中,我没有使用常量