【问题标题】:Is it possible to replace string with * in xsl 1.0是否可以在 xsl 1.0 中用 * 替换字符串
【发布时间】:2021-09-25 03:52:44
【问题描述】:

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

<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 颗星) .这可能吗 ?有人可以帮忙吗?

【问题讨论】:

  • 谢谢@michael.hor257k。我可以为您提供哪些额外的详细信息
  • 输入 XML。一个完整的、可执行的样式表。预期输出。您将使用哪个处理器。而且,同样重要的是,删除与问题无关的代码。

标签: xml xslt xslt-1.0


【解决方案1】:

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

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

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

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

(确保第二个和第三个参数的字符数相同)。

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


旁注:如果这与安全性有关,您应该知道知道隐藏字符串的长度可能对攻击者很有价值。

【讨论】:

  • 有效,是否可以用空格代替*,我尝试了第一种方法但它不起作用,有什么办法吗?
  • 也许您正在浏览器中查看结果 - 这会将空白字符的运行减少到一个空格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 2018-05-12
相关资源
最近更新 更多