是否可以在 xsl 1.0 中用 * 替换字符串
Is it possible to replace string with * in 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', '********')"/>
(确保第二个和第三个参数的字符数相同)
如果两个假设都不成立,那么事情会变得更加复杂。
旁注:如果这与安全相关,您应该知道了解模糊字符串的长度对攻击者可能很有价值。
我正在使用以下模板打印一些数据
<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', '********')"/>
(确保第二个和第三个参数的字符数相同)
如果两个假设都不成立,那么事情会变得更加复杂。
旁注:如果这与安全相关,您应该知道了解模糊字符串的长度对攻击者可能很有价值。