对于一个项目,我坚持使用 XSLT-1.0/XPATH-1.0,需要一种快速的方法来从属性值中去除小写前缀。

示例属性值是:

"cmdValue1", "gfValue2", "dTestCase3"

我需要的值(value)观是:
"Value1", "Value2", "TestCase3"

我想出了这个 XPath 表达式,但它对我的应用程序来说太慢了:
substring(@attr, 1 + string-length(substring-before(translate(@attr, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', '..........................'), '.')))

本质上,上面确实将所有大写字符替换为点,然后从第一个找到的点位置(第一个大写字符)开始从原始属性值创建一个子字符串。

有没有人知道在 XSLT-1.0/XPATH-1.0 中执行此操作的更短/更快的方法?

最佳答案

您不需要计算前缀的长度并手动提取子字符串。相反,只需直接询问后面的所有内容:

substring-after(@attr,
                substring-before(translate(@attr,
                                           'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                                           '..........................'),
                                 '.'))

这不是一个巨大的改进,但它可能会减少 7-8%(基于一些非常粗略和快速的测试)。

关于xslt - 从属性值中去除前缀,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21702879/

10-09 23:49