Xpath 将字符串乘以整数?
例如,在python中,我可以做到这一点Xpath 将字符串乘以整数?,xpath,xquery,Xpath,Xquery,例如,在python中,我可以做到这一点 "X" * 3 或者,更重要的是在这种情况下 "XO" * 3 分别得到XXX和xo 我正试图用xpath/xquery复制这一点。理想情况下,它应该是 "XO" * count(something) 我能得到的最接近的方法是,通过创建一个长度接近我估计的countsomething将是什么的字符串,然后用子字符串对其进行切片,从而伪造输出。所以如果我的计数返回2 将返回XX。 如果我的字符串是XO,它会变得稍微复杂一些,在这种情况下,我必须将其修
"X" * 3
或者,更重要的是在这种情况下
"XO" * 3
分别得到XXX和xo
我正试图用xpath/xquery复制这一点。理想情况下,它应该是
"XO" * count(something)
我能得到的最接近的方法是,通过创建一个长度接近我估计的countsomething将是什么的字符串,然后用子字符串对其进行切片,从而伪造输出。所以如果我的计数返回2
将返回XX。
如果我的字符串是XO,它会变得稍微复杂一些,在这种情况下,我必须将其修改为
substring("XOXOXO",1,count(//something) * 2)
得到XOXO
然而,除了感觉不舒服外,这些还需要估计计数并创建正确长度的字符串+一些安全裕度
在xpath或xquery中有更好的方法吗?您可以使用1到3XO'=>string join,当然,如果您愿意,您可以将其放入函数中,并使用字符串参数和所需的乘法数:
declare function local:multiply-string($input as xs:string, $factor as xs:integer) as xs:string
{
((1 to $factor) ! $input) => string-join()
};
local:multiply-string('XO', 3)
您可以使用1到3XO'=>string join,当然,如果您愿意,您可以将其放入函数中,并使用字符串参数和所需的乘法数:
declare function local:multiply-string($input as xs:string, $factor as xs:integer) as xs:string
{
((1 to $factor) ! $input) => string-join()
};
local:multiply-string('XO', 3)
还在玩你的小提琴;它返回正确的输出,但有趣的是,它也会引发词法分析失败警告。@Jack,是的,对此很抱歉,小提琴使用ACE编辑器组件,不幸的是,该组件的XQuery模式从未更新过,无法解析XQuery 3.1功能,如maps或=>。不幸的是,纠正这种模式对我来说有点太难了。因此,您将不得不接受一些XQuery 3.1语法被报告为错误。谢谢,Martin。仅供参考,我还使用BaseX尝试了两种选项-没有错误!还在玩你的小提琴;它返回正确的输出,但有趣的是,它也会引发词法分析失败警告。@Jack,是的,对此很抱歉,小提琴使用ACE编辑器组件,不幸的是,该组件的XQuery模式从未更新过,无法解析XQuery 3.1功能,如maps或=>。不幸的是,纠正这种模式对我来说有点太难了。因此,您将不得不接受一些XQuery 3.1语法被报告为错误。谢谢,Martin。仅供参考,我还使用BaseX尝试了两种选项-没有错误!