我試圖使用將空格添加到字符串的模板。在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