我想列出相应年份的订单总数。
<Samples>
<Sample>
<Year>2010</Year>
<Order>20,000</Order>
</Sample>
<Sample>
<Year>2011</Year>
<Order>20,000</Order>
<Order>35,000</Order>
</Sample>
<Sample>
<Year>2012</Year>
<Order>20,000</Order>
<Order>23,000</Order>
<Order>40,000</Order>
</Sample>
</Samples>
我期待输出为 -
Year Orders
2010 1
2011 2
2012 3
由于<Order>
元素的数量本身会告诉我订单的总数,我在BaseX中尝试了以下内容 -
for $x in doc("Sample")/Samples/Sample
return <li>{string-join ( ($x/Year, count($x/Order)) , " # ")}</li>
但我收到错误并且显而易见,因为我在string-join
函数中使用整数而不是字符串。或者还有其他方法可以获得相同的输出吗?
答案 0 :(得分:1)
string-join
期望字符串,而不是count
返回的数字。添加一个演员表,它将会运行。
for $x in /Samples/Sample
return <li>{ string-join( ($x/Year, xs:string(count($x/Order))), " # ") }</li>
我修复了两个错误:
Y
?没有。<Order>
代码,而不是<Orders>
。使用concat
可能会使代码更具可读性(只要你只使用两个参数)?