使用字符串连接的XQuery,一个参数是字符串,另一个参数是数字

使用字符串连接的XQuery,一个参数是字符串,另一个参数是数字,xquery,Xquery,我想列出每年的订单总数 <Samples> <Sample> <Year>2010</Year> <Order>20,000</Order> </Sample> <Sample> <Year>2011</Year> <Order>20,000</Order> <Order>35,000<

我想列出每年的订单总数

<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>
由于
元素的数量本身会告诉我订单的总数,因此我在BaseX中尝试了以下内容-

for $x in doc("Sample")/Samples/Sample
   return <li>{string-join ( ($x/Year, count($x/Order)) , " # ")}</li>
单据中的$x(“样本”)/Samples/Sample
return
  • {string join($x/年,count($x/订单)),“#”}

  • 但是我得到了一个错误,这很明显,因为我在
    string join
    函数中使用的是整数而不是字符串。或者有没有其他方法可以获得相同的输出?

    字符串联接
    需要字符串,而不是
    计数
    返回的数字。添加一个cast,它将运行

    for $x in /Samples/Sample
       return <li>{ string-join( ($x/Year, xs:string(count($x/Order))), " # ") }</li>
    
    用于$x in/Samples/Sample
    return
  • {string join($x/年,xs:string(count($x/顺序)),“#”)}
  • 我修复了另外两个错误:

    • 为什么要查询年度的属性
      Y
      ?没有
    • 您将要计算
      标记,而不是

    也许使用
    concat
    可以使代码更具可读性(只要您只使用两个参数)?

    非常感谢。我已经纠正了错误。再次非常感谢:)
    for $x in /Samples/Sample
       return <li>{ string-join( ($x/Year, xs:string(count($x/Order))), " # ") }</li>