在xsl 1.0中,是否可以将字符串替换为*



我正在使用以下模板打印一些数据

<xsl:template name="AgeGroupTotalHiddenHeader">
<tr style='visibility:collapse'>
<xsl:for-each select="child::SubDetailBody/SubDetailHeader">
<xsl:if test="name(.) = 'SubDetailHeader' and @beanType='AGE_DATA'">
<xsl:for-each select="Label">
<td align="center" class="txtsmall3">
<xsl:value-of select="@textLabel" />
</td>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</tr>
</xsl:template>

我希望@textLabel的值被替换为*号,也就是说,如果字符串是"abcde",它应该被打印为*****("abcde"的长度=5,所以应该有5颗星(。这可能吗?有人能帮忙吗?

如果您知道输入字符串的最大可能长度,您可以使用:

<xsl:value-of select="substring('*********************', 1, string-length($input))"/>

如果您事先知道输入字符串可以包含的所有可能的字符,您可以执行以下操作:

<xsl:value-of select="translate($input, 'abcdefgh', '********')"/>

(请确保第2个和第3个参数中的字符数相同(。

如果这两个假设都不成立,那么情况就会变得更加复杂。


附带说明:如果这与安全性有关,您应该意识到,知道被遮挡字符串的长度对攻击者来说可能很有价值。

最新更新