XPath:如何翻译多个字符串?

时间:2014-03-10 13:27:04

标签: xml xpath xpath-2.0

我正在尝试在XPath中翻译一些字符串,但我得到了一些奇怪的输出。

这就是功能:

translate(translate(translate(translate('1 day 23 hours 30 minutes 25 seconds','day','dag'),'hours','uur'),'minutes','minuut'),'seconds','seconden')

目前的输出是:

1 dag 23 uur 30 minrut 25 tcund 

但我需要的是:1 dag 23 uur 30 minuut 25 seconden

有没有一种特殊的方法可以同时翻译多个子串?

1 个答案:

答案 0 :(得分:2)

这不是translate()的工作方式。翻译时:

translate('minutes seconds','hours','uur')

预期结果是:

minrte ecund

因为您实际上是在告诉处理者在第二个参数中替换前三个字母的出现位置:

'h', 'o', 'u'

因为它们出现在字符串'minutes seconds'中,并带有相应的字符

'u', 'u', 'r'

分别删除字符'r''s',因为它们在第三个参数中没有相应的替换。

如果您想要替换完整的,并且正在使用XPath 2.0,那么您可以使用replace()函数。

replace(replace(replace(replace('1 day 23 hours 30 minutes 25 seconds','day','dag'),'hours','uur'),'minutes','minuut'),'seconds','seconden')