XQUERY 3.0 多级排序/排序

XQUERY 3.0 Multi-level SORT / ORDER BY

我在 XML 文件中有一个 XQUERY 3.0,其中包含 3 个采购订单记录和 5 个项目:

 for $PurchaseOrder in doc("C:\Users\thebluephantom\Desktop\order.xml")//PurchaseOrder
   order by xs:integer($PurchaseOrder/Item/Quantity) ascending
   return $PurchaseOrder/Items/Item/Quantity

这不是我想要的 return 结果。它具有典型的嵌套结构,例如

<PurchaseOrders>  
  <PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20">  
    <Address Type="Shipping">  
      <Name>Ellen Adams</Name>  
      ... 
    </Address>  
      <Address Type="Billing">  
        <Name>Tai Yee</Name>  
        <Street>8 Oak Avenue</Street>  
        ...
    </Address>  
    <DeliveryNotes>Please leave packages in shed by driveway.  </DeliveryNotes>  
    <Items>  
      <Item PartNumber="872-AA">  
      <ProductName>Lawnmower</ProductName>  
      <Quantity>100</Quantity>  
      <USPrice>148.95</USPrice>  
    <Comment>Confirm this is electric</Comment>  
  </Item>  
    <Item PartNumber="926-AA">  
      <ProductName>Baby Monitor</ProductName>  
      <Quantity>20</Quantity>  
      <USPrice>39.98</USPrice>  
      <ShipDate>1999-05-21</ShipDate>  
  </Item>  
</Items>  
 </PurchaseOrder>  
 <PurchaseOrder PurchaseOrderNumber="99505" OrderDate="1999-10-22">  
   ...

我得到了 3 个采购订单和 5 个订单项目的结果:

<Quantity>100</Quantity>
<Quantity>20</Quantity>
<Quantity>1</Quantity>
<Quantity>1000</Quantity>
<Quantity>1</Quantity>

查看了许多关于分组等的教程。我无法确定这是否真的可行。

Order By 中的 XPath 缺少 Items 轴,因此它没有选择任何内容,并且您正在按文档顺序获取结果。如果您更正 XPath,则会在 xs:integer() 调用中选择一系列值并引发错误。

你可以这样改写:

for $quantity in 
         doc("C:\Users\thebluephantom\Desktop\order.xml")/PurchaseOrders/PurchaseOrder/Items/Item/Quantity
order by xs:integer($quantity) ascending
return $quantity