XQuery:如何在 for 循环中正确追加 ,
所以我有这样的 xml 数据:
<PhoneNumber>213-512-7457</PhoneNumber>
<PhoneNumber>213-512-7465</PhoneNumber>
通过这个 XQuery:
<PhoneNumberList>
{
for $phone in $c//PhoneNumber
let $phoneStr := ""
return concat($phoneStr, $phone)
}
</PhoneNumberList>
我得到:
<PhoneNumberList>213-512-7457213-512-7465</PhoneNumberList>
但我实际上想要:
<PhoneNumberList>213-512-7457, 213-512-7465</PhoneNumberList>
有人能解释一下如何做到这一点吗?
So I have xml data like this:
<PhoneNumber>213-512-7457</PhoneNumber>
<PhoneNumber>213-512-7465</PhoneNumber>
and with this XQuery:
<PhoneNumberList>
{
for $phone in $c//PhoneNumber
let $phoneStr := ""
return concat($phoneStr, $phone)
}
</PhoneNumberList>
I get:
<PhoneNumberList>213-512-7457213-512-7465</PhoneNumberList>
But I actually want:
<PhoneNumberList>213-512-7457, 213-512-7465</PhoneNumberList>
Could someone shed some light on how to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
XQuery 中的变量似乎有很多混乱。 let 表达式在每次求值时都会创建一个新变量,因此下面的“过程”方法将不起作用。
虽然字符串连接解决方案最适合您的情况,但“手动”编写此解决方案的正确方法是使用递归函数:
There seems to be a lot of confusion with variables in XQuery. A let expression creates a new variable each time it is evaluated, so the "procedural" approaches below will not work.
Whilst the string-join solution is the best in your case, the correct way to write this "manually" is with a recursive function:
好的,像这样的东西应该按原样返回第一个元素,其余元素前面加上“,”
Ok, something like this should return the first element as-is and the rest with prepended ", "
这又如何呢?
What about this?