对于一个项目,我坚持使用 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/